[Git][wxwidgets/wxwidgets][3.2] 7 commits: Fix recently broken wxHTML build with libmspack

1 view
Skip to first unread message

Vadim Zeitlin (@_VZ_)

unread,
Dec 7, 2025, 5:48:40 PM (9 days ago) Dec 7
to wx-commi...@googlegroups.com

Vadim Zeitlin pushed to branch 3.2 at wxWidgets / wxWidgets

Commits:

  • 4ec643da
    by Vadim Zeitlin at 2025-12-07T20:54:06+01:00
    Fix recently broken wxHTML build with libmspack
    
    Revert part of 2db5b45971 (Backport CMake changes, 2025-11-29) which
    broke the build in this case.
    
    Closes #26019.
    
  • 22174939
    by Vadim Zeitlin at 2025-12-07T23:26:07+01:00
    Fix recent breakage to EGL-based wxGLCanvas
    
    EGL support got completely broken in a06400f9ae (Support EGL 1.4 instead
    of previously required 1.5, 2025-11-23) which didn't backport the
    changes from master correctly as the type of m_config has been changed
    from "EGLConfig*" to just "EGLConfig" there, but the corresponding
    dereference wasn't added when backporting (and the resulting code still
    compiled because EGL is so wonderfully type unsafe).
    
    Fix this by passing correct config argument to the surface creation
    functions.
    
    Closes #26020.
    
  • d81b22eb
    by Vadim Zeitlin at 2025-12-07T23:29:24+01:00
    Update full version to 3.2.9.1
    
    The final 3.2.9 release will have to use different version number from
    the first attempt due to the critical bug fix in the parent commit (and
    some other fixes that will be part of it too).
    
  • d99383b6
    by Vadim Zeitlin at 2025-12-07T23:33:22+01:00
    Relax configure check for EGL version to accept 1.4
    
    This should have been part of a06400f9ae (Support EGL 1.4 instead of
    previously required 1.5, 2025-11-23).
    
    See #22325, #25986.
    
    (cherry picked from commit 3357d3f3255b8da17d18bbe31235b5ea1dfa9a48)
    
  • b7478d97
    by Vadim Zeitlin at 2025-12-07T23:35:42+01:00
    Don't refresh empty rectangle in generic wxHeaderCtrl
    
    This is useless and just provides pixman warnings with wxGTK.
    
    (cherry picked from commit 9c1117eb81a66870eb73918724b2fab9eff7b678)
    
  • 640bc610
    by Vadim Zeitlin at 2025-12-07T23:35:59+01:00
    Get rid of unused variable in wxHeaderCtrl::OnPaint()
    
    There is no need to have "count" when it's exactly the same as
    "m_numColumns".
    
    (cherry picked from commit 7e7604eb198e7f0716ff8d1c83b119743e8354aa)
    
  • ff59392b
    by Vadim Zeitlin at 2025-12-07T23:36:44+01:00
    Optimize generic wxHeaderCtrl drawing and work around wxOSX bug
    
    Don't draw all the columns, there is no need to do it for those scrolled
    out of view.
    
    As a side effect, don't rely on wxDC::SetDeviceOrigin() for the
    coordinates translation but do it ourselves in the drawing code: this is
    pretty trivial in this case and avoids a bug in wxOSX which doesn't seem
    to honour device origin in its wxRendererNative implementation, somehow.
    
    See #26014, #26016.
    
    (cherry picked from commit 411430b835274bd234947adae467f2126210d6dd)
    

7 changed files:

Changes:

  • build/cmake/lib/html/CMakeLists.txt
    ... ... @@ -9,7 +9,7 @@
    9 9
     
    
    10 10
     wx_append_sources(HTML_FILES HTML_CMN)
    
    11 11
     
    
    12
    -if(WXMSW)
    
    12
    +if(WXMSW OR wxUSE_LIBMSPACK)
    
    13 13
         wx_append_sources(HTML_FILES HTML_MSW)
    
    14 14
     endif()
    
    15 15
     
    

  • configure
    ... ... @@ -33182,12 +33182,12 @@ if test -n "$PKG_CONFIG"; then
    33182 33182
             pkg_cv_EGL_CFLAGS="$EGL_CFLAGS"
    
    33183 33183
         else
    
    33184 33184
             if test -n "$PKG_CONFIG" && \
    
    33185
    -    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.5\""; } >&5
    
    33186
    -  ($PKG_CONFIG --exists --print-errors "egl >= 1.5") 2>&5
    
    33185
    +    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.4\""; } >&5
    
    33186
    +  ($PKG_CONFIG --exists --print-errors "egl >= 1.4") 2>&5
    
    33187 33187
       ac_status=$?
    
    33188 33188
       $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
    
    33189 33189
       test $ac_status = 0; }; then
    
    33190
    -  pkg_cv_EGL_CFLAGS=`$PKG_CONFIG --cflags "egl >= 1.5" 2>/dev/null`
    
    33190
    +  pkg_cv_EGL_CFLAGS=`$PKG_CONFIG --cflags "egl >= 1.4" 2>/dev/null`
    
    33191 33191
     else
    
    33192 33192
       pkg_failed=yes
    
    33193 33193
     fi
    
    ... ... @@ -33200,12 +33200,12 @@ if test -n "$PKG_CONFIG"; then
    33200 33200
             pkg_cv_EGL_LIBS="$EGL_LIBS"
    
    33201 33201
         else
    
    33202 33202
             if test -n "$PKG_CONFIG" && \
    
    33203
    -    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.5\""; } >&5
    
    33204
    -  ($PKG_CONFIG --exists --print-errors "egl >= 1.5") 2>&5
    
    33203
    +    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"egl >= 1.4\""; } >&5
    
    33204
    +  ($PKG_CONFIG --exists --print-errors "egl >= 1.4") 2>&5
    
    33205 33205
       ac_status=$?
    
    33206 33206
       $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
    
    33207 33207
       test $ac_status = 0; }; then
    
    33208
    -  pkg_cv_EGL_LIBS=`$PKG_CONFIG --libs "egl >= 1.5" 2>/dev/null`
    
    33208
    +  pkg_cv_EGL_LIBS=`$PKG_CONFIG --libs "egl >= 1.4" 2>/dev/null`
    
    33209 33209
     else
    
    33210 33210
       pkg_failed=yes
    
    33211 33211
     fi
    
    ... ... @@ -33224,22 +33224,22 @@ else
    33224 33224
             _pkg_short_errors_supported=no
    
    33225 33225
     fi
    
    33226 33226
             if test $_pkg_short_errors_supported = yes; then
    
    33227
    -	        EGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "egl >= 1.5"`
    
    33227
    +	        EGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "egl >= 1.4"`
    
    33228 33228
             else
    
    33229
    -	        EGL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "egl >= 1.5"`
    
    33229
    +	        EGL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "egl >= 1.4"`
    
    33230 33230
             fi
    
    33231 33231
     	# Put the nasty error message in config.log where it belongs
    
    33232 33232
     	echo "$EGL_PKG_ERRORS" >&5
    
    33233 33233
     
    
    33234 33234
     
    
    33235
    -                                        { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.5+ not available. Will use GLX." >&5
    
    33236
    -$as_echo "$as_me: EGL 1.5+ not available. Will use GLX." >&6;}
    
    33235
    +                                        { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.4+ not available. Will use GLX." >&5
    
    33236
    +$as_echo "$as_me: EGL 1.4+ not available. Will use GLX." >&6;}
    
    33237 33237
     
    
    33238 33238
     
    
    33239 33239
     elif test $pkg_failed = untried; then
    
    33240 33240
     
    
    33241
    -                                        { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.5+ not available. Will use GLX." >&5
    
    33242
    -$as_echo "$as_me: EGL 1.5+ not available. Will use GLX." >&6;}
    
    33241
    +                                        { $as_echo "$as_me:${as_lineno-$LINENO}: EGL 1.4+ not available. Will use GLX." >&5
    
    33242
    +$as_echo "$as_me: EGL 1.4+ not available. Will use GLX." >&6;}
    
    33243 33243
     
    
    33244 33244
     
    
    33245 33245
     else
    

  • configure.in
    ... ... @@ -3919,7 +3919,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
    3919 3919
     
    
    3920 3920
                             if test "$WXGTK3" = 1; then
    
    3921 3921
                                 if test "$wxUSE_GLCANVAS_EGL" != "no"; then
    
    3922
    -                                PKG_CHECK_MODULES(EGL, [egl >= 1.5],
    
    3922
    +                                PKG_CHECK_MODULES(EGL, [egl >= 1.4],
    
    3923 3923
                                         [
    
    3924 3924
                                             OPENGL_LIBS="$OPENGL_LIBS $EGL_LIBS"
    
    3925 3925
                                             AC_DEFINE(wxUSE_GLCANVAS_EGL)
    
    ... ... @@ -3934,7 +3934,7 @@ if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
    3934 3934
                                             )
    
    3935 3935
                                         ],
    
    3936 3936
                                         [
    
    3937
    -                                        AC_MSG_NOTICE([EGL 1.5+ not available. Will use GLX.])
    
    3937
    +                                        AC_MSG_NOTICE([EGL 1.4+ not available. Will use GLX.])
    
    3938 3938
                                         ]
    
    3939 3939
                                     )
    
    3940 3940
                                     if test "$have_wayland" != 1; then
    

  • docs/changes.txt
    ... ... @@ -302,6 +302,7 @@ wxOSX:
    302 302
     - Fix regression with configure build under macOS < 12 (#25675).
    
    303 303
     - Fix build under macOS 26 Tahoe (#25798).
    
    304 304
     - Fix build problem with memset_s() with PCH enabled (#24687).
    
    305
    +- Fix invisible labels in wxGrid with native header control (#26014).
    
    305 306
     - Fix nested markup attributes handling (Václav Slavík, #25864).
    
    306 307
     - Fix possible use of already destroyed wxTimers (Federico Perini, #25871).
    
    307 308
     - Fix handling of multiple filters in wxFileDialog (#25918).
    

  • include/wx/version.h
    ... ... @@ -28,7 +28,7 @@
    28 28
     #define wxMAJOR_VERSION      3
    
    29 29
     #define wxMINOR_VERSION      2
    
    30 30
     #define wxRELEASE_NUMBER     9
    
    31
    -#define wxSUBRELEASE_NUMBER  0
    
    31
    +#define wxSUBRELEASE_NUMBER  1
    
    32 32
     #define wxVERSION_STRING   wxT("wxWidgets 3.2.9")
    
    33 33
     
    
    34 34
     /*  nothing to update below this line when updating the version */
    

  • src/generic/headerctrlg.cpp
    ... ... @@ -247,6 +247,8 @@ void wxHeaderCtrl::RefreshColsAfter(unsigned int idx)
    247 247
     {
    
    248 248
         wxRect rect = GetClientRect();
    
    249 249
         const int ofs = GetColStart(idx);
    
    250
    +    if ( ofs >= rect.width )
    
    251
    +        return;
    
    250 252
         rect.x += ofs;
    
    251 253
         rect.width -= ofs;
    
    252 254
     
    
    ... ... @@ -512,19 +514,22 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
    512 514
         wxAutoBufferedPaintDC dc(this);
    
    513 515
         dc.Clear();
    
    514 516
     
    
    515
    -    // account for the horizontal scrollbar offset in the parent window
    
    516
    -    dc.SetDeviceOrigin(m_scrollOffset, 0);
    
    517
    -
    
    518
    -    const unsigned int count = m_numColumns;
    
    519
    -    int xpos = 0;
    
    520
    -    for ( unsigned int i = 0; i < count; i++ )
    
    517
    +    int xpos = m_scrollOffset;
    
    518
    +    for ( unsigned int i = 0; i < m_numColumns; i++ )
    
    521 519
         {
    
    522 520
             const unsigned idx = m_colIndices[i];
    
    523 521
             const wxHeaderColumn& col = GetColumn(idx);
    
    524 522
             if ( col.IsHidden() )
    
    525 523
                 continue;
    
    526 524
     
    
    527
    -        int colWidth = col.GetWidth();
    
    525
    +        const int colWidth = col.GetWidth();
    
    526
    +        if ( xpos + colWidth < 0 )
    
    527
    +        {
    
    528
    +            // This column is not shown on screen because it is to the left of
    
    529
    +            // the shown area, don't bother drawing it.
    
    530
    +            xpos += colWidth;
    
    531
    +            continue;
    
    532
    +        }
    
    528 533
     
    
    529 534
             wxHeaderSortIconType sortArrow;
    
    530 535
             if ( col.IsSortKey() )
    
    ... ... @@ -557,7 +562,7 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
    557 562
             params.m_labelAlignment = col.GetAlignment();
    
    558 563
     
    
    559 564
     #ifdef __WXGTK__
    
    560
    -        if (i == count-1 && xpos + colWidth >= w)
    
    565
    +        if (i == m_numColumns - 1 && xpos + colWidth >= w)
    
    561 566
             {
    
    562 567
                 state |= wxCONTROL_DIRTY;
    
    563 568
             }
    
    ... ... @@ -574,6 +579,12 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
    574 579
                                     );
    
    575 580
     
    
    576 581
             xpos += colWidth;
    
    582
    +        if ( xpos > w )
    
    583
    +        {
    
    584
    +            // Next column and all the others are beyond the right border of
    
    585
    +            // the window, no need to continue.
    
    586
    +            break;
    
    587
    +        }
    
    577 588
         }
    
    578 589
         if (xpos < w)
    
    579 590
         {
    

  • src/unix/glegl.cpp
    ... ... @@ -584,7 +584,7 @@ EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const
    584 584
             // it isn't.
    
    585 585
             if ( s_eglCreatePlatformWindowSurface )
    
    586 586
             {
    
    587
    -            return s_eglCreatePlatformWindowSurface(m_display, m_config,
    
    587
    +            return s_eglCreatePlatformWindowSurface(m_display, *m_config,
    
    588 588
                                                         window,
    
    589 589
                                                         NULL);
    
    590 590
             }
    
    ... ... @@ -606,13 +606,13 @@ EGLSurface wxGLCanvasEGL::CallCreatePlatformWindowSurface(void *window) const
    606 606
     
    
    607 607
         if ( s_eglCreatePlatformWindowSurfaceEXT )
    
    608 608
         {
    
    609
    -        return s_eglCreatePlatformWindowSurfaceEXT(m_display, m_config,
    
    609
    +        return s_eglCreatePlatformWindowSurfaceEXT(m_display, *m_config,
    
    610 610
                                                        window,
    
    611 611
                                                        NULL);
    
    612 612
         }
    
    613 613
         else
    
    614 614
         {
    
    615
    -        return eglCreateWindowSurface(m_display, m_config,
    
    615
    +        return eglCreateWindowSurface(m_display, *m_config,
    
    616 616
                                           reinterpret_cast<EGLNativeWindowType>(window),
    
    617 617
                                           NULL);
    
    618 618
         }
    

Reply all
Reply to author
Forward
0 new messages