[Git][wxwidgets/wxwidgets][master] 49 commits: wxQt: Fix window positioning in RTL layout.

0 views
Skip to first unread message

Vadim Zeitlin (@_VZ_)

unread,
Nov 8, 2025, 7:28:21 PMNov 8
to wx-commi...@googlegroups.com

Vadim Zeitlin pushed to branch master at wxWidgets / wxWidgets

Commits:

  • 230e2534
    by ali kettab at 2025-11-02T13:43:37+01:00
    wxQt: Fix window positioning in RTL layout.
    
    We need to position the windows manually, because QWidget::setLayoutDirection()
    only takes effect if the widget is managed by a QLayout, which we don't use in
    wxWidgets.
    
    We also need to reposition child windows if the parent client size is changed,
    as Qt does nothing in this case.
    
  • 1b50d4ed
    by ali kettab at 2025-11-02T13:43:37+01:00
    wxQt: Fix SetClientSize() not working correctly in RTL layout
    
  • ba5dd92e
    by ali kettab at 2025-11-02T13:43:37+01:00
    wxQt: Fix wxWindow::Refresh() not working correctly in RTL layout.
    
  • 18e89dcd
    by ali kettab at 2025-11-02T13:43:37+01:00
    wxQt: Fix window scrolling in RTL layout
    
  • a1d130c7
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix ClientToScreen() and ScreenToClient() to work correctly in RTL layout.
    
    In RTL layout, wxWidgets expects the logical point (0,0) to be in the top right
    corner of the window, while Qt expects it to always be in the top left corner.
    
  • fa58743c
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix popup menu position in RTL layout
    
  • 5d15d64b
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Override wxDC::{Get,Set}LayoutDirection()
    
  • e1830cb6
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Override wxDC::SetLayoutDirection() in wxMemoryDC
    
    For correct drawing in RTL layout, because the base class version doesn't
    (and shouldn't) mirror the DC by default.
    
  • 2411ae2c
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Apply custom mirroring to wxDC in RTL layout.
    
  • 937ea25b
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Simplify wxDC::DoDraw{Rotated}Text() implementations
    
    No real change, just a simplification to make them easier to fix in the RTL layout.
    
  • ba9be4aa
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix drawing multiline text with wxDC::DrawText()
    
  • 6e2fd6db
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix drawing (rotated) text in RTL layout
    
  • 4ec8dcef
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix drawing (rotated) text with GC in RTL layout
    
  • 5c36902d
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix wxDC::GetSize() for wxMemoryDC
    
  • 3b7de519
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix drawing wxGrid lines in RTL layout
    
  • 2bb1248d
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix drawing wxTreeCtrl icons in RTL layout
    
  • 68f53b28
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix wxOverlay in RTL layout
    
  • 6b9309c6
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxQt: Fix rendering some native control in RTL layout
    
  • 55f54331
    by ali kettab at 2025-11-02T13:44:56+01:00
    wxAUI: Don't mirror hint rectangle in RTL layout
    
     This is for wxQt.
    
  • 553aa06e
    by ali kettab at 2025-11-03T00:33:04+01:00
    Relax the clip box check in OneDevRegionRTL test case
    
    Due to rounding errors, this test would fail under wxMSW if the region started
    at x=2*n, and would fail under wxQt if it started at x=2*n+1. So relax the check
    by using 1 as a position tolerance.
    
  • f0309c95
    by Vadim Zeitlin at 2025-11-07T00:16:50+01:00
    Add wxGLContext::ClearCurrent()
    
    This function allows to reset the current OpenGL context.
    
    Closes #25951.
    
  • 15a85fb3
    by Vadim Zeitlin at 2025-11-07T00:16:50+01:00
    Use ClearCurrent() in wxGLContext dtor in Unix implementations
    
    No real changes, just reuse the just added function for clarity instead
    of duplicating its (trivial) code in the dtor.
    
  • 6199a768
    by Vadim Zeitlin at 2025-11-07T15:44:34+01:00
    Fix crash in wxAuiTabCtrl due to use of invalid m_hoverButton
    
    This pointer could become invalid if the page containing it was
    destroyed (typically, although not necessarily, as the result of
    clicking on this button itself) and using it when handling the next
    WXEVT_MOTION event resulted in a crash.
    
    Avoid the problem by removing this pointer and replacing its use with
    FindHoverButton() that finds the (only) button in hover state.
    
    Also add ResetHoverButton() helper which uses FindHoverButton() and
    resets the state of the button and updates the window if necessary.
    
    Closes #25959.
    
  • 7c0354f9
    by Vadim Zeitlin at 2025-11-07T16:59:16+01:00
    Remove potentially dangling m_pressedButton too
    
    Nothing really guaranteed that m_pressedButton was always valid so, even
    if, unlike with m_hoverButton removed in the previous commit, no crashes
    involving it were reported, remove it too and use FindPressedButton() to
    find the currently pressed button to ensure we never use a dangling
    pointer.
    
  • 26c24459
    by Vadim Zeitlin at 2025-11-07T17:03:31+01:00
    Remove just added ResetHoverButton()
    
    It's only really needed in a single place, so not worth having.
    
    No real changes.
    
  • 51790f73
    by Vadim Zeitlin at 2025-11-07T17:25:01+01:00
    Add helper functions for updating wxAuiTabContainerButton state
    
    No real changes, just add SetButtonState() and ClearButtonState()
    instead of manipulating bits directly in many different places.
    
  • 7caf1f4f
    by Vadim Zeitlin at 2025-11-07T17:29:35+01:00
    Fix appearance of pressed buttons being hovered on
    
    Still depress or highlight them by fixing the test for the pressed
    state: we need to check if wxAUI_BUTTON_STATE_PRESSED bit is set, not
    that only this bit is set.
    
  • b622025e
    by Vadim Zeitlin at 2025-11-07T17:36:31+01:00
    Reuse existing position variable in wxAuiTabCtrl::OnMotion()
    
    No real changes, just don't call wxMouseEvent::GetPosition() again.
    
  • 82dbd5e3
    by Vadim Zeitlin at 2025-11-07T17:40:40+01:00
    Fix mouse handling while moving over buttons in wxAuiTabCtrl
    
    There were several problems in wxAuiTabCtrl: a button could become
    highlighted when we were passing over it with the mouse button pressed
    outside of it (which is wrong, as releasing the mouse button doesn't
    activate the button in this case) and a button could also remain
    highlighted if we released the mouse button not over it, as we wrongly
    switched to tab dragging mode, which shouldn't be done while a button is
    pressed.
    
    Fix both of them by ensuring we never have a pressed button and
    m_isDragging == true at the same time.
    
  • 469ca1b9
    by Vadim Zeitlin at 2025-11-07T17:44:00+01:00
    Reset hover and pressed buttons on mouse capture loss
    
    Don't leave any buttons in an outdated state if mouse capture is broken.
    
  • bc41f910
    by Vadim Zeitlin at 2025-11-07T18:41:38+01:00
    Fix wxLogWarning() documentation
    
    Don't claim that they "don't interrupt the program work", whatever it
    means.
    
    Closes #25916.
    
  • 8f21c517
    by Vadim Zeitlin at 2025-11-07T18:59:52+01:00
    Remove probably unnecessary RTL workaround from wxAuiManager
    
    This RTL workaround is not needed for wxMSW, wxGTK and wxQt and wxOSX
    doesn't seem to support RTL anyhow, so it's highly likely that it's not
    really needed anywhere, hence just remove it.
    
  • bde6b7a8
    by Crementif at 2025-11-07T20:33:49+01:00
    Fix wxListCtrl::GetSubItemRect(n, 0) when columns are reordered
    
    Sum up all the preceding column widths to find the starting position of
    the first column, which may not be 0 if the columns have been reordered.
    
  • 4883c944
    by Crementif at 2025-11-07T21:03:32+01:00
    Draw wxListCtrl subitems in visual, not logical, order
    
    This may avoid issues due to overflowing into the next column.
    
  • d76f3c16
    by Crementif at 2025-11-07T21:05:36+01:00
    Erase the whole list item row before drawing sub-items
    
    Ensure hover colour doesn't remain anywhere, e.g. it doesn't show
    through check boxes or (transparent) icons.
    
  • 8a71ad7d
    by Maarten Bent at 2025-11-07T21:55:59+01:00
    Use Scintilla as win32 classname for wxStyledTextCtrl
    
    This way applications like screen readers know how to interface with it.
    
  • 37356101
    by Maarten Bent at 2025-11-07T21:56:02+01:00
    Forward all win32 messages to the Scintilla control
    
    And if they are not processed, continue with the normal message handler.
    
  • 4b2a57c0
    by Crementif at 2025-11-08T00:01:17+01:00
    Make wxListCtrl dark mode closer to native, white mode rendering
    
    Avoid problems due to overflowing into the next column by checking that
    there is enough space available before drawing.
    
    Adjust margins and padding to try to replicate what Windows uses
    natively.
    
  • 79aa42d8
    by Vadim Zeitlin at 2025-11-08T00:10:56+01:00
    Improve wxBookCtrl page change event documentation
    
    Explain that the CHANGING event handler doesn't have access to the new
    page and also don't say that it's unnecessary to handle both this event
    and CHANGED one as it's quite common to handle both of them.
    
  • 7caaa1ad
    by Maarten Bent at 2025-11-08T00:13:42+01:00
    Improve right-aligned text positioning in wxListCtrl dark mode
    
    Handle it correctly, i.e. symmetrically to the left-aligned text and not
    in the same way as it.
    
  • ff798357
    by Vadim Zeitlin at 2025-11-08T02:35:13+01:00
    Make HandleSubItemPrepaint() void
    
    The return value of this function was never used anyhow, so don't bother
    returning anything from it.
    
  • 26e2bd62
    by Vadim Zeitlin at 2025-11-08T02:35:40+01:00
    Skip drawing the rest of the item if there is not enough space
    
    Don't bother continuing with drawing the image if there is not enough
    space for the checkbox or drawing the text if there is not enough space
    for the image.
    
  • ff040c0f
    by Vadim Zeitlin at 2025-11-09T01:15:59+01:00
    Merge branch 'qt-rtl'
    
    RTL fixes for wxQt.
    
    See #25822.
    
  • bba463aa
    by Stefan Csomor at 2025-11-09T01:16:57+01:00
    Use native macOS API in wxBase in all GUI builds under Mac
    
    Use the same wxBase library, using native API, regardless of whether
    native API (Cocoa) or wxGTK is used by wxCore when building under
    macOS.
    
    Add new and more clear and simpler to use preprocessor constants for
    testing for various builds on Apple hardware.
    
    Also fix compilation with older macOS versions and gcc (not clang).
    
    Closes #25919.
    
  • fe6bb54d
    by Vadim Zeitlin at 2025-11-09T01:18:16+01:00
    Use current, not best, size for controls in wxGTK toolbars
    
    The changes of 8f9f1a42ec (Respect best control size when adding it to
    wxGTK wxToolBar, 2025-03-02) did in wxGTK what earlier b0ad9ccffd (Use
    control current, not best, size in wxMSW wxToolBar layout code,
    2019-03-31) undid in wxMSW, so tweak them to work as in wxMSW and use
    the current control size if it's specified instead of the best size to
    make sure the control doesn't take too much space in the toolbar.
    
    This makes appearance of the toolbar containing wxChoice in the toolbar
    sample much more reasonable.
    
    See #25949.
    
  • 614da9ed
    by Vadim Zeitlin at 2025-11-09T01:19:09+01:00
    Merge branch 'scintilla-screenreader' of github.com:MaartenBent/wxWidgets
    
    Improve wxStyledTextCtrl compatibility with screen readers.
    
    See #25956.
    
  • eb4bcf5e
    by Vadim Zeitlin at 2025-11-09T01:19:55+01:00
    Merge branch 'gl-release'
    
    Add wxGLContext::ClearCurrent().
    
    See #25958.
    
  • 67afc281
    by Vadim Zeitlin at 2025-11-09T01:22:11+01:00
    Merge branch 'aui-fix-dangling-hover'
    
    Fixes to mouse handling in wxAuiTabCtrl.
    
    See #25960.
    
  • 3f0f90aa
    by Vadim Zeitlin at 2025-11-09T01:23:08+01:00
    Merge branch 'msw-listctrl-fixes'
    
    Make wxListCtrl dark mode closer to native, white mode rendering.
    
    See #25961.
    
    Closes #25950.
    

62 changed files:

The diff was not included because it is too large.
Reply all
Reply to author
Forward
0 new messages