[wxWidgets/wxWidgets] d1e222: Enlist `wx/string.h` header in `wx/colour.h`

0 views
Skip to first unread message

VZ

unread,
May 23, 2026, 10:56:46 AMMay 23
to wx-co...@googlegroups.com
Branch: refs/heads/master
Home: https://github.com/wxWidgets/wxWidgets
Commit: d1e22202ff355ac414946ea260df4ebe2d1bd5de
https://github.com/wxWidgets/wxWidgets/commit/d1e22202ff355ac414946ea260df4ebe2d1bd5de
Author: Tanzinul Islam <tanzinu...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M include/wx/colour.h

Log Message:
-----------
Enlist `wx/string.h` header in `wx/colour.h`

The full `wxString` class definition is needed, not just the forward
declaration. Otherwise the `const char*`- and `const wchar_t*`-based
`wxColour` constructors attempt to call the `Set()` overload that takes
a `unsigned long`, causing the following error:

```
$WXWIN/build-debug/bk-deps g++ -c -o corelib_msw_colour.o -I$WXWIN/build-debug/lib/wx/include/msw-unicode-static-3.3 -I../include -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -DWXBUILDING -DwxUSE_BASE=0 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -g -O0 ../src/msw/colour.cpp
In file included from ../src/msw/colour.cpp:14:
../include/wx/msw/colour.h: In constructor 'wxColour::wxColour(const char*)':
../include/wx/colour.h:26:52: error: invalid conversion from 'const char*' to 'long unsigned int' [-fpermissive]
26 | wxColour(const char *colourName) { Init(); Set(colourName); }
| ^~~~~~~~~~
| |
| const char*
../include/wx/colour.h:39:5: note: in expansion of macro 'wxWXCOLOUR_CTOR_FROM_CHAR'
39 | wxWXCOLOUR_CTOR_FROM_CHAR \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
../include/wx/msw/colour.h:24:5: note: in expansion of macro 'DEFINE_STD_WXCOLOUR_CONSTRUCTORS'
24 | DEFINE_STD_WXCOLOUR_CONSTRUCTORS
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/wx/colour.h:100:28: note: initializing argument 1 of 'void wxColourBase::Set(long unsigned int)'
100 | void Set(unsigned long colRGB)
| ~~~~~~~~~~~~~~^~~~~~
../include/wx/msw/colour.h: In constructor 'wxColour::wxColour(const wchar_t*)':
../include/wx/colour.h:40:55: error: invalid conversion from 'const wchar_t*' to 'long unsigned int' [-fpermissive]
40 | wxColour(const wchar_t *colourName) { Init(); Set(colourName); }
| ^~~~~~~~~~
| |
| const wchar_t*
../include/wx/msw/colour.h:24:5: note: in expansion of macro 'DEFINE_STD_WXCOLOUR_CONSTRUCTORS'
24 | DEFINE_STD_WXCOLOUR_CONSTRUCTORS
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/wx/colour.h:100:28: note: initializing argument 1 of 'void wxColourBase::Set(long unsigned int)'
100 | void Set(unsigned long colRGB)
| ~~~~~~~~~~~~~~^~~~~~
make: *** [Makefile:30649: corelib_msw_colour.o] Error 1
```


Commit: c5f9c60a19314dca082a837d148dfe9fa58fe34e
https://github.com/wxWidgets/wxWidgets/commit/c5f9c60a19314dca082a837d148dfe9fa58fe34e
Author: Tanzinul Islam <tanzinu...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/msw/window.cpp

Log Message:
-----------
Enlist `wx/control.h` header in `src/msw/window.cpp`

The use of `wxDynamicCast` with `wxControl` needs its full definition.
Without this patch we get the following error:

```
$WXWIN/build-debug/bk-deps g++ -c -o corelib_msw_window.o -I$WXWIN/build-debug/lib/wx/include/msw-unicode-static-3.3 -I../include -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -DWXBUILDING -DwxUSE_BASE=0 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -g -O0 ../src/msw/window.cpp
In file included from ../include/wx/event.h:15,
from ../include/wx/window.h:18,
from ../src/msw/window.cpp:23:
../src/msw/window.cpp: In member function 'wxWindow* wxWindow::FindItemByHWND(WXHWND, bool) const':
../include/wx/object.h:121:21: error: incomplete type 'wxControl' used in nested name specifier
121 | &className::ms_classInfo)))
| ^~~~~~~~~~~~
../src/msw/window.cpp:353:20: note: in expansion of macro 'wxDynamicCast'
353 | || wxDynamicCast(parent, wxControl)
| ^~~~~~~~~~~~~
../src/msw/window.cpp: In static member function 'static wxButton* wxWindow::MSWGetDefaultButtonFor(wxWindow*)':
../src/msw/window.cpp:2892:57: warning: unused parameter 'win' [-Wunused-parameter]
2892 | wxButton* wxWindowMSW::MSWGetDefaultButtonFor(wxWindow* win)
| ~~~~~~~~~~^~~
../src/msw/window.cpp: In member function 'virtual bool wxWindow::MSWOnDrawItem(int, void**)':
../src/msw/window.cpp:4793:20: error: invalid use of incomplete type 'class wxControl'
4793 | return item->MSWOnDraw(itemStruct);
| ^~
../include/wx/window.h:57:28: note: forward declaration of 'class wxControl'
57 | class WXDLLIMPEXP_FWD_CORE wxControl;
| ^~~~~~~~~
../src/msw/window.cpp:4737:55: warning: unused parameter 'id' [-Wunused-parameter]
4737 | wxWindowMSW::MSWOnDrawItem(int WXUNUSED_UNLESS_ODRAWN(id),
| ^
../src/msw/window.cpp:4731:43: note: in definition of macro 'WXUNUSED_UNLESS_ODRAWN'
4731 | #define WXUNUSED_UNLESS_ODRAWN(param) param
| ^~~~~
../src/msw/window.cpp: In member function 'bool wxWindow::HandleCtlColor(HBRUSH__**, WXHDC, WXHWND)':
../include/wx/object.h:121:21: error: incomplete type 'wxControl' used in nested name specifier
121 | &className::ms_classInfo)))
| ^~~~~~~~~~~~
../src/msw/window.cpp:5126:23: note: in expansion of macro 'wxDynamicCast'
5126 | wxControl *item = wxDynamicCast(FindItemByHWND(hWnd, true), wxControl);
| ^~~~~~~~~~~~~
../src/msw/window.cpp:5129:22: error: invalid use of incomplete type 'class wxControl'
5129 | *brush = item->MSWControlColor(hDC, hWnd);
| ^~
../include/wx/window.h:57:28: note: forward declaration of 'class wxControl'
57 | class WXDLLIMPEXP_FWD_CORE wxControl;
| ^~~~~~~~~
../src/msw/window.cpp: In member function 'bool wxWindow::HandleMouseWheel(wxMouseWheelAxis, WXWPARAM, WXLPARAM)':
../src/msw/window.cpp:6091:48: warning: unused parameter 'axis' [-Wunused-parameter]
6091 | wxWindowMSW::HandleMouseWheel(wxMouseWheelAxis axis,
| ~~~~~~~~~~~~~~~~~^~~~
make: *** [Makefile:30751: corelib_msw_window.o] Error 1
```


Commit: 9d49e36e45fa7887cda10f2eba5f031a4f30ba40
https://github.com/wxWidgets/wxWidgets/commit/9d49e36e45fa7887cda10f2eba5f031a4f30ba40
Author: Tanzinul Islam <tanzinu...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/generic/msgdlgg.cpp

Log Message:
-----------
Add `wxUSE_STATTEXT` and `wxUSE_BUTTON` guards to `src/generic/msgdlgg.cpp`

Without this patch these compilation errors were encountered:

```
$WXWIN/build-debug/bk-deps g++ -c -o corelib_msgdlgg.o -I$WXWIN/build-debug/lib/wx/include/msw-unicode-static-3.3 -I../include -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -DWXBUILDING -DwxUSE_BASE=0 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -g -O0 ../src/generic/msgdlgg.cpp
../src/generic/msgdlgg.cpp:46:35: error: invalid use of incomplete type 'class wxTextSizerWrapper'
46 | class wxTitleTextWrapper : public wxTextSizerWrapper
| ^~~~~~~~~~~~~~~~~~
In file included from ../src/generic/msgdlgg.cpp:17:
../include/wx/dialog.h:24:7: note: forward declaration of 'class wxTextSizerWrapper'
24 | class wxTextSizerWrapper;
| ^~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:55:23: error: 'virtual wxWindow* wxTitleTextWrapper::OnCreateLine(const wxString&)' marked 'override', but does not override
55 | virtual wxWindow *OnCreateLine(const wxString& s) override
| ^~~~~~~~~~~~
../src/generic/msgdlgg.cpp: In constructor 'wxTitleTextWrapper::wxTitleTextWrapper(wxWindow*)':
../src/generic/msgdlgg.cpp:50:11: error: type 'wxTextSizerWrapper' is not a direct base of 'wxTitleTextWrapper'
50 | : wxTextSizerWrapper(win)
| ^~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp: In member function 'virtual wxWindow* wxTitleTextWrapper::OnCreateLine(const wxString&)':
../src/generic/msgdlgg.cpp:57:52: error: incomplete type 'wxTextSizerWrapper' used in nested name specifier
57 | wxWindow * const win = wxTextSizerWrapper::OnCreateLine(s);
| ^~~~~~~~~~~~
../src/generic/msgdlgg.cpp: In member function 'wxSizer* wxGenericMessageDialog::CreateMsgDlgButtonSizer()':
../src/generic/msgdlgg.cpp:96:55: error: invalid use of incomplete type 'class wxStdDialogButtonSizer'
96 | wxStdDialogButtonSizer * const sizerStd = new wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../include/wx/dialog.h:18:28: note: forward declaration of 'class wxStdDialogButtonSizer'
18 | class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:102:68: error: invalid use of incomplete type 'class wxButton'
102 | btnDef = new wxButton(this, wxID_OK, GetCustomOKLabel());
| ^
In file included from ../include/wx/window.h:2034,
from ../include/wx/nonownedwnd.h:13,
from ../include/wx/toplevel.h:19,
from ../include/wx/dialog.h:13:
../include/wx/msw/window.h:17:28: note: forward declaration of 'class wxButton'
17 | class WXDLLIMPEXP_FWD_CORE wxButton;
| ^~~~~~~~
../src/generic/msgdlgg.cpp:103:21: error: invalid use of incomplete type 'class wxStdDialogButtonSizer'
103 | sizerStd->AddButton(btnDef);
| ^~
../include/wx/dialog.h:18:28: note: forward declaration of 'class wxStdDialogButtonSizer'
18 | class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:109:80: error: invalid use of incomplete type 'class wxButton'
109 | cancel = new wxButton(this, wxID_CANCEL, GetCustomCancelLabel());
| ^
../include/wx/msw/window.h:17:28: note: forward declaration of 'class wxButton'
17 | class WXDLLIMPEXP_FWD_CORE wxButton;
| ^~~~~~~~
../src/generic/msgdlgg.cpp:110:21: error: invalid use of incomplete type 'class wxStdDialogButtonSizer'
110 | sizerStd->AddButton(cancel);
| ^~
../include/wx/dialog.h:18:28: note: forward declaration of 'class wxStdDialogButtonSizer'
18 | class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:119:71: error: invalid use of incomplete type 'class wxButton'
119 | yes = new wxButton(this, wxID_YES, GetCustomYesLabel());
| ^
../include/wx/msw/window.h:17:28: note: forward declaration of 'class wxButton'
17 | class WXDLLIMPEXP_FWD_CORE wxButton;
| ^~~~~~~~
../src/generic/msgdlgg.cpp:120:21: error: invalid use of incomplete type 'class wxStdDialogButtonSizer'
120 | sizerStd->AddButton(yes);
| ^~
../include/wx/dialog.h:18:28: note: forward declaration of 'class wxStdDialogButtonSizer'
18 | class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:123:68: error: invalid use of incomplete type 'class wxButton'
123 | no = new wxButton(this, wxID_NO, GetCustomNoLabel());
| ^
../include/wx/msw/window.h:17:28: note: forward declaration of 'class wxButton'
17 | class WXDLLIMPEXP_FWD_CORE wxButton;
| ^~~~~~~~
../src/generic/msgdlgg.cpp:124:21: error: invalid use of incomplete type 'class wxStdDialogButtonSizer'
124 | sizerStd->AddButton(no);
| ^~
../include/wx/dialog.h:18:28: note: forward declaration of 'class wxStdDialogButtonSizer'
18 | class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:134:74: error: invalid use of incomplete type 'class wxButton'
134 | help = new wxButton(this, wxID_HELP, GetCustomHelpLabel());
| ^
../include/wx/msw/window.h:17:28: note: forward declaration of 'class wxButton'
17 | class WXDLLIMPEXP_FWD_CORE wxButton;
| ^~~~~~~~
../src/generic/msgdlgg.cpp:135:21: error: invalid use of incomplete type 'class wxStdDialogButtonSizer'
135 | sizerStd->AddButton(help);
| ^~
../include/wx/dialog.h:18:28: note: forward declaration of 'class wxStdDialogButtonSizer'
18 | class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:140:19: error: invalid use of incomplete type 'class wxButton'
140 | btnDef->SetDefault();
| ^~
../include/wx/msw/window.h:17:28: note: forward declaration of 'class wxButton'
17 | class WXDLLIMPEXP_FWD_CORE wxButton;
| ^~~~~~~~
../src/generic/msgdlgg.cpp:141:19: error: invalid use of incomplete type 'class wxButton'
141 | btnDef->SetFocus();
| ^~
../include/wx/msw/window.h:17:28: note: forward declaration of 'class wxButton'
17 | class WXDLLIMPEXP_FWD_CORE wxButton;
| ^~~~~~~~
../src/generic/msgdlgg.cpp:144:17: error: invalid use of incomplete type 'class wxStdDialogButtonSizer'
144 | sizerStd->Realize();
| ^~
../include/wx/dialog.h:18:28: note: forward declaration of 'class wxStdDialogButtonSizer'
18 | class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
| ^~~~~~~~~~~~~~~~~~~~~~
../src/generic/msgdlgg.cpp:146:37: error: cannot convert 'wxStdDialogButtonSizer* const' to 'wxSizer*'
146 | return CreateSeparatedSizer(sizerStd);
| ^~~~~~~~
| |
| wxStdDialogButtonSizer* const
../include/wx/dialog.h:151:44: note: initializing argument 1 of 'wxSizer* wxDialogBase::CreateSeparatedSizer(wxSizer* '
151 | wxSizer *CreateSeparatedSizer(wxSizer *sizer);
| ~~~~~~~~~^~~~~
../src/generic/msgdlgg.cpp: In member function 'void wxGenericMessageDialog::DoCreateMsgdialog()':
../src/generic/msgdlgg.cpp:163:17: warning: unused variable 'icon_text' [-Wunused-variable]
163 | wxBoxSizer *icon_text = new wxBoxSizer( wxHORIZONTAL );
| ^~~~~~~~~
make: *** [Makefile:32587: corelib_msgdlgg.o] Error 1
```


Commit: 11ee9384c55651a48676664956f03115df279123
https://github.com/wxWidgets/wxWidgets/commit/11ee9384c55651a48676664956f03115df279123
Author: Tanzinul Islam <tanzinu...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/common/framecmn.cpp
M src/msw/toplevel.cpp

Log Message:
-----------
Add `wxUSE_MENUS` guards in src/msw/toplevel.cpp

Without this patch a minimal MSW build fails with:

```
$WXWIN/build-debug/bk-deps g++ -c -o corelib_msw_toplevel.o -I$WXWIN/build-debug/lib/wx/include/msw-unicode-static-3.3 -I../include -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -DWXBUILDING -DwxUSE_BASE=0 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -g -O0 ../src/msw/toplevel.cpp
../src/msw/toplevel.cpp: In member function 'virtual WXLRESULT wxTopLevelWindowMSW::MSWWindowProc(WXUINT, WXWPARAM, WXLPARAM)':
../src/msw/toplevel.cpp:316:38: error: invalid use of incomplete type 'class wxMenu'
316 | if ( m_menuSystem->MSWCommand(0 /* unused anyhow */, id) )
| ^~
In file included from ../include/wx/window.h:18,
from ../include/wx/nonownedwnd.h:13,
from ../include/wx/toplevel.h:19,
from ../src/msw/toplevel.cpp:22:
../include/wx/event.h:49:32: note: forward declaration of 'class wxMenu'
49 | class WXDLLIMPEXP_FWD_CORE wxMenu;
| ^~~~~~
../src/msw/toplevel.cpp: In destructor 'virtual wxTopLevelWindowMSW::~wxTopLevelWindowMSW()':
../src/msw/toplevel.cpp:520:5: warning: possible problem detected in invocation of 'operator delete' [-Wdelete-incomplete]
520 | delete m_menuSystem;
| ^~~~~~~~~~~~~~~~~~~
/home/t_17_/source/repos/wxWidgets/build-debug/bk-deps g++ -c -o corelib_uxtheme.o -IC:/Users/t_17_/source/repos/wxWidgets/build-debug/lib/wx/include/msw-unicode-static-3.3 -I../include -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -DWXBUILDING -DwxUSE_BASE=0 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -g -O0 ../src/msw/uxtheme.cpp
../src/msw/toplevel.cpp:520:12: warning: invalid use of incomplete type 'class wxMenu'
520 | delete m_menuSystem;
| ^~~~~~~~~~~~
../include/wx/event.h:49:32: note: forward declaration of 'class wxMenu'
49 | class WXDLLIMPEXP_FWD_CORE wxMenu;
| ^~~~~~
../src/msw/toplevel.cpp:520:5: note: neither the destructor nor the class-specific 'operator delete' will be called, even if they are declared when the class is defined
520 | delete m_menuSystem;
| ^~~~~~~~~~~~~~~~~~~
../src/msw/toplevel.cpp: In member function 'wxMenu* wxTopLevelWindowMSW::MSWGetSystemMenu() const':
../src/msw/toplevel.cpp:1230:38: error: incomplete type 'wxMenu' used in nested name specifier
1230 | self->m_menuSystem = wxMenu::MSWNewFromHMENU(hmenu);
| ^~~~~~~~~~~~~~~
../src/msw/toplevel.cpp:1241:21: error: invalid use of incomplete type 'class wxMenu'
1241 | m_menuSystem->SetInvokingWindow(self);
| ^~
../include/wx/event.h:49:32: note: forward declaration of 'class wxMenu'
49 | class WXDLLIMPEXP_FWD_CORE wxMenu;
| ^~~~~~
make: *** [Makefile:30739: corelib_msw_toplevel.o] Error 1
```


Commit: 8b7479b9efff8cd75f4828d293f75c19e9244822
https://github.com/wxWidgets/wxWidgets/commit/8b7479b9efff8cd75f4828d293f75c19e9244822
Author: Tanzinul Islam <tanzinu...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/msw/frame.cpp

Log Message:
-----------
Add `wxUSE_MENUBAR` guards to src/msw/frame.cpp

Without this patch the minimal MSW build fails with the following error:

```
$WXWIN/build-debug/bk-deps g++ -c -o corelib_msw_frame.o -I$WXWIN/build-debug/lib/wx/include/msw-unicode-static-3.3 -I../include -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -DWXBUILDING -DwxUSE_BASE=0 -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual -g -O0 ../src/msw/frame.cpp
../src/msw/frame.cpp: In member function 'virtual WXLRESULT wxFrame::MSWWindowProc(WXUINT, WXWPARAM, WXLPARAM)':
../src/msw/frame.cpp:907:10: error: 'GetMenuBar' was not declared in this scope; did you mean 'GetMenu'?
907 | if ( GetMenuBar() &&
| ^~~~~~~~~~
| GetMenu
../src/msw/frame.cpp:947:18: error: 'wxMenuBar' was not declared in this scope; did you mean 'wxMenu'?
947 | if ( wxMenuBar* mbar = GetMenuBar() )
| ^~~~~~~~~
| wxMenu
../src/msw/frame.cpp:947:29: error: 'mbar' was not declared in this scope
947 | if ( wxMenuBar* mbar = GetMenuBar() )
| ^~~~
../src/msw/frame.cpp:947:36: error: 'GetMenuBar' was not declared in this scope; did you mean 'GetMenu'?
947 | if ( wxMenuBar* mbar = GetMenuBar() )
| ^~~~~~~~~~
| GetMenu
make: *** [Makefile:29134: corelib_msw_frame.o] Error 1
```


Commit: dddcdd8ea69eba820b9f3e44d4d14f074b8b4b08
https://github.com/wxWidgets/wxWidgets/commit/dddcdd8ea69eba820b9f3e44d4d14f074b8b4b08
Author: Tanzinul Islam <tanzinu...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/msw/msgdlg.cpp

Log Message:
-----------
Add `wxHAS_ANY_BUTTON` guards to src/msw/msgdlg.cpp

Without these the minimal MSW static-build succeeds, but then this
simple app:

```cpp

class MyFrame : public wxFrame
{
public:
MyFrame(const wxString & title)
: wxFrame(NULL, wxID_ANY, title)
{}

private:
wxDECLARE_EVENT_TABLE();
};

wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
wxEND_EVENT_TABLE()

class MyApp : public wxApp
{
public:
bool OnInit() override
{
(new MyFrame("My first WxWidgets App"))->Show(true);
return true;
}
};

wxDECLARE_APP(MyApp);
wxIMPLEMENT_APP(MyApp);
```

fails to link with this error:

```
$ g++ $($WXWIN/build-debug/wx-config --cxxflags) test.cpp $($WXWIN/build-debug/wx-config --libs)
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: $WXWIN/build-debug/lib/libwx_mswu_core-3.3.a(corelib_msw_msgdlg.o): in function `wxMessageDialog::AdjustButtonLabels()':
$WXWIN\build-debug/../src/msw/msgdlg.cpp:312:(.text+0xeb5): undefined reference to `wxMSWButton::GetFittingSize(wxWindow*, wxSize const&, int)'
collect2.exe: error: ld returned 1 exit status
```


Commit: 8794c3d394ffd8b900358cb64c9d2987fe51d9d1
https://github.com/wxWidgets/wxWidgets/commit/8794c3d394ffd8b900358cb64c9d2987fe51d9d1
Author: Vadim Zeitlin <va...@wxwidgets.org>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/common/framecmn.cpp

Log Message:
-----------
Define gs_windowDisablers outside "#if wxUSE_MENUS" check

This variable is not related to the menus and should be defined even if
menus support is turned off.

Also move ShouldUpdateMenuFromIdle() near the other menu-related
functions instead of having it defined near the top of the file.

This commit is best viewed with Git --color-moved option.

See #26323.


Commit: dd2663fe3046644c4057950ba5744975a9628ef1
https://github.com/wxWidgets/wxWidgets/commit/dd2663fe3046644c4057950ba5744975a9628ef1
Author: Vadim Zeitlin <va...@wxwidgets.org>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M include/wx/colour.h
M src/generic/msgdlgg.cpp
M src/msw/frame.cpp
M src/msw/msgdlg.cpp
M src/msw/toplevel.cpp
M src/msw/window.cpp

Log Message:
-----------
Merge branch 'fix-minimal-msw-build' of github.com:tanzislam/wxWidgets

Fixes for minimal wxMSW build with most features disabled.

See #26323.


Commit: 49a4dbee56bca3737a26f91ae32b6a6d6cca6f8a
https://github.com/wxWidgets/wxWidgets/commit/49a4dbee56bca3737a26f91ae32b6a6d6cca6f8a
Author: dxbjavid <dxbj...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/common/xpmdecod.cpp
M tests/image/image.cpp

Log Message:
-----------
Stop reading past wxCharBuffer end on unterminated XPM quote

The quote-stripping loop in wxXPMDecoder::ReadFile() sets p = q + 1
after strncpy(). If the closing " was missing, q stopped at the
buffer terminator, so p ended up one past it and the outer for-loop's
p++ then dereferenced two bytes off the end of the wxCharBuffer.
Mirror the already-existing /*-comment treatment and break out of the
loop when *q == '\0'.

Closes #26499.


Commit: d3fb6dcaddd15994cc21213d99aa350d4e259346
https://github.com/wxWidgets/wxWidgets/commit/d3fb6dcaddd15994cc21213d99aa350d4e259346
Author: Vadim Zeitlin <va...@wxwidgets.org>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/common/strconv.cpp

Log Message:
-----------
Fix static order initialization problem in wxCSConv

wxCSConv::wxCSConv() called during global variables initialization could
use the yet uninitialized global gs_nameCache.

Fix this in the usual way, by wrapping the global in a function to
ensure that it is always initialized before being used.


Commit: 8b430b4897e154b2fb9e85231f27813cd00442d3
https://github.com/wxWidgets/wxWidgets/commit/8b430b4897e154b2fb9e85231f27813cd00442d3
Author: Blake-Madden <66873089+B...@users.noreply.github.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M samples/svg/svgtest.cpp

Log Message:
-----------
Fix user scaling in SVG sample

Add missing conversion to the device units for the SVG view box.

Closes #26396.

Closes #26500.


Commit: 71d58842ebc709c925ef8a28821a1656d6170181
https://github.com/wxWidgets/wxWidgets/commit/71d58842ebc709c925ef8a28821a1656d6170181
Author: dxbjavid <dxbj...@gmail.com>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/common/gifdecod.cpp
M tests/image/image.cpp

Log Message:
-----------
Reject GIF files with LZW minimum code size > 11

The minimum code size byte that follows the local colour table in
wxGIFDecoder::LoadGIF() is only checked for <= 0. dgif() sizes
ab_prefix/ab_tail with allocSize = 4096 + 1, so a value of 12
starts ab_free at 4098 and the first alphabet update at
gifdecod.cpp:457 writes one entry past the end of both arrays. The
existing wxASSERT(ab_free < allocSize) already flagged this in debug
builds. The new wxImage::BadGIFLZWMinCodeSize test feeds a 37-byte
2x1 GIF with code size 12 to LoadFile and asserts it is rejected.

Closes #26501.


Commit: 5bc58ae3d1a844dae30e77be3812d95c566c14f5
https://github.com/wxWidgets/wxWidgets/commit/5bc58ae3d1a844dae30e77be3812d95c566c14f5
Author: Vadim Zeitlin <va...@wxwidgets.org>
Date: 2026-05-23 (Sat, 23 May 2026)

Changed paths:
M src/common/gifdecod.cpp

Log Message:
-----------
Fix memory leak when loading invalid GIF files

This was already attempted back in 56ba039411 (fixed memory leaks when
reading invalid GIFs, 2007-03-30) but the cleanup guard added there
didn't really fix anything as we need to free memory in GIFImage, not
wxGIFDecoder itself.

Really fix this now by calling the newly added GIFImage::Free() and not
wxGIFDecoder::Destroy(), which will be called by the dtor anyhow, on
error.

See #26501.


Compare: https://github.com/wxWidgets/wxWidgets/compare/3d179ac15e5f...5bc58ae3d1a8

To unsubscribe from these emails, change your notification settings at https://github.com/wxWidgets/wxWidgets/settings/notifications
Reply all
Reply to author
Forward
0 new messages