[Git][wxwidgets/wxwidgets][master] Implement wxNotebook in wxiOS

2 views
Skip to first unread message

Vadim Zeitlin (@_VZ_)

unread,
Oct 7, 2025, 9:07:33 AMOct 7
to wx-commi...@googlegroups.com

Vadim Zeitlin pushed to branch master at wxWidgets / wxWidgets

Commits:

  • 9469d6d4
    by Robert Roebling at 2025-10-07T14:58:29+02:00
    Implement wxNotebook in wxiOS
    
    Closes #25857.
    
    Closes #25867.
    
    Co-authored-by: Stefan Csomor <cso...@advancedconcepts.ch>
    

7 changed files:

Changes:

  • Makefile.in
    ... ... @@ -5613,6 +5613,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS = \
    5613 5613
     	monodll_iphone_listbox.o \
    
    5614 5614
     	monodll_iphone_msgdlg.o \
    
    5615 5615
     	monodll_iphone_nonownedwnd.o \
    
    5616
    +	monodll_iphone_notebook.o \
    
    5616 5617
     	monodll_iphone_scrolbar.o \
    
    5617 5618
     	monodll_iphone_slider.o \
    
    5618 5619
     	monodll_iphone_stattext.o \
    
    ... ... @@ -7393,6 +7394,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_1 = \
    7393 7394
     	monolib_iphone_listbox.o \
    
    7394 7395
     	monolib_iphone_msgdlg.o \
    
    7395 7396
     	monolib_iphone_nonownedwnd.o \
    
    7397
    +	monolib_iphone_notebook.o \
    
    7396 7398
     	monolib_iphone_scrolbar.o \
    
    7397 7399
     	monolib_iphone_slider.o \
    
    7398 7400
     	monolib_iphone_stattext.o \
    
    ... ... @@ -9319,6 +9321,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_2 = \
    9319 9321
     	coredll_iphone_listbox.o \
    
    9320 9322
     	coredll_iphone_msgdlg.o \
    
    9321 9323
     	coredll_iphone_nonownedwnd.o \
    
    9324
    +	coredll_iphone_notebook.o \
    
    9322 9325
     	coredll_iphone_scrolbar.o \
    
    9323 9326
     	coredll_iphone_slider.o \
    
    9324 9327
     	coredll_iphone_stattext.o \
    
    ... ... @@ -10827,6 +10830,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_3 = \
    10827 10830
     	corelib_iphone_listbox.o \
    
    10828 10831
     	corelib_iphone_msgdlg.o \
    
    10829 10832
     	corelib_iphone_nonownedwnd.o \
    
    10833
    +	corelib_iphone_notebook.o \
    
    10830 10834
     	corelib_iphone_scrolbar.o \
    
    10831 10835
     	corelib_iphone_slider.o \
    
    10832 10836
     	corelib_iphone_stattext.o \
    
    ... ... @@ -16147,6 +16151,9 @@ monodll_iphone_msgdlg.o: $(srcdir)/src/osx/iphone/msgdlg.mm $(MONODLL_ODEP)
    16147 16151
     monodll_iphone_nonownedwnd.o: $(srcdir)/src/osx/iphone/nonownedwnd.mm $(MONODLL_ODEP)
    
    16148 16152
     	$(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/nonownedwnd.mm
    
    16149 16153
     
    
    16154
    +monodll_iphone_notebook.o: $(srcdir)/src/osx/iphone/notebook.mm $(MONODLL_ODEP)
    
    16155
    +	$(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/notebook.mm
    
    16156
    +
    
    16150 16157
     monodll_iphone_scrolbar.o: $(srcdir)/src/osx/iphone/scrolbar.mm $(MONODLL_ODEP)
    
    16151 16158
     	$(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/scrolbar.mm
    
    16152 16159
     
    
    ... ... @@ -20923,6 +20930,9 @@ monolib_iphone_msgdlg.o: $(srcdir)/src/osx/iphone/msgdlg.mm $(MONOLIB_ODEP)
    20923 20930
     monolib_iphone_nonownedwnd.o: $(srcdir)/src/osx/iphone/nonownedwnd.mm $(MONOLIB_ODEP)
    
    20924 20931
     	$(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/nonownedwnd.mm
    
    20925 20932
     
    
    20933
    +monolib_iphone_notebook.o: $(srcdir)/src/osx/iphone/notebook.mm $(MONOLIB_ODEP)
    
    20934
    +	$(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/notebook.mm
    
    20935
    +
    
    20926 20936
     monolib_iphone_scrolbar.o: $(srcdir)/src/osx/iphone/scrolbar.mm $(MONOLIB_ODEP)
    
    20927 20937
     	$(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/scrolbar.mm
    
    20928 20938
     
    
    ... ... @@ -26368,6 +26378,9 @@ coredll_iphone_msgdlg.o: $(srcdir)/src/osx/iphone/msgdlg.mm $(COREDLL_ODEP)
    26368 26378
     coredll_iphone_nonownedwnd.o: $(srcdir)/src/osx/iphone/nonownedwnd.mm $(COREDLL_ODEP)
    
    26369 26379
     	$(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/nonownedwnd.mm
    
    26370 26380
     
    
    26381
    +coredll_iphone_notebook.o: $(srcdir)/src/osx/iphone/notebook.mm $(COREDLL_ODEP)
    
    26382
    +	$(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/notebook.mm
    
    26383
    +
    
    26371 26384
     coredll_iphone_scrolbar.o: $(srcdir)/src/osx/iphone/scrolbar.mm $(COREDLL_ODEP)
    
    26372 26385
     	$(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/scrolbar.mm
    
    26373 26386
     
    
    ... ... @@ -30115,6 +30128,9 @@ corelib_iphone_msgdlg.o: $(srcdir)/src/osx/iphone/msgdlg.mm $(CORELIB_ODEP)
    30115 30128
     corelib_iphone_nonownedwnd.o: $(srcdir)/src/osx/iphone/nonownedwnd.mm $(CORELIB_ODEP)
    
    30116 30129
     	$(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/nonownedwnd.mm
    
    30117 30130
     
    
    30131
    +corelib_iphone_notebook.o: $(srcdir)/src/osx/iphone/notebook.mm $(CORELIB_ODEP)
    
    30132
    +	$(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/notebook.mm
    
    30133
    +
    
    30118 30134
     corelib_iphone_scrolbar.o: $(srcdir)/src/osx/iphone/scrolbar.mm $(CORELIB_ODEP)
    
    30119 30135
     	$(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/scrolbar.mm
    
    30120 30136
     
    

  • build/bakefiles/files.bkl
    ... ... @@ -2384,6 +2384,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
    2384 2384
         src/osx/iphone/listbox.mm
    
    2385 2385
         src/osx/iphone/msgdlg.mm
    
    2386 2386
         src/osx/iphone/nonownedwnd.mm
    
    2387
    +    src/osx/iphone/notebook.mm
    
    2387 2388
         src/osx/iphone/scrolbar.mm
    
    2388 2389
         src/osx/iphone/slider.mm
    
    2389 2390
         src/osx/iphone/stattext.mm
    

  • build/cmake/files.cmake
    ... ... @@ -2238,6 +2238,7 @@ set(OSX_IPHONE_SRC
    2238 2238
         src/osx/iphone/listbox.mm
    
    2239 2239
         src/osx/iphone/msgdlg.mm
    
    2240 2240
         src/osx/iphone/nonownedwnd.mm
    
    2241
    +    src/osx/iphone/notebook.mm
    
    2241 2242
         src/osx/iphone/scrolbar.mm
    
    2242 2243
         src/osx/iphone/settings.mm
    
    2243 2244
         src/osx/iphone/slider.mm
    

  • build/files
    ... ... @@ -2241,6 +2241,7 @@ OSX_IPHONE_SRC =
    2241 2241
         src/osx/iphone/menuitem.mm
    
    2242 2242
         src/osx/iphone/msgdlg.mm
    
    2243 2243
         src/osx/iphone/nonownedwnd.mm
    
    2244
    +    src/osx/iphone/notebook.mm
    
    2244 2245
         src/osx/iphone/scrolbar.mm
    
    2245 2246
         src/osx/iphone/settings.mm
    
    2246 2247
         src/osx/iphone/slider.mm
    

  • include/wx/osx/iphone/chkconf.h
    ... ... @@ -141,7 +141,6 @@
    141 141
     #undef wxUSE_CHECKLISTBOX
    
    142 142
     #undef wxUSE_GRID
    
    143 143
     #undef wxUSE_LISTCTRL
    
    144
    -#undef wxUSE_NOTEBOOK
    
    145 144
     #undef wxUSE_SPINBTN
    
    146 145
     #undef wxUSE_SPINCTRL
    
    147 146
     #undef wxUSE_TREECTRL
    
    ... ... @@ -171,7 +170,6 @@
    171 170
     #define wxUSE_CHECKLISTBOX 0
    
    172 171
     #define wxUSE_GRID 0
    
    173 172
     #define wxUSE_LISTCTRL 0
    
    174
    -#define wxUSE_NOTEBOOK 0
    
    175 173
     #define wxUSE_SPINBTN 0
    
    176 174
     #define wxUSE_SPINCTRL 0
    
    177 175
     #define wxUSE_TREECTRL 0
    

  • src/osx/iphone/notebook.mm
    1
    +/////////////////////////////////////////////////////////////////////////////
    
    2
    +// Name:        src/osx/iphone/notebook.mm
    
    3
    +// Purpose:     wxNotebook
    
    4
    +// Author:      Robert Roebling
    
    5
    +// Modified by:
    
    6
    +// Created:     08/08/25
    
    7
    +// Copyright:   (c) Robert Roebling
    
    8
    +// Licence:     wxWindows licence
    
    9
    +/////////////////////////////////////////////////////////////////////////////
    
    10
    +
    
    11
    +#include "wx/wxprec.h"
    
    12
    +
    
    13
    +#if wxUSE_NOTEBOOK
    
    14
    +
    
    15
    +#include "wx/notebook.h"
    
    16
    +
    
    17
    +#ifndef WX_PRECOMP
    
    18
    +    #include "wx/app.h"
    
    19
    +    #include "wx/utils.h"
    
    20
    +    #include "wx/dc.h"
    
    21
    +    #include "wx/dcclient.h"
    
    22
    +    #include "wx/settings.h"
    
    23
    +#endif // WX_PRECOMP
    
    24
    +
    
    25
    +#include "wx/osx/private.h"
    
    26
    +#include "wx/private/bmpbndl.h"
    
    27
    +
    
    28
    +#include <stdio.h>
    
    29
    +
    
    30
    +
    
    31
    +@interface wxTabBarControllerDelegate : NSObject <UITabBarControllerDelegate>
    
    32
    +{
    
    33
    +}
    
    34
    +
    
    35
    +-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;
    
    36
    +-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
    
    37
    +
    
    38
    +@end
    
    39
    +
    
    40
    +@implementation wxTabBarControllerDelegate
    
    41
    +
    
    42
    +- (id) init
    
    43
    +{
    
    44
    +    self = [super init];
    
    45
    +    return self;
    
    46
    +}
    
    47
    +
    
    48
    +-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
    
    49
    +{
    
    50
    +    // TODO: Can we veto here?
    
    51
    +    return YES;
    
    52
    +}
    
    53
    +
    
    54
    +-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
    
    55
    +{
    
    56
    +    UITabBarController* controller = tabBarController;
    
    57
    +    UIViewController *subController = viewController;
    
    58
    +
    
    59
    +    wxWidgetIPhoneImpl* viewimpl = (wxWidgetIPhoneImpl* ) wxWidgetImpl::FindFromWXWidget( controller.view );
    
    60
    +    if ( viewimpl )
    
    61
    +    {
    
    62
    +        wxNotebook* wxpeer = (wxNotebook*) viewimpl->GetWXPeer();
    
    63
    +        wxpeer->OSXHandleClicked( 0 );  // parameter is a timestamp
    
    64
    +    }
    
    65
    +}
    
    66
    +
    
    67
    +@end
    
    68
    +
    
    69
    +
    
    70
    +
    
    71
    +class wxNotebookIPhoneImpl : public wxWidgetIPhoneImpl
    
    72
    +{
    
    73
    +public:
    
    74
    +    wxNotebookIPhoneImpl(wxWindowMac *wxpeer, UIView *v, UITabBarController *controller, UISegmentedControl* segmented )
    
    75
    +    : wxWidgetIPhoneImpl(wxpeer, v)
    
    76
    +    {
    
    77
    +        m_controller = controller;
    
    78
    +        m_segmented = segmented;
    
    79
    +    }
    
    80
    +
    
    81
    +    wxInt32  GetValue() const wxOVERRIDE
    
    82
    +    {
    
    83
    +        if (GetWXPeer()->HasFlag( wxBK_BOTTOM ))
    
    84
    +        {
    
    85
    +            return [m_controller selectedIndex ] + 1; // notebook_osx starts with 1
    
    86
    +        }
    
    87
    +        else
    
    88
    +        {
    
    89
    +            return [m_segmented selectedSegmentIndex ] + 1;
    
    90
    +        }
    
    91
    +    }
    
    92
    +
    
    93
    +    void SetValue( wxInt32 value ) wxOVERRIDE
    
    94
    +    {
    
    95
    +        if (GetWXPeer()->HasFlag( wxBK_BOTTOM ))
    
    96
    +        {
    
    97
    +            [m_controller setSelectedIndex: value-1 ];    // notebook_osx starts with 1
    
    98
    +        }
    
    99
    +        else
    
    100
    +        {
    
    101
    +            [m_segmented setSelectedSegmentIndex: value-1 ];
    
    102
    +        }
    
    103
    +    }
    
    104
    +
    
    105
    +    void SetupTabs( const wxNotebook& notebook) wxOVERRIDE
    
    106
    +    {
    
    107
    +        UIView* slf = (UIView*) m_osxView;
    
    108
    +
    
    109
    +
    
    110
    +        if (GetWXPeer()->HasFlag( wxBK_BOTTOM ))
    
    111
    +        {
    
    112
    +            NSMutableArray *viewControllers = [[NSMutableArray alloc] init ];
    
    113
    +
    
    114
    +            for (int i = 0; i < notebook.GetPageCount(); i++)
    
    115
    +            {
    
    116
    +                wxNotebookPage* page = notebook.GetPage(i);
    
    117
    +
    
    118
    +                UIViewController *subController =[[UIViewController alloc] init];
    
    119
    +
    
    120
    +                wxCFStringRef text( wxControl::RemoveMnemonics(notebook.GetPageText(i)) );
    
    121
    +                UIImage *nbImage = nil;
    
    122
    +                const wxBitmapBundle bitmap = notebook.GetPageBitmapBundle(i);
    
    123
    +                if ( bitmap.IsOk() ) {
    
    124
    +                    nbImage = wxOSXGetImageFromBundle(bitmap);
    
    125
    +                }
    
    126
    +                UITabBarItem *item = [[UITabBarItem alloc] initWithTitle: text.AsNSString() image:nbImage tag: i ];
    
    127
    +                [subController setTabBarItem: item];
    
    128
    +
    
    129
    +                UIView *subView = [[UIView alloc] init ];
    
    130
    +                [slf addSubview: subView];
    
    131
    +                [subController setView: subView];
    
    132
    +                [subView addSubview: page->GetHandle()];
    
    133
    +
    
    134
    +                [viewControllers addObject: subController];
    
    135
    +            }
    
    136
    +
    
    137
    +            [m_controller setViewControllers: viewControllers];
    
    138
    +        }
    
    139
    +        else
    
    140
    +        {
    
    141
    +            [m_segmented removeAllSegments];
    
    142
    +            for (int i = 0; i < notebook.GetPageCount(); i++)
    
    143
    +            {
    
    144
    +                wxNotebookPage* page = notebook.GetPage(i);
    
    145
    +
    
    146
    +                wxCFStringRef text( wxControl::RemoveMnemonics(notebook.GetPageText(i)) );
    
    147
    +                [m_segmented insertSegmentWithTitle:text.AsNSString() atIndex:i animated:NO];
    
    148
    +
    
    149
    +                if (notebook.GetPageCount() > 0)
    
    150
    +                  [m_segmented setSelectedSegmentIndex: 0 ];
    
    151
    +            }
    
    152
    +        }
    
    153
    +    }
    
    154
    +
    
    155
    +    // TODO: find out what the proper border is
    
    156
    +    const int borderAround = 4;
    
    157
    +
    
    158
    +    void Move(int x, int y, int width, int height) wxOVERRIDE
    
    159
    +    {
    
    160
    +        wxWidgetIPhoneImpl::Move(x, y, width, height);
    
    161
    +
    
    162
    +        if (!GetWXPeer()->HasFlag( wxBK_BOTTOM ))
    
    163
    +        {
    
    164
    +            CGRect frame = [m_segmented frame];
    
    165
    +            frame.origin = CGPointMake( borderAround, borderAround );
    
    166
    +            frame.size.width = width - (2*borderAround);
    
    167
    +
    
    168
    +            [m_segmented setFrame:frame];
    
    169
    +        }
    
    170
    +    }
    
    171
    +
    
    172
    +    void SegmentedSelected( int selected )
    
    173
    +    {
    
    174
    +        wxNotebook *notebook = (wxNotebook*) GetWXPeer();
    
    175
    +        wxNotebookPage *page = notebook->GetPage( selected );
    
    176
    +        page->Show( true );
    
    177
    +        for (int i = 0; i < notebook->GetPageCount(); i++)
    
    178
    +        {
    
    179
    +            if (i != selected)
    
    180
    +            {
    
    181
    +                wxNotebookPage* page = notebook->GetPage(i);
    
    182
    +                page->Hide();
    
    183
    +            }
    
    184
    +        }
    
    185
    +        wxNotebookEvent event(  wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, notebook->GetId(), selected );
    
    186
    +        notebook->HandleWindowEvent( event );
    
    187
    +    }
    
    188
    +
    
    189
    +protected:
    
    190
    +    UITabBarController  *m_controller;
    
    191
    +    UISegmentedControl  *m_segmented;
    
    192
    +
    
    193
    +};
    
    194
    +
    
    195
    +@interface wxUISegmentedControl : UISegmentedControl
    
    196
    +{
    
    197
    +}
    
    198
    +
    
    199
    +@property  wxNotebookIPhoneImpl *owner;
    
    200
    +
    
    201
    +@end
    
    202
    +
    
    203
    +@implementation wxUISegmentedControl
    
    204
    +
    
    205
    +@end
    
    206
    +
    
    207
    +
    
    208
    +
    
    209
    +@interface UIControl (wxUIControlActionSupport)
    
    210
    +
    
    211
    +- (void) segmentedValueChangedAction:(id)sender event:(UIEvent*)event;
    
    212
    +
    
    213
    +@end
    
    214
    +
    
    215
    +@implementation UIControl (wxUIControlActionSupport)
    
    216
    +
    
    217
    +- (void) segmentedValueChangedAction:(id)sender event:(UIEvent*)event
    
    218
    +{
    
    219
    +    wxUISegmentedControl *segmented = (wxUISegmentedControl*) self;
    
    220
    +    wxNotebookIPhoneImpl* impl = [segmented owner];
    
    221
    +    impl->SegmentedSelected( [segmented selectedSegmentIndex] );
    
    222
    +}
    
    223
    +
    
    224
    +@end
    
    225
    +
    
    226
    +
    
    227
    +wxWidgetImplType* wxWidgetImpl::CreateTabView( wxWindowMac* wxpeer,
    
    228
    +                                    wxWindowMac* WXUNUSED(parent),
    
    229
    +                                    wxWindowID WXUNUSED(id),
    
    230
    +                                    const wxPoint& pos,
    
    231
    +                                    const wxSize& size,
    
    232
    +                                    long style,
    
    233
    +                                    long WXUNUSED(extraStyle))
    
    234
    +{
    
    235
    +    UITabBarController *controller = nullptr;
    
    236
    +    wxUISegmentedControl *segmented = nullptr;
    
    237
    +    UIView *v = nullptr;
    
    238
    +
    
    239
    +    if (style & wxBK_BOTTOM)
    
    240
    +    {
    
    241
    +        controller = [[UITabBarController alloc] init];
    
    242
    +
    
    243
    +        wxTabBarControllerDelegate *delegate = [[wxTabBarControllerDelegate alloc] init];
    
    244
    +        [controller setDelegate: delegate];
    
    245
    +
    
    246
    +        v = controller.view;
    
    247
    +    }
    
    248
    +    else
    
    249
    +    {
    
    250
    +        CGRect r = CGRectMake( pos.x, pos.y, size.x, size.y) ;
    
    251
    +        v = [[UIView alloc] initWithFrame:r];
    
    252
    +
    
    253
    +        segmented = [[wxUISegmentedControl alloc] initWithFrame:r];
    
    254
    +        [segmented sizeToFit];
    
    255
    +
    
    256
    +        [segmented addTarget:segmented action:@selector(segmentedValueChangedAction:event:) forControlEvents:UIControlEventValueChanged];
    
    257
    +
    
    258
    +        [v addSubview:segmented];
    
    259
    +    }
    
    260
    +
    
    261
    +    /*
    
    262
    +    if (style & wxALIGN_CENTER)
    
    263
    +        [v setTextAlignment: NSTextAlignmentCenter];
    
    264
    +    else if (style & wxALIGN_RIGHT)
    
    265
    +        [v setTextAlignment: NSTextAlignmentRight];
    
    266
    +    */
    
    267
    +
    
    268
    +    wxNotebookIPhoneImpl* impl = new wxNotebookIPhoneImpl( wxpeer, v, controller, segmented );
    
    269
    +
    
    270
    +    if (segmented != nullptr)
    
    271
    +        [segmented setOwner: impl];
    
    272
    +
    
    273
    +    return impl;
    
    274
    +}
    
    275
    +
    
    276
    +#endif //if wxUSE_NOTEBOOK

  • src/osx/notebook_osx.cpp
    ... ... @@ -271,7 +271,18 @@ wxRect wxNotebook::GetPageRect() const
    271 271
     {
    
    272 272
         wxSize size = GetClientSize() ;
    
    273 273
     
    
    274
    +#ifdef __WXOSX_IPHONE__
    
    275
    +
    
    276
    +    // TODO: find out what the proper border is
    
    277
    +    const int borderAround = 4;
    
    278
    +
    
    279
    +    if (HasFlag(wxBK_BOTTOM))
    
    280
    +        return wxRect( 0, 0, size.x , size.y );
    
    281
    +    else
    
    282
    +        return wxRect( 0, 35+(2*borderAround), size.x , size.y-35-(2*borderAround) );
    
    283
    +#else
    
    274 284
         return wxRect( 0 , 0 , size.x , size.y ) ;
    
    285
    +#endif
    
    275 286
     }
    
    276 287
     
    
    277 288
     // ----------------------------------------------------------------------------
    


View it on GitLab.
You're receiving this email because of your account on gitlab.com. Manage all notifications · Help Notification message regarding https://gitlab.com/wxwidgets/wxwidgets/-/commit/9469d6d4c8eac45f1634411048e4ebb541132ccb at 1759842443

Reply all
Reply to author
Forward
0 new messages