🔒 Repository is read-only – file editing is disabled.

recipes/gui/codeblocks/codeblocks-consolidate_1.patch main

1160 linii Raw ← Powrót
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160
From 12c10f1fedd3a1895bfa23a4a16e2172237f3dd6 Mon Sep 17 00:00:00 2001
From: wh11204 <wh11204@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
Date: Sun, 6 Apr 2025 09:23:51 +0000
Subject: [PATCH 1/7] - SFML template: Remove comments with invalid characters
 (ticket #1523, thanks Dan Horak). Double quotes are not allowed inside
 comments.

git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@13649 2a5c6006-c6dd-42ca-98ab-0921f2732cef
(cherry picked from commit 7c8989cce81993d6c83b979e8d0763417f62ce89)
---
 src/templates/common/sfml.cbp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/templates/common/sfml.cbp b/src/templates/common/sfml.cbp
index f7d847416..f656d99eb 100644
--- a/src/templates/common/sfml.cbp
+++ b/src/templates/common/sfml.cbp
@@ -20,7 +20,6 @@
 			</Target>
 		</Build>
 		<Compiler>
-			<!--<Add option="`pkg-config sfml --cflags`"/>-->
 		</Compiler>
 		<Linker>
 			<Add library="sfml-audio"/>
@@ -28,7 +27,6 @@
 			<Add library="sfml-network"/>
 			<Add library="sfml-system"/>
 			<Add library="sfml-window"/>
-			<!--<Add option="`pkg-config sfml --libs`"/>-->
 		</Linker>
 	</Project>
 </CodeBlocks_project_file>
-- 
2.54.0


From a4291c91b2448f89f330c46fb609573f15ee3700 Mon Sep 17 00:00:00 2001
From: wh11204 <wh11204@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
Date: Tue, 21 Oct 2025 11:34:49 +0000
Subject: [PATCH 2/7] - NassiShneiderman: Do not link with unused boost_system
 library (ticket #1563). The boost_system library has been removed in recent
 boost, now it is a header-only library and part of C++11. Tested on Mint 18,
 tHe autotools part will come later.

git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@13751 2a5c6006-c6dd-42ca-98ab-0921f2732cef
(cherry picked from commit 1073dd2153ecaef1b26369e515207dc1523ec725)
---
 .../contrib/NassiShneiderman/NassiShneiderman_wx30-unix.cbp    | 3 ---
 .../contrib/NassiShneiderman/NassiShneiderman_wx32-unix.cbp    | 3 ---
 2 files changed, 6 deletions(-)

diff --git a/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx30-unix.cbp b/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx30-unix.cbp
index 7300ceaf9..48aca35de 100644
--- a/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx30-unix.cbp
+++ b/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx30-unix.cbp
@@ -58,9 +58,6 @@
 			<Add option="-Wall" />
 			<Add option="-std=c++11" />
 		</Compiler>
-		<Linker>
-			<Add library="boost_system" />
-		</Linker>
 		<Unit filename="CParser.cpp" />
 		<Unit filename="DataObject.cpp" />
 		<Unit filename="DataObject.h" />
diff --git a/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx32-unix.cbp b/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx32-unix.cbp
index fdb997a18..def7921f8 100644
--- a/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx32-unix.cbp
+++ b/src/plugins/contrib/NassiShneiderman/NassiShneiderman_wx32-unix.cbp
@@ -58,9 +58,6 @@
 			<Add option="-Wall" />
 			<Add option="-std=c++11" />
 		</Compiler>
-		<Linker>
-			<Add library="boost_system" />
-		</Linker>
 		<Unit filename="CParser.cpp" />
 		<Unit filename="DataObject.cpp" />
 		<Unit filename="DataObject.h" />
-- 
2.54.0


From a19531a51d85e45f43e04c54a4866a24962933b3 Mon Sep 17 00:00:00 2001
From: wh11204 <wh11204@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
Date: Tue, 21 Oct 2025 15:06:58 +0000
Subject: [PATCH 3/7] - NassiShneiderman: Remove boost_system requirement from
 autotools (ticket #1563). The plugin uses header-only boost libraries.

git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@13752 2a5c6006-c6dd-42ca-98ab-0921f2732cef
(cherry picked from commit 576003121343859a25e050ef6fd3900773c0c0e2)
---
 configure.ac                                     | 1 -
 src/plugins/contrib/NassiShneiderman/Makefile.am | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index e69501386..b46880989 100644
--- a/configure.ac
+++ b/configure.ac
@@ -235,7 +235,6 @@ case $WX_BASENAME in
 		if test "x$BUILD_NASSISHNEIDERMAN_TRUE" = "x" ; then
 			dnl Check whether boost is installed
 			AX_BOOST_BASE
-			AX_BOOST_SYSTEM
 		fi
 
 		CB_GLIB2_CFLAGS="$GLIB2_CFLAGS"
diff --git a/src/plugins/contrib/NassiShneiderman/Makefile.am b/src/plugins/contrib/NassiShneiderman/Makefile.am
index 4cbb8965a..0423c38de 100644
--- a/src/plugins/contrib/NassiShneiderman/Makefile.am
+++ b/src/plugins/contrib/NassiShneiderman/Makefile.am
@@ -10,7 +10,7 @@ pluginlib_LTLIBRARIES = libNassiShneiderman.la
 
 libNassiShneiderman_la_LDFLAGS = @MODULE_SHARED_LDFLAGS@ -version-info 0:1:0 -no-undefined -avoid-version
 
-libNassiShneiderman_la_LIBADD = ../../../sdk/libcodeblocks.la $(WX_LIBS) $(BOOST_LDFLAGS) $(BOOST_SYSTEM_LIB)
+libNassiShneiderman_la_LIBADD = ../../../sdk/libcodeblocks.la $(WX_LIBS)
 
 libNassiShneiderman_la_SOURCES = bricks.cpp \
 		cbEditorPanel.cpp \
-- 
2.54.0


From 513d4a15ff499f971ccb35e79682b107d30716bc Mon Sep 17 00:00:00 2001
From: wh11204 <wh11204@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
Date: Wed, 19 Nov 2025 15:28:06 +0000
Subject: [PATCH 4/7] - Build: Remove boost::system detection (end of ticket
 #1563). The NassiShneiderman plugin does not use it and now it is a
 header-only library, so detection failed.

git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@13760 2a5c6006-c6dd-42ca-98ab-0921f2732cef
(cherry picked from commit 89fe56c8041b8a9bbaed9da3abb2ece87d7695e7)
---
 configure.ac                                  |   1 -
 m4/ax_boost_system.m4                         | 121 ------------------
 .../contrib/NassiShneiderman/Makefile.am      |   3 +-
 3 files changed, 1 insertion(+), 124 deletions(-)
 delete mode 100644 m4/ax_boost_system.m4

diff --git a/configure.ac b/configure.ac
index b46880989..552cedbcf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,7 +15,6 @@ AC_MSG_RESULT([${enable_flags_setting}])
 m4_include([m4/acinclude.m4])
 m4_include([m4/ax_cxx_compile_stdcxx.m4])
 m4_include([m4/ax_boost_base.m4])
-m4_include([m4/ax_boost_system.m4])
 
 CODEBLOCKS_CHECK_DEBUG
 
diff --git a/m4/ax_boost_system.m4 b/m4/ax_boost_system.m4
deleted file mode 100644
index 207d7be8d..000000000
--- a/m4/ax_boost_system.m4
+++ /dev/null
@@ -1,121 +0,0 @@
-# ===========================================================================
-#     https://www.gnu.org/software/autoconf-archive/ax_boost_system.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_BOOST_SYSTEM
-#
-# DESCRIPTION
-#
-#   Test for System library from the Boost C++ libraries. The macro requires
-#   a preceding call to AX_BOOST_BASE. Further documentation is available at
-#   <http://randspringer.de/boost/index.html>.
-#
-#   This macro calls:
-#
-#     AC_SUBST(BOOST_SYSTEM_LIB)
-#
-#   And sets:
-#
-#     HAVE_BOOST_SYSTEM
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
-#   Copyright (c) 2008 Michael Tindal
-#   Copyright (c) 2008 Daniel Casimiro <dan.casimiro@gmail.com>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#serial 19
-
-AC_DEFUN([AX_BOOST_SYSTEM],
-[
-	AC_ARG_WITH([boost-system],
-	AS_HELP_STRING([--with-boost-system@<:@=special-lib@:>@],
-                   [use the System library from boost - it is possible to specify a certain library for the linker
-                        e.g. --with-boost-system=boost_system-gcc-mt ]),
-        [
-        if test "$withval" = "no"; then
-			want_boost="no"
-        elif test "$withval" = "yes"; then
-            want_boost="yes"
-            ax_boost_user_system_lib=""
-        else
-		    want_boost="yes"
-		ax_boost_user_system_lib="$withval"
-		fi
-        ],
-        [want_boost="yes"]
-	)
-
-	if test "x$want_boost" = "xyes"; then
-        AC_REQUIRE([AC_PROG_CC])
-        AC_REQUIRE([AC_CANONICAL_BUILD])
-		CPPFLAGS_SAVED="$CPPFLAGS"
-		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
-		export CPPFLAGS
-
-		LDFLAGS_SAVED="$LDFLAGS"
-		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
-		export LDFLAGS
-
-        AC_CACHE_CHECK(whether the Boost::System library is available,
-					   ax_cv_boost_system,
-        [AC_LANG_PUSH([C++])
-			 CXXFLAGS_SAVE=$CXXFLAGS
-			 CXXFLAGS=
-
-			 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/system/error_code.hpp>]],
-				    [[boost::system::error_category *a = 0;]])],
-                   ax_cv_boost_system=yes, ax_cv_boost_system=no)
-			 CXXFLAGS=$CXXFLAGS_SAVE
-             AC_LANG_POP([C++])
-		])
-		if test "x$ax_cv_boost_system" = "xyes"; then
-			AC_SUBST(BOOST_CPPFLAGS)
-
-			AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available])
-            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
-
-			LDFLAGS_SAVE=$LDFLAGS
-            if test "x$ax_boost_user_system_lib" = "x"; then
-                for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
-                     ax_lib=${libextension}
-				    AC_CHECK_LIB($ax_lib, exit,
-                                 [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
-                                 [link_system="no"])
-				done
-                if test "x$link_system" != "xyes"; then
-                for libextension in `ls -r $BOOSTLIBDIR/boost_system* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
-                     ax_lib=${libextension}
-				    AC_CHECK_LIB($ax_lib, exit,
-                                 [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
-                                 [link_system="no"])
-				done
-                fi
-
-            else
-               for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do
-				      AC_CHECK_LIB($ax_lib, exit,
-                                   [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
-                                   [link_system="no"])
-                  done
-
-            fi
-            if test "x$ax_lib" = "x"; then
-                AC_MSG_ERROR(Could not find a version of the library!)
-            fi
-			if test "x$link_system" = "xno"; then
-				AC_MSG_ERROR(Could not link against $ax_lib !)
-			fi
-		fi
-
-		CPPFLAGS="$CPPFLAGS_SAVED"
-	LDFLAGS="$LDFLAGS_SAVED"
-	fi
-])
diff --git a/src/plugins/contrib/NassiShneiderman/Makefile.am b/src/plugins/contrib/NassiShneiderman/Makefile.am
index 0423c38de..44899857f 100644
--- a/src/plugins/contrib/NassiShneiderman/Makefile.am
+++ b/src/plugins/contrib/NassiShneiderman/Makefile.am
@@ -1,8 +1,7 @@
 AM_CPPFLAGS = $(WX_CXXFLAGS) \
 		-I$(top_srcdir)/src/include \
 		-I$(top_srcdir)/src/sdk/wxscintilla/include \
-		$(BOOST_CPPFLAGS) \
-		-DBOOST_SYSTEM_NO_DEPRECATED
+		$(BOOST_CPPFLAGS)
 
 pluginlibdir = $(pkglibdir)/plugins
 
-- 
2.54.0


From dc94773ddb687f47bf8b77250453edfdb3343ad4 Mon Sep 17 00:00:00 2001
From: wh11204 <wh11204@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
Date: Thu, 22 Jan 2026 18:13:06 +0000
Subject: [PATCH 5/7] * wxSmith: Delay-load images so they are loaded after
 C::B is initialized. This sould reduce C::B start time and will make easier
 migration to using SVG. Part of the presumed fix for C::B hanging on Linux
 (wxsresourcetree must be adapted also).

git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@13775 2a5c6006-c6dd-42ca-98ab-0921f2732cef
(cherry picked from commit 444f2cb208228d678559cfce3b2b85edd73bb460)
---
 .../wxwidgets/defitems/wxsmenuitem.cpp        |  6 +-
 .../wxwidgets/defitems/wxstoolbaritem.cpp     |  6 +-
 .../wxSmith/wxwidgets/wxscontainer.cpp        |  2 +-
 .../contrib/wxSmith/wxwidgets/wxscontainer.h  |  2 +-
 .../contrib/wxSmith/wxwidgets/wxsitem.cpp     |  2 +-
 .../contrib/wxSmith/wxwidgets/wxsitem.h       |  6 +-
 .../wxSmith/wxwidgets/wxsitemeditor.cpp       | 20 ++---
 .../contrib/wxSmith/wxwidgets/wxsitemeditor.h |  2 +-
 .../wxwidgets/wxsitemeditorcontent.cpp        |  4 +-
 .../wxSmith/wxwidgets/wxsitemeditorcontent.h  |  5 +-
 .../wxSmith/wxwidgets/wxsitemfactory.cpp      | 10 +--
 .../wxSmith/wxwidgets/wxsitemfactory.h        | 43 +++++-----
 .../contrib/wxSmith/wxwidgets/wxsiteminfo.h   | 79 ++++++++++++++-----
 .../contrib/wxSmith/wxwidgets/wxsparent.cpp   |  4 +-
 .../contrib/wxSmith/wxwidgets/wxsparent.h     |  2 +-
 .../contrib/wxSmith/wxwidgets/wxssizer.cpp    |  2 +-
 .../contrib/wxSmith/wxwidgets/wxssizer.h      |  2 +-
 .../contrib/wxSmith/wxwidgets/wxstool.cpp     |  2 +-
 .../contrib/wxSmith/wxwidgets/wxstool.h       |  2 +-
 .../wxSmith/wxwidgets/wxstoolspace.cpp        |  4 +-
 .../contrib/wxSmith/wxwidgets/wxswidget.cpp   |  2 +-
 .../contrib/wxSmith/wxwidgets/wxswidget.h     |  2 +-
 .../wxAuiToolBar/wxsAuiToolBarItemBase.h      |  2 +-
 23 files changed, 126 insertions(+), 85 deletions(-)

diff --git a/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxsmenuitem.cpp b/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxsmenuitem.cpp
index c0ab70d1c..c137e5e19 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxsmenuitem.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxsmenuitem.cpp
@@ -48,9 +48,9 @@ namespace
 
                 // TODO: This code should be more generic since it may quickly
                 //       become invalid
-                wxString DataPath = ConfigManager::GetDataFolder() + _T("/images/wxsmith/");
-                Icon32.LoadFile(DataPath+_T("wxMenuItem32.png"),wxBITMAP_TYPE_PNG);
-                Icon16.LoadFile(DataPath+_T("wxMenuItem16.png"),wxBITMAP_TYPE_PNG);
+                const wxString DataPath(ConfigManager::GetDataFolder()+"/images/wxsmith/");
+                SetIcon(32, DataPath+"wxMenuItem32.png");
+                SetIcon(16, DataPath+"wxMenuItem16.png");
                 TreeIconId = m_TreeImage.GetIndex();
             };
 
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxstoolbaritem.cpp b/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxstoolbaritem.cpp
index 1c6acdcd4..14971af5b 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxstoolbaritem.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/defitems/wxstoolbaritem.cpp
@@ -46,9 +46,9 @@ namespace
 
                 // TODO: This code should be more generic since it may quickly
                 //       become invalid
-                wxString DataPath = ConfigManager::GetDataFolder() + _T("/images/wxsmith/");
-                Icon32.LoadFile(DataPath+_T("wxToolBarItem32.png"),wxBITMAP_TYPE_PNG);
-                Icon16.LoadFile(DataPath+_T("wxToolBarItem16.png"),wxBITMAP_TYPE_PNG);
+                const wxString DataPath(ConfigManager::GetDataFolder()+"/images/wxsmith/");
+                SetIcon(32, DataPath+"wxToolBarItem32.png");
+                SetIcon(16, DataPath+"wxToolBarItem16.png");
                 TreeIconId = m_TreeImage.GetIndex();
             };
 
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.cpp
index 0029855d8..3da934ea4 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.cpp
@@ -28,7 +28,7 @@
 
 wxsContainer::wxsContainer(
     wxsItemResData* Data,
-    const wxsItemInfo* Info,
+    wxsItemInfo* Info,
     const wxsEventDesc* EventArray,
     const wxsStyleSet* StyleSet,
     long PropertiesFlags):
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.h b/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.h
index 1db540f96..2bad7f13e 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxscontainer.h
@@ -51,7 +51,7 @@ class PLUGIN_EXPORT wxsContainer: public wxsParent
          */
         wxsContainer(
             wxsItemResData* Data,
-            const wxsItemInfo* Info,
+            wxsItemInfo* Info,
             const wxsEventDesc* EventArray = 0,
             const wxsStyleSet* StyleSet=0,
             long PropertiesFlags=flContainer);
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.cpp
index 27813d046..3df53465f 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.cpp
@@ -41,7 +41,7 @@ namespace
     long IdToBottom = wxNewId();
 }
 
-wxsItem::wxsItem(wxsItemResData* ResourceData,const wxsItemInfo* Info,long PropertiesFlags,const wxsEventDesc* Events,const wxsStyleSet* StyleSet):
+wxsItem::wxsItem(wxsItemResData* ResourceData, wxsItemInfo* Info, long PropertiesFlags, const wxsEventDesc* Events, const wxsStyleSet* StyleSet) :
     m_Info(Info),
     m_Events(Events,this),
     m_Parent(nullptr),
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.h b/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.h
index 1b32b49fa..94a3a13e3 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitem.h
@@ -78,7 +78,7 @@ class PLUGIN_EXPORT wxsItem: public wxsPropertyContainer, public wxsCodeGenerato
          * \param Resource resource containing this widget, must not be 0
          * \param Events array of events used by this object (may be 0 if item doesn't use events)
          */
-        wxsItem(wxsItemResData* Data,const wxsItemInfo* Info,long PropertiesFlags,const wxsEventDesc* Events,const wxsStyleSet* StyleSet);
+        wxsItem(wxsItemResData* Data, wxsItemInfo* Info, long PropertiesFlags, const wxsEventDesc* Events, const wxsStyleSet* StyleSet);
 
         /** \brief Dctor */
         virtual ~wxsItem();
@@ -87,7 +87,7 @@ class PLUGIN_EXPORT wxsItem: public wxsPropertyContainer, public wxsCodeGenerato
          *
          * \warning This function should return reference to static variable.
          */
-        inline const wxsItemInfo& GetInfo() { return *m_Info; }
+        inline wxsItemInfo& GetInfo() { return *m_Info; }
 
         /** \brief Getting event management object used by this item
          *  \note This function is wrapper to OnGetInfo() protected function
@@ -578,7 +578,7 @@ class PLUGIN_EXPORT wxsItem: public wxsPropertyContainer, public wxsCodeGenerato
         /** \brief Updating code generation flags before building code */
         virtual void OnUpdateFlags(long& _Flags);
 
-        const wxsItemInfo* m_Info;            ///< \brief Pointer to item's info structure
+        wxsItemInfo*       m_Info;            ///< \brief Pointer to item's info structure
         wxsEvents          m_Events;          ///< \brief Object managing events
         wxsParent*         m_Parent;          ///< \brief Parent class of this one
         wxsItemResData*    m_ResourceData;    ///< \brief Data management object containing this item
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.cpp
index 2a9422337..e89c78df3 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.cpp
@@ -391,7 +391,7 @@ void wxsItemEditor::Paste()
 
 void wxsItemEditor::InsertRequest(const wxString& Name)
 {
-    const wxsItemInfo* Info = wxsItemFactory::GetInfo(Name);
+    wxsItemInfo* Info = wxsItemFactory::GetInfo(Name);
     if ( !Info ) return;
     bool IsTool = Info->Type == wxsTTool;
 
@@ -681,19 +681,19 @@ void wxsItemEditor::RebuildIcons()
 
 namespace
 {
-    int PrioritySort(const wxsItemInfo** it1,const wxsItemInfo** it2)
+    int PrioritySort(wxsItemInfo** it1, wxsItemInfo** it2)
     {
         return (*it1)->Priority - (*it2)->Priority;
     }
 
-    WX_DEFINE_ARRAY(const wxsItemInfo*,ItemsT);
+    WX_DEFINE_ARRAY(wxsItemInfo*, ItemsT);
 
     int CategorySort(ItemsT* it1, ItemsT* it2)
     {
-        if (it1->Item(0)->Category.IsSameAs(_T("Standard")))
+        if (it1->Item(0)->Category.IsSameAs("Standard"))
             return -1;
 
-        if (it2->Item(0)->Category.IsSameAs(_T("Standard")))
+        if (it2->Item(0)->Category.IsSameAs("Standard"))
             return 1;
 
         return wxStrcmp(it1->Item(0)->Category, it2->Item(0)->Category);
@@ -714,7 +714,7 @@ void wxsItemEditor::BuildPalette(wxNotebook* Palette)
     MapT Map;
     ArrayOfItemsT aoi(CategorySort);
 
-    for ( const wxsItemInfo* Info = wxsItemFactory::GetFirstInfo(); Info; Info = wxsItemFactory::GetNextInfo() )
+    for (wxsItemInfo* Info = wxsItemFactory::GetFirstInfo(); Info; Info = wxsItemFactory::GetNextInfo())
     {
         if ( !Info->Category.empty() )
         {
@@ -735,10 +735,10 @@ void wxsItemEditor::BuildPalette(wxNotebook* Palette)
         Palette->AddPage(CurrentPanel,Items->Item(0)->Category);
         wxSizer* RowSizer = new wxBoxSizer(wxHORIZONTAL);
 
-        for ( size_t j=Items->Count(); j-->0; )
+        for (size_t j = Items->Count(); j-- > 0;)
         {
-            const wxsItemInfo* Info = Items->Item(j);
-            const wxBitmap& Icon = ( PalIconSize() == 16L ) ? Info->Icon16 : Info->Icon32;
+            wxsItemInfo* Info = Items->Item(j);
+            const wxBitmap& Icon = Info->GetIcon(PalIconSize());
 
             if ( AllowNonXRCItems || Info->AllowInXRC )
             {
@@ -889,7 +889,7 @@ void wxsItemEditor::OnKeyDown(wxKeyEvent& event)
     }
 }
 
-void wxsItemEditor::StartInsertPointSequence(const wxsItemInfo* Info)
+void wxsItemEditor::StartInsertPointSequence(wxsItemInfo* Info)
 {
     if ( m_Content )
     {
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.h b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.h
index 4d95c8ffc..4b8b02d9c 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditor.h
@@ -178,7 +178,7 @@ class wxsItemEditor : public wxsEditor
         wxsItem* GetReferenceItem(int& InsertionType);
 
         /** \brief Starting sequence of adding new item when inserting by pointing with mouse */
-        void StartInsertPointSequence(const wxsItemInfo* Info);
+        void StartInsertPointSequence(wxsItemInfo* Info);
 
         /** \brief Reloading images in all editors */
         static void ReloadImages();
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.cpp
index 24f193fe4..9d8249d99 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.cpp
@@ -84,7 +84,7 @@ void wxsItemEditorContent::PaintExtra(wxDC* DC)
 
     if ( m_MouseState==msTargetSearch && m_TargetInfo )
     {
-        DC->DrawBitmap(m_TargetInfo->Icon16,m_TargetX+16,m_TargetY,true);
+        DC->DrawBitmap(m_TargetInfo->GetIcon(16), m_TargetX+16, m_TargetY, true);
     }
 }
 
@@ -1019,7 +1019,7 @@ void wxsItemEditorContent::RecalculateMapsReq(wxsItem* Item)
     }
 }
 
-void wxsItemEditorContent::InsertByPointing(const wxsItemInfo* Info)
+void wxsItemEditorContent::InsertByPointing(wxsItemInfo* Info)
 {
     m_MouseState = msTargetSearch;
     m_TargetInfo = Info;
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.h b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.h
index 297e8bd75..b05bff2e6 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemeditorcontent.h
@@ -55,7 +55,7 @@ class wxsItemEditorContent: public wxsDrawingWindow
         void RefreshSelection();
 
         /** \brief Starting sequence of adding new item by pointing with mouse */
-        void InsertByPointing(const wxsItemInfo* Info);
+        void InsertByPointing(wxsItemInfo* Info);
 
     protected:
 
@@ -136,11 +136,10 @@ class wxsItemEditorContent: public wxsDrawingWindow
         wxsParent* m_AssistParent;
         bool       m_AssistAddAfter;
 
-        const wxsItemInfo* m_TargetInfo;                    ///< \brief Info of item added by pointing with mouse
+        wxsItemInfo* m_TargetInfo;                          ///< \brief Info of item added by pointing with mouse
         int m_TargetX;
         int m_TargetY;
 
-
         /** \brief Processing mouse events */
         void OnMouse(wxMouseEvent& event);
 
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.cpp
index a41f3c14a..90e8c159c 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.cpp
@@ -65,20 +65,20 @@ wxsItem* wxsItemFactory::Build(const wxString& Name,wxsItemResData* Data)
     return Item;
 }
 
-const wxsItemInfo* wxsItemFactory::GetInfo(const wxString& Name)
+wxsItemInfo* wxsItemFactory::GetInfo(const wxString& Name)
 {
     ItemMapT::iterator it = ItemMap().find(Name);
     if ( it == ItemMap().end() ) return nullptr;
     return it->second->m_Info;
 }
 
-const wxsItemInfo* wxsItemFactory::GetFirstInfo()
+wxsItemInfo* wxsItemFactory::GetFirstInfo()
 {
     m_Iter = ItemMap().begin();
     return (m_Iter==ItemMap().end()) ? nullptr : m_Iter->second->m_Info;
 }
 
-const wxsItemInfo* wxsItemFactory::GetNextInfo()
+wxsItemInfo* wxsItemFactory::GetNextInfo()
 {
     if ( m_Iter==ItemMap().end() ) return nullptr;
     ++m_Iter;
@@ -95,7 +95,7 @@ int wxsItemFactory::LoadImage(const wxString& FileName)
     return wxsResourceTree::LoadImage(FileName);
 }
 
-wxsItemFactory::wxsItemFactory(const wxsItemInfo* Info):
+wxsItemFactory::wxsItemFactory(wxsItemInfo* Info) :
     m_Info(Info)
 {
     m_Name = Info->ClassName;
@@ -103,7 +103,7 @@ wxsItemFactory::wxsItemFactory(const wxsItemInfo* Info):
     ItemMap()[m_Name] = this;
 }
 
-wxsItemFactory::wxsItemFactory(const wxsItemInfo* Info,wxString ClassName):
+wxsItemFactory::wxsItemFactory(wxsItemInfo* Info, wxString ClassName) :
     m_Info(Info)
 {
     m_Name = ClassName;
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.h b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.h
index 5ebe7eea3..ad9d4d84d 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsitemfactory.h
@@ -64,13 +64,13 @@ class PLUGIN_EXPORT wxsItemFactory
          *  \param ClassName name of item's class
          *  \return Pointer to info or 0 if there's no such item
          */
-        static const wxsItemInfo* GetInfo(const wxString& ClassName);
+        static wxsItemInfo* GetInfo(const wxString& ClassName);
 
         /** \brief Getting info of first item */
-        static const wxsItemInfo* GetFirstInfo();
+        static wxsItemInfo* GetFirstInfo();
 
         /** \brief Continuing getting item infos */
-        static const wxsItemInfo* GetNextInfo();
+        static wxsItemInfo* GetNextInfo();
 
         /** \brief Getting global image list with entries for items
          *
@@ -82,13 +82,13 @@ class PLUGIN_EXPORT wxsItemFactory
         static int LoadImage(const wxString& Name);
 
         /** \brief Ctor */
-        wxsItemFactory(const wxsItemInfo* Info);
+        wxsItemFactory(wxsItemInfo* Info);
 
         /** \brief Extra ctor for templates - uses class name from param.
          *         It may be used when Info is going to be created
          *         inside constructor.
          */
-        wxsItemFactory(const wxsItemInfo* Info,wxString ClassName);
+        wxsItemFactory(wxsItemInfo* Info,wxString ClassName);
 
         /** \brief Dctor */
         virtual ~wxsItemFactory();
@@ -105,7 +105,7 @@ class PLUGIN_EXPORT wxsItemFactory
         /** \brief Function for getting global item's map */
         static ItemMapT& ItemMap();
 
-        const wxsItemInfo* m_Info;          ///< \brief Info of item handled by this instance
+        wxsItemInfo* m_Info;                ///< \brief Info of item handled by this instance
         wxString m_Name;                    ///< \brief Item's name
         static ItemMapT::iterator m_Iter;   ///< \brief Iterator used for GetFirstInfo / GetNextInfo
 };
@@ -150,8 +150,8 @@ template<class T> class wxsRegisterItem: public wxsItemFactory
             Info.Languages = Languages;
             Info.VerHi = VerHi;
             Info.VerLo = VerLo;
-            Info.Icon32 = Bmp32.GetSubBitmap(wxRect(0,0,Bmp32.GetWidth(),Bmp32.GetHeight()));
-            Info.Icon16 = Bmp16.GetSubBitmap(wxRect(0,0,Bmp16.GetWidth(),Bmp16.GetHeight()));
+            Info.SetIcon(32, Bmp32.GetSubBitmap(wxRect(0, 0, Bmp32.GetWidth(), Bmp32.GetHeight())));
+            Info.SetIcon(16, Bmp16.GetSubBitmap(wxRect(0, 0, Bmp16.GetWidth(), Bmp16.GetHeight())));
             Info.AllowInXRC = AllowInXRC;
             Info.TreeIconId = m_TreeImage.GetIndex();
         }
@@ -173,7 +173,7 @@ template<class T> class wxsRegisterItem: public wxsItemFactory
             wxString Bmp32FileName,
             wxString Bmp16FileName,
             bool AllowInXRC = true
-            ): wxsItemFactory(&Info,ClassName),
+            ): wxsItemFactory(&Info, ClassName),
                m_TreeImage(Bmp16FileName)
         {
             Info.ClassName = ClassName;
@@ -190,9 +190,9 @@ template<class T> class wxsRegisterItem: public wxsItemFactory
             Info.VerLo = VerLo;
             Info.AllowInXRC = AllowInXRC;
 
-            wxString DataPath = ConfigManager::GetDataFolder()+_T("/");
-            Info.Icon32.LoadFile(DataPath+Bmp32FileName,wxBITMAP_TYPE_ANY);
-            Info.Icon16.LoadFile(DataPath+Bmp16FileName,wxBITMAP_TYPE_ANY);
+            const wxString DataPath(ConfigManager::GetDataFolder()+"/");
+            Info.SetIcon(32, DataPath+Bmp32FileName);
+            Info.SetIcon(16, DataPath+Bmp16FileName);
             Info.TreeIconId = m_TreeImage.GetIndex();
         }
 
@@ -202,16 +202,16 @@ template<class T> class wxsRegisterItem: public wxsItemFactory
             wxsItemType Type,
             wxString Category,
             long Priority,
-            bool AllowInXRC=true):
-                wxsItemFactory(&Info,_T("wx") + ClassNameWithoutWx),
-                m_TreeImage(_T("images/wxsmith/wx")+ClassNameWithoutWx+_T("16.png"),true)
+            bool AllowInXRC = true):
+                wxsItemFactory(&Info, "wx"+ClassNameWithoutWx),
+                m_TreeImage("images/wxsmith/wx"+ClassNameWithoutWx+"16.png", true)
         {
-            Info.ClassName = _T("wx") + ClassNameWithoutWx;
+            Info.ClassName = "wx"+ClassNameWithoutWx;
             Info.Type = Type;
             Info.License = _("wxWidgets license");
             Info.Author = _("wxWidgets team");
-            Info.Email = _T("");
-            Info.Site = _T("www.wxwidgets.org");
+            Info.Email = "";
+            Info.Site = "www.wxwidgets.org";
             Info.Category = Category;
             Info.Priority = Priority;
             Info.DefaultVarName = ClassNameWithoutWx;
@@ -220,10 +220,9 @@ template<class T> class wxsRegisterItem: public wxsItemFactory
             Info.VerLo = 6;
             Info.AllowInXRC = AllowInXRC;
 
-            wxString DataPath = ConfigManager::GetDataFolder() + _T("/images/wxsmith/");
-            Info.Icon32.LoadFile(DataPath+Info.ClassName+_T("32.png"),wxBITMAP_TYPE_PNG);
-            Info.Icon16.LoadFile(DataPath+Info.ClassName+_T("16.png"),wxBITMAP_TYPE_PNG);
-
+            const wxString DataPath(ConfigManager::GetDataFolder()+"/images/wxsmith/");
+            Info.SetIcon(32, DataPath+Info.ClassName+"32.png");
+            Info.SetIcon(16, DataPath+Info.ClassName+"16.png");
             Info.TreeIconId = m_TreeImage.GetIndex();
         }
 
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsiteminfo.h b/src/plugins/contrib/wxSmith/wxwidgets/wxsiteminfo.h
index c1156c279..723f5d75e 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsiteminfo.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsiteminfo.h
@@ -37,25 +37,68 @@ enum wxsItemType
     wxsTTool             ///< \brief Tool
 };
 
-/** \brief Structure containing all global information about item */
-struct wxsItemInfo
+/** \brief Class containing all global information about item */
+class wxsItemInfo
 {
-    wxString        ClassName;      ///< \brief Item's class name
-    wxsItemType     Type;           ///< \brief Item type
-    wxString        License;        ///< \brief Item's license
-    wxString        Author;         ///< \brief Item's author
-    wxString        Email;          ///< \brief Item's author's email
-    wxString        Site;           ///< \brief Site about this item
-    wxString        Category;       ///< \brief Item's category (used for grouping widgets, use _T() instead of _() because this string will be used for sorting and it will be translated manually)
-    long            Priority;       ///< \brief Priority used for sorting widgets inside one group, should be in range 0..100, higher priority widgets will be at the beginning of palette
-    wxString        DefaultVarName; ///< \brief Prefix for default variable name (converted to uppercase will be used as prefix for identifier)
-    long            Languages;      ///< \brief Coding languages used by this item
-    unsigned short  VerHi;          ///< \brief Lower number of version
-    unsigned short  VerLo;          ///< \brief Higher number of version
-    wxBitmap        Icon32;         ///< \brief Item's icon (32x32 pixels)
-    wxBitmap        Icon16;         ///< \brief Item's icon (16x16 pixels)
-    bool            AllowInXRC;     ///< \brief Item can be used in XRC files
-    int             TreeIconId;     ///< \brief Identifier of image inside resource tree
+    public:
+
+        const wxBitmap& GetIcon(int Size)
+        {
+            if (Size == 16)
+            {
+                if (!Icon16.IsOk())
+                    Icon16.LoadFile(Icon16File, wxBITMAP_TYPE_PNG);
+
+                return Icon16;
+            }
+            else if (Size == 32)
+            {
+                if (!Icon32.IsOk())
+                    Icon32.LoadFile(Icon32File, wxBITMAP_TYPE_PNG);
+
+                return Icon32;
+            }
+
+            return wxNullBitmap;
+        }
+
+        void SetIcon(int Size, const wxBitmap& Bitmap)
+        {
+            if (Size == 16)
+                Icon16 = Bitmap;
+            else if (Size == 32)
+                Icon32 = Bitmap;
+        }
+
+        void SetIcon(int Size, const wxString& Filename)
+        {
+            if (Size == 16)
+                Icon16File = Filename;
+            else if (Size == 32)
+                Icon32File = Filename;
+        }
+
+        wxString        ClassName;      ///< \brief Item's class name
+        wxsItemType     Type;           ///< \brief Item type
+        wxString        License;        ///< \brief Item's license
+        wxString        Author;         ///< \brief Item's author
+        wxString        Email;          ///< \brief Item's author's email
+        wxString        Site;           ///< \brief Site about this item
+        wxString        Category;       ///< \brief Item's category (used for grouping widgets, use _T() instead of _() because this string will be used for sorting and it will be translated manually)
+        long            Priority;       ///< \brief Priority used for sorting widgets inside one group, should be in range 0..100, higher priority widgets will be at the beginning of palette
+        wxString        DefaultVarName; ///< \brief Prefix for default variable name (converted to uppercase will be used as prefix for identifier)
+        long            Languages;      ///< \brief Coding languages used by this item
+        unsigned short  VerHi;          ///< \brief Lower number of version
+        unsigned short  VerLo;          ///< \brief Higher number of version
+        bool            AllowInXRC;     ///< \brief Item can be used in XRC files
+        int             TreeIconId;     ///< \brief Identifier of image inside resource tree
+
+    private:
+
+        wxBitmap        Icon32;         ///< \brief Item's icon (32x32 pixels)
+        wxString        Icon32File;     ///< \brief Item's file name (32x32 pixels)
+        wxBitmap        Icon16;         ///< \brief Item's icon (16x16 pixels)
+        wxString        Icon16File;     ///< \brief Item's file name (16x16 pixels)
 };
 
 #endif
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.cpp
index c32db4397..6f5f5c87c 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.cpp
@@ -28,8 +28,8 @@
 
 using namespace wxsFlags;
 
-wxsParent::wxsParent(wxsItemResData* Data,const wxsItemInfo* Info,long PropertiesFlags,const wxsEventDesc* Events,const wxsStyleSet* StyleSet):
-    wxsItem(Data,Info,PropertiesFlags,Events,StyleSet)
+wxsParent::wxsParent(wxsItemResData* Data, wxsItemInfo* Info, long PropertiesFlags, const wxsEventDesc* Events, const wxsStyleSet* StyleSet):
+    wxsItem(Data, Info, PropertiesFlags, Events, StyleSet)
 {
 }
 
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.h b/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.h
index 680dbce84..3e606d24c 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxsparent.h
@@ -42,7 +42,7 @@ class PLUGIN_EXPORT wxsParent: public wxsItem
     public:
 
         /** \brief Ctor */
-        wxsParent(wxsItemResData* Data,const wxsItemInfo* Info,long PropertiesFlags,const wxsEventDesc* Events,const wxsStyleSet* StyleSet);
+        wxsParent(wxsItemResData* Data, wxsItemInfo* Info,long PropertiesFlags,const wxsEventDesc* Events,const wxsStyleSet* StyleSet);
 
         /** \brief Dctor */
         virtual ~wxsParent();
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.cpp
index f5c75fe0c..b83ed15de 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.cpp
@@ -84,7 +84,7 @@ wxString wxsSizerExtra::AllParamsCode(wxsCoderContext* Ctx)
     return wxEmptyString;
 }
 
-wxsSizer::wxsSizer(wxsItemResData* Data,const wxsItemInfo* Info):
+wxsSizer::wxsSizer(wxsItemResData* Data, wxsItemInfo* Info):
     wxsParent(Data,Info,flVariable|flSubclass,0,0)
 {
     GetBaseProps()->m_IsMember = false;
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.h b/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.h
index 1cc08d540..b81d8dfb2 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxssizer.h
@@ -76,7 +76,7 @@ class PLUGIN_EXPORT wxsSizer: public wxsParent
     public:
 
         /** \brief Ctor */
-        wxsSizer(wxsItemResData* Data,const wxsItemInfo* Info);
+        wxsSizer(wxsItemResData* Data, wxsItemInfo* Info);
 
     protected:
 
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxstool.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxstool.cpp
index 9c669f0e8..8b2c10ef6 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxstool.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxstool.cpp
@@ -27,7 +27,7 @@
 
 wxsTool::wxsTool(
     wxsItemResData* Data,
-    const wxsItemInfo* Info,
+    wxsItemInfo* Info,
     const wxsEventDesc* EventArray,
     const wxsStyleSet* StyleSet,
     long PropertiesFlags):
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxstool.h b/src/plugins/contrib/wxSmith/wxwidgets/wxstool.h
index 92aa7022a..583eb5dee 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxstool.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxstool.h
@@ -39,7 +39,7 @@ class wxsTool: public wxsParent
         /** \brief Ctor */
         wxsTool(
             wxsItemResData* Data,
-            const wxsItemInfo* Info,
+            wxsItemInfo* Info,
             const wxsEventDesc* EventArray = 0,
             const wxsStyleSet* StyleSet=0,
             long PropertiesFlags = flTool);
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxstoolspace.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxstoolspace.cpp
index 3e6a85107..1f33eb532 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxstoolspace.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxstoolspace.cpp
@@ -141,8 +141,8 @@ void wxsToolSpace::OnPaint(cb_unused wxPaintEvent& event)
         int EndX = BeginX + IconSize;
         int EndY = BeginY + IconSize;
         DC.SetBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
-        DC.DrawRectangle(BeginX-1,BeginY-1,EndX-BeginX+2,EndY-BeginY+2);
-        DC.DrawBitmap(Item->GetInfo().Icon32,BeginX,BeginY,true);
+        DC.DrawRectangle(BeginX-1, BeginY-1, EndX-BeginX+2, EndY-BeginY+2);
+        DC.DrawBitmap(Item->GetInfo().GetIcon(32), BeginX, BeginY, true);
 
         if ( Item->GetIsSelected() )
         {
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.cpp b/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.cpp
index 707f10dc5..8cb18b27b 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.cpp
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.cpp
@@ -26,7 +26,7 @@
 
 wxsWidget::wxsWidget(
     wxsItemResData* Data,
-    const wxsItemInfo* Info,
+    wxsItemInfo* Info,
     const wxsEventDesc* EventArray,
     const wxsStyleSet* StyleSet,
     long PropertiesFlags):
diff --git a/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.h b/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.h
index 61dbf11b5..2019d7bb8 100644
--- a/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.h
+++ b/src/plugins/contrib/wxSmith/wxwidgets/wxswidget.h
@@ -60,7 +60,7 @@ class PLUGIN_EXPORT wxsWidget: public wxsItem
          */
         wxsWidget(
             wxsItemResData*     Data,
-            const wxsItemInfo*  Info,
+            wxsItemInfo*        Info,
             const wxsEventDesc* EventArray = 0,
             const wxsStyleSet*  StyleSet = 0,
             long                PropertiesFlags = flWidget);
diff --git a/src/plugins/contrib/wxSmithAui/wxAuiToolBar/wxsAuiToolBarItemBase.h b/src/plugins/contrib/wxSmithAui/wxAuiToolBar/wxsAuiToolBarItemBase.h
index 6bd794754..47b4817ba 100644
--- a/src/plugins/contrib/wxSmithAui/wxAuiToolBar/wxsAuiToolBarItemBase.h
+++ b/src/plugins/contrib/wxSmithAui/wxAuiToolBar/wxsAuiToolBarItemBase.h
@@ -32,7 +32,7 @@ class wxsAuiToolBarItemBase: public wxsItem
         long m_HasGripper;
         int  m_GripperSize;
 
-        wxsAuiToolBarItemBase(wxsItemResData* Data,const wxsItemInfo* Info,long PropertiesFlags,const wxsEventDesc* Events,const wxsStyleSet* StyleSet)
+        wxsAuiToolBarItemBase(wxsItemResData* Data, wxsItemInfo* Info,long PropertiesFlags,const wxsEventDesc* Events,const wxsStyleSet* StyleSet)
             : wxsItem(Data,Info,PropertiesFlags,Events,StyleSet)
         {}
 
-- 
2.54.0


From 5db6db52b9d65e8f594c1488abc84cc7c5fa14cb Mon Sep 17 00:00:00 2001
From: wh11204 <wh11204@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
Date: Mon, 4 May 2026 18:24:20 +0000
Subject: [PATCH 6/7] * wxSmith: Delay-load images in the resource tree (ticket
 #1561). This should fix hangs on Arch, Fedora and others using gdk-pixbuf
 newer than 2.24.12-2. See also revision [r13775].

git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@13841 2a5c6006-c6dd-42ca-98ab-0921f2732cef
(cherry picked from commit 828c3f0d79a60730378a43cb89863c5719efa3a6)
---
 .../contrib/wxSmith/wxsresourcetree.cpp       | 38 ++++++++++++++++---
 src/plugins/contrib/wxSmith/wxsresourcetree.h |  3 ++
 2 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/src/plugins/contrib/wxSmith/wxsresourcetree.cpp b/src/plugins/contrib/wxSmith/wxsresourcetree.cpp
index 8295e13cc..0dee3c38d 100644
--- a/src/plugins/contrib/wxSmith/wxsresourcetree.cpp
+++ b/src/plugins/contrib/wxSmith/wxsresourcetree.cpp
@@ -51,9 +51,9 @@ namespace
 }
 
 wxsResourceTree* wxsResourceTree::m_Singleton = nullptr;
-int wxsResourceTree::m_RootImageId = LoadImage(_T("/images/wxsmith/wxSmith16.png"));
-int wxsResourceTree::m_ProjectImageId = LoadImage(_T("/images/codeblocks.png"));
-int wxsResourceTree::m_ExternalImageId = LoadImage(_T("/images/wxsmith/deletewidget16.png"));
+int wxsResourceTree::m_RootImageId = LoadImage("images/wxsmith/wxSmith16.png");
+int wxsResourceTree::m_ProjectImageId = LoadImage("images/codeblocks.png");
+int wxsResourceTree::m_ExternalImageId = LoadImage("images/wxsmith/deletewidget16.png");
 
 
 BEGIN_EVENT_TABLE(wxsResourceTree,wxTreeCtrl)
@@ -70,7 +70,23 @@ wxsResourceTree::wxsResourceTree(wxWindow* Parent)
     , m_Data(nullptr)
 {
     m_Singleton = this;
-    SetImageList(&GetGlobalImageList());
+
+    // Load now the delayed loads
+    wxImageList* imagelist = &GetGlobalImageList();
+    for (int i = 0; i < imagelist->GetImageCount(); ++i)
+    {
+        const wxString filename = GetFilenameMap()[i];
+        if (!filename.empty())
+        {
+            const wxBitmap bmp(cbLoadBitmap(ConfigManager::GetDataFolder()+'/'+filename, wxBITMAP_TYPE_ANY));
+            if (bmp.IsOk())
+                imagelist->Replace(i, bmp);
+
+            GetFilenameMap()[i] = wxEmptyString;
+        }
+    }
+
+    SetImageList(imagelist);
     Expand(AddRoot(_("Resources"),m_RootImageId));
 }
 
@@ -145,10 +161,19 @@ wxImageList& wxsResourceTree::GetGlobalImageList()
     return List;
 }
 
+std::map <int, wxString> & wxsResourceTree::GetFilenameMap()
+{
+    static std::map <int, wxString> FilenameMap;
+    return FilenameMap;
+}
+
 int wxsResourceTree::LoadImage(const wxString& FileName)
 {
-    wxBitmap Bmp(cbLoadBitmap(ConfigManager::GetDataFolder()+_T("/")+FileName,wxBITMAP_TYPE_ANY));
-    return InsertImage(Bmp);
+    // Store the filename for delay-loading, now it cannot be done
+    // because wxWidgets image handlers have not been initialized
+    const int index = InsertImage(wxBitmap(wxImage(16, 16)));
+    GetFilenameMap()[index] = FileName;
+    return index;
 }
 
 int wxsResourceTree::InsertImage(const wxBitmap& Bitmap)
@@ -186,6 +211,7 @@ wxArrayInt& wxsResourceTree::GetFreedList()
 
 void wxsResourceTree::FreeImage(int Index)
 {
+    GetFilenameMap()[Index] = wxEmptyString;
     GetFreedList().Add(Index);
 }
 
diff --git a/src/plugins/contrib/wxSmith/wxsresourcetree.h b/src/plugins/contrib/wxSmith/wxsresourcetree.h
index 07128286e..73eab8a2f 100644
--- a/src/plugins/contrib/wxSmith/wxsresourcetree.h
+++ b/src/plugins/contrib/wxSmith/wxsresourcetree.h
@@ -26,6 +26,8 @@
 #include <wx/treectrl.h>
 #include "wxsresourcetreeitemdata.h"
 
+#include <map>
+
 #if defined(__WXMSW__) && defined(LoadImage)
     // Fix Windows winuser.h Header define of LoadImage.
     #undef LoadImage
@@ -116,6 +118,7 @@ class wxsResourceTree: public wxTreeCtrl
         static int m_ProjectImageId;
         static int m_ExternalImageId;
 
+        static std::map <int, wxString> & GetFilenameMap();
         static wxArrayInt& GetFreedList();
 
         void PopupMenu(wxMenu* Menu,wxsResourceTreeItemData* ItemData);
-- 
2.54.0


From 2deefd998d6db211eebaa6c9e2c72e84109f8f7c Mon Sep 17 00:00:00 2001
From: wh11204 <wh11204@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
Date: Tue, 5 May 2026 00:27:15 +0000
Subject: [PATCH 7/7] - wxSmith: Enable direct loading after tree construction.
 Without this, images added after tree construction would be wrong.

git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@13842 2a5c6006-c6dd-42ca-98ab-0921f2732cef
(cherry picked from commit b81412050f5d4ee5f444a8b59ce57ac3e065df89)
---
 .../contrib/wxSmith/wxsresourcetree.cpp       | 29 +++++++++++++++----
 src/plugins/contrib/wxSmith/wxsresourcetree.h |  1 +
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/src/plugins/contrib/wxSmith/wxsresourcetree.cpp b/src/plugins/contrib/wxSmith/wxsresourcetree.cpp
index 0dee3c38d..21afd4a50 100644
--- a/src/plugins/contrib/wxSmith/wxsresourcetree.cpp
+++ b/src/plugins/contrib/wxSmith/wxsresourcetree.cpp
@@ -64,7 +64,7 @@ END_EVENT_TABLE()
 
 
 wxsResourceTree::wxsResourceTree(wxWindow* Parent)
-    : wxTreeCtrl(Parent,-1)
+    : wxTreeCtrl(Parent, wxID_ANY)
     , m_IsExt(false)
     , m_BlockCount(0)
     , m_Data(nullptr)
@@ -87,6 +87,7 @@ wxsResourceTree::wxsResourceTree(wxWindow* Parent)
     }
 
     SetImageList(imagelist);
+    IsConstructed() = true;
     Expand(AddRoot(_("Resources"),m_RootImageId));
 }
 
@@ -169,10 +170,22 @@ std::map <int, wxString> & wxsResourceTree::GetFilenameMap()
 
 int wxsResourceTree::LoadImage(const wxString& FileName)
 {
-    // Store the filename for delay-loading, now it cannot be done
-    // because wxWidgets image handlers have not been initialized
-    const int index = InsertImage(wxBitmap(wxImage(16, 16)));
-    GetFilenameMap()[index] = FileName;
+    int index;
+
+    if (IsConstructed())
+    {
+        // wxWidgets has started, load the bitmap directly
+        const wxBitmap bmp(cbLoadBitmap(ConfigManager::GetDataFolder()+'/'+FileName, wxBITMAP_TYPE_ANY));
+        index = InsertImage(bmp);
+    }
+    else
+    {
+        // Store the filename for delay-loading, now it cannot be done
+        // because wxWidgets image handlers have not been initialized
+        index = InsertImage(wxBitmap(wxImage(16, 16)));
+        GetFilenameMap()[index] = FileName;
+    }
+
     return index;
 }
 
@@ -209,6 +222,12 @@ wxArrayInt& wxsResourceTree::GetFreedList()
     return List;
 }
 
+bool& wxsResourceTree::IsConstructed()
+{
+    static bool Constructed = false;
+    return Constructed;
+}
+
 void wxsResourceTree::FreeImage(int Index)
 {
     GetFilenameMap()[Index] = wxEmptyString;
diff --git a/src/plugins/contrib/wxSmith/wxsresourcetree.h b/src/plugins/contrib/wxSmith/wxsresourcetree.h
index 73eab8a2f..2e01a8357 100644
--- a/src/plugins/contrib/wxSmith/wxsresourcetree.h
+++ b/src/plugins/contrib/wxSmith/wxsresourcetree.h
@@ -120,6 +120,7 @@ class wxsResourceTree: public wxTreeCtrl
 
         static std::map <int, wxString> & GetFilenameMap();
         static wxArrayInt& GetFreedList();
+        static bool& IsConstructed();
 
         void PopupMenu(wxMenu* Menu,wxsResourceTreeItemData* ItemData);
         void InvalidateItemData(wxsResourceTreeItemData* ItemData);
-- 
2.54.0