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.
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.
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).
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)
Don't refresh empty rectangle in generic wxHeaderCtrl This is useless and just provides pixman warnings with wxGTK. (cherry picked from commit 9c1117eb81a66870eb73918724b2fab9eff7b678)
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)
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)
| ... | ... | @@ -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 |
| ... | ... | @@ -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
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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).
|
| ... | ... | @@ -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 */
|
| ... | ... | @@ -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 | {
|
| ... | ... | @@ -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 | }
|
—
View it on GitLab.
You're receiving this email because of your account on gitlab.com. Manage all notifications · Help