From c7218dbd9dd5fc076ab3e142cbe7775d64eebb2c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 26 Aug 2023 18:00:44 +0200 Subject: [PATCH 01/21] Remove comment about radio buttons from wxGetWindowFromHWND() This comment became obsolete after ce1ee46b0c (Use wxRadioButton in MSW wxRadioBox implementation, 2022-12-24) and should have been removed in it. --- src/msw/window.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 444634f9b6..17d7022f69 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -7099,9 +7099,6 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd) { HWND hwnd = (HWND)hWnd; - // For a radiobutton, we get the radiobox from GWL_USERDATA (which is set - // by code in msw/radiobox.cpp), for all the others we just search up the - // window hierarchy wxWindow *win = nullptr; if ( hwnd ) { From c799a8276475106c6caca338f3acf1fed0979b79 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 26 Aug 2023 18:03:21 +0200 Subject: [PATCH 02/21] Slightly simplify wxGetActiveWindow() logic No real changes, just return early if HWND is null and remove redundant tests. This commit is best viewed ignoring whitespace-only changes. --- src/msw/window.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 17d7022f69..fb86466782 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -7098,25 +7098,21 @@ wxWindow *wxGetActiveWindow() extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd) { HWND hwnd = (HWND)hWnd; + if ( !hwnd ) + return nullptr; - wxWindow *win = nullptr; - if ( hwnd ) - { - win = wxFindWinFromHandle(hwnd); - if ( !win ) - { - // spin control text buddy window should be mapped to spin ctrl - // itself so try it too + wxWindow *win = wxFindWinFromHandle(hwnd); + + // spin control text buddy window should be mapped to spin ctrl + // itself so try it too #if wxUSE_SPINCTRL && !defined(__WXUNIVERSAL__) - if ( !win ) - { - win = wxSpinCtrl::GetSpinForTextCtrl((WXHWND)hwnd); - } -#endif // wxUSE_SPINCTRL - } + if ( !win ) + { + win = wxSpinCtrl::GetSpinForTextCtrl((WXHWND)hwnd); } +#endif // wxUSE_SPINCTRL - while ( hwnd && !win ) + while ( !win ) { // this is a really ugly hack needed to avoid mistakenly returning the // parent frame wxWindow for the find/replace modeless dialog HWND - @@ -7133,6 +7129,9 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd) } hwnd = ::GetParent(hwnd); + if ( !hwnd ) + return nullptr; + win = wxFindWinFromHandle(hwnd); } From 79e057fe06aa317bd4ddf24e435c5aba2cddec62 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 26 Aug 2023 18:07:52 +0200 Subject: [PATCH 03/21] Ensure wxFindReplaceDialog can be found from its HWND Associate the dialog HWND with the corresponding C++ object to allow wxGetWindowFromHWND() to work from it, as this will allow to avoid having to handle it specially in several places. --- src/msw/fdrepdlg.cpp | 6 ++++++ src/msw/window.cpp | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/msw/fdrepdlg.cpp b/src/msw/fdrepdlg.cpp index 52b9505063..b5890279de 100644 --- a/src/msw/fdrepdlg.cpp +++ b/src/msw/fdrepdlg.cpp @@ -30,6 +30,10 @@ #include "wx/fdrepdlg.h" +// Use functions from src/msw/window.cpp +extern void wxRemoveHandleAssociation(wxWindowMSW *win); +extern void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win); + // ---------------------------------------------------------------------------- // functions prototypes // ---------------------------------------------------------------------------- @@ -334,6 +338,7 @@ wxFindReplaceDialog::~wxFindReplaceDialog() m_isShown = false; // and from destroying our window [again] + wxRemoveHandleAssociation(this); m_hWnd = (WXHWND)nullptr; } @@ -419,6 +424,7 @@ bool wxFindReplaceDialog::Show(bool show) } m_hWnd = (WXHWND)hwnd; + wxAssociateWinWithHandle(m_hWnd, this); return true; } diff --git a/src/msw/window.cpp b/src/msw/window.cpp index fb86466782..57112c8016 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -291,7 +291,7 @@ void wxTraceMSWMessage(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } #endif // wxDEBUG_LEVEL >= 2 -void wxRemoveHandleAssociation(wxWindowMSW *win); +extern void wxRemoveHandleAssociation(wxWindowMSW *win); extern void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win); // get the text metrics for the current font From a378b7b4bea370a6aa1dca8b88f84e2cffcfa1e6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 26 Aug 2023 18:20:32 +0200 Subject: [PATCH 04/21] Remove special wxFindReplaceDialog hack from wxGUIEventLoop Don't call IsDialogMessage() for any unknown windows, this is not needed any longer now that we recognize wxFindReplaceDialog HWND as ours (see the previous commit) and that its MSWProcessMessage() works correctly (done in this one). Removing this IsDialogMessage() call still allows TAB navigation to work in the "Find" dialog but prevents us from processing unknown messages for unknown windows, which might have unwatned consequences. --- include/wx/msw/fdrepdlg.h | 2 ++ src/msw/evtloop.cpp | 10 +--------- src/msw/fdrepdlg.cpp | 13 +++++++++++++ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/include/wx/msw/fdrepdlg.h b/include/wx/msw/fdrepdlg.h index 5884351cd4..9ccf2a6e12 100644 --- a/include/wx/msw/fdrepdlg.h +++ b/include/wx/msw/fdrepdlg.h @@ -41,6 +41,8 @@ public: virtual void SetTitle( const wxString& title) override; virtual wxString GetTitle() const override; + virtual bool MSWProcessMessage(WXMSG* pMsg) override; + protected: virtual void DoGetSize(int *width, int *height) const override; virtual void DoGetClientSize(int *width, int *height) const override; diff --git a/src/msw/evtloop.cpp b/src/msw/evtloop.cpp index 34018e8bee..cda02f3b5f 100644 --- a/src/msw/evtloop.cpp +++ b/src/msw/evtloop.cpp @@ -79,15 +79,7 @@ bool wxGUIEventLoop::PreProcessMessage(WXMSG *msg) } if ( !wndThis ) - { - // this may happen if the event occurred in a standard modeless dialog (the - // only example of which I know of is the find/replace dialog) - then call - // IsDialogMessage() to make TAB navigation in it work - - // NOTE: IsDialogMessage() just eats all the messages (i.e. returns true for - // them) if we call it for the control itself - return hwnd && ::IsDialogMessage(hwnd, msg) != 0; - } + return false; } if ( !AllowProcessing(wndThis) ) diff --git a/src/msw/fdrepdlg.cpp b/src/msw/fdrepdlg.cpp index b5890279de..c50ff773c9 100644 --- a/src/msw/fdrepdlg.cpp +++ b/src/msw/fdrepdlg.cpp @@ -446,6 +446,19 @@ wxString wxFindReplaceDialog::GetTitle() const return m_title; } +// ---------------------------------------------------------------------------- +// wxFindReplaceDialog message handling +// ---------------------------------------------------------------------------- + +bool wxFindReplaceDialog::MSWProcessMessage(WXMSG* pMsg) +{ + // The base class MSWProcessMessage() doesn't work for us because we don't + // have wxTAB_TRAVERSAL style, but then we don't need it anyhow: as this + // dialog only ever contains standard controls, just using the standard + // function is enough to make TAB navigation work in it. + return m_hWnd && ::IsDialogMessage(m_hWnd, pMsg); +} + // ---------------------------------------------------------------------------- // wxFindReplaceDialog position/size // ---------------------------------------------------------------------------- From 1254ba26c704264940ead39eb7a31d02ce6251da Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 26 Aug 2023 18:23:06 +0200 Subject: [PATCH 05/21] Remove unnecessary code from wxGUIEventLoop::PreProcessMessage() There is no need to check the HWND ancestors because wxGetWindowFromHWND() itself has already done it. --- src/msw/evtloop.cpp | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/src/msw/evtloop.cpp b/src/msw/evtloop.cpp index cda02f3b5f..c5d2f1ca71 100644 --- a/src/msw/evtloop.cpp +++ b/src/msw/evtloop.cpp @@ -63,24 +63,10 @@ bool wxGUIEventLoop::PreProcessMessage(WXMSG *msg) wxWindow *wndThis = wxGetWindowFromHWND((WXHWND)hwnd); wxWindow *wnd; - // this might happen if we're in a modeless dialog, or if a wx control has - // children which themselves were not created by wx (i.e. wxActiveX control children) + // this might happen a wx control has children which themselves were not + // created by wx (i.e. wxActiveX control children) if ( !wndThis ) - { - while ( hwnd && (::GetWindowLong(hwnd, GWL_STYLE) & WS_CHILD )) - { - hwnd = ::GetParent(hwnd); - - // If the control has a wx parent, break and give the parent a chance - // to process the window message - wndThis = wxGetWindowFromHWND((WXHWND)hwnd); - if (wndThis != nullptr) - break; - } - - if ( !wndThis ) - return false; - } + return false; if ( !AllowProcessing(wndThis) ) { From a075830ea238a44866cfaee618b023b891b6b530 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 26 Aug 2023 18:25:21 +0200 Subject: [PATCH 06/21] Improve comment in wxGetWindowFromHWND() While it may still be necessary to stop at the top level window when recursing upwards, this is not related to the "Find" dialog any more, as this dialog will have been found by wxFindWinFromHandle() after the changes in the previous commits, so don't mention it in this comment to avoid confusion. --- src/msw/window.cpp | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 57112c8016..dbfadaa73c 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -7114,19 +7114,10 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd) while ( !win ) { - // this is a really ugly hack needed to avoid mistakenly returning the - // parent frame wxWindow for the find/replace modeless dialog HWND - - // this, in turn, is needed to call IsDialogMessage() from - // wxApp::ProcessMessage() as for this we must return nullptr from here - // - // FIXME: this is clearly not the best way to do it but I think we'll - // need to change HWND <-> wxWindow code more heavily than I can - // do it now to fix it + // Avoid going beyond the top level window (only they have owner in + // Win32) as we could find its owner wxFrame which would be unwanted. if ( ::GetWindow(hwnd, GW_OWNER) ) - { - // it's a dialog box, don't go upwards - break; - } + return nullptr; hwnd = ::GetParent(hwnd); if ( !hwnd ) From 7f1e2de12614a265274c180db0fae47c8643824b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 30 Aug 2023 15:17:50 +0200 Subject: [PATCH 07/21] Document what wxWindow::WarpPointer() doesn't work with Wayland There is nothing we can do about it, but we can at least document it. See #23778. --- interface/wx/window.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/wx/window.h b/interface/wx/window.h index b1491a5abb..392f1aa3a6 100644 --- a/interface/wx/window.h +++ b/interface/wx/window.h @@ -3773,6 +3773,9 @@ public: applications (and probably avoid using it under the other platforms without good reason as well). + @note This function does nothing when using wxGTK with Wayland because + Wayland intentionally doesn't provide the required functionality. + @param x The new x position for the cursor. @param y From a64004970cbea8743b54066944b702add7d9cfa6 Mon Sep 17 00:00:00 2001 From: Martin Corino Date: Wed, 30 Aug 2023 10:34:22 +0200 Subject: [PATCH 08/21] Fix wxHyperlinkCtrl::{Get,Set}Visited() signature in the docs Don't document these functions as being pure virtual because they are not. Closes #23838. --- interface/wx/hyperlink.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/wx/hyperlink.h b/interface/wx/hyperlink.h index 4e51d41d41..9cbf707ee8 100644 --- a/interface/wx/hyperlink.h +++ b/interface/wx/hyperlink.h @@ -164,7 +164,7 @@ public: Returns @true if the hyperlink has already been clicked by the user at least one time. */ - virtual bool GetVisited() const = 0; + virtual bool GetVisited() const; /** Returns the colour used to print the label when the mouse is not over the @@ -195,7 +195,7 @@ public: /** Marks the hyperlink as visited (see wxHyperlinkCtrl::SetVisitedColour). */ - virtual void SetVisited(bool visited = true) = 0; + virtual void SetVisited(bool visited = true); /** Sets the colour used to print the label when the mouse is not over the control From 8ca3d3bc75e8fa1b851cbaeaef128575fd8af0af Mon Sep 17 00:00:00 2001 From: Martin Corino Date: Tue, 29 Aug 2023 13:06:06 +0200 Subject: [PATCH 09/21] Fix wxTextCtrl proof checking functions return values Return true, not false, from EnableProofCheck() when turning the checks off in wxMSW. Also fix wxTextProofOptions::IsSpellCheckEnabled() return value in wxGTK, where EnableProofCheck() already returned the correct value but only due to a combination of two bugs. Closes #23831, #23832. --- src/gtk/textctrl.cpp | 18 +++++++++++++----- src/msw/textctrl.cpp | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 7c26308a14..41e5279bd3 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -1054,7 +1054,7 @@ bool wxTextCtrl::EnableProofCheck(const wxTextProofOptions& options) gspell_entry_set_inline_spell_checking(spell, options.IsSpellCheckEnabled()); } - return GetProofCheckOptions().IsSpellCheckEnabled(); + return GetProofCheckOptions().IsSpellCheckEnabled() == options.IsSpellCheckEnabled(); } wxTextProofOptions wxTextCtrl::GetProofCheckOptions() const @@ -1065,16 +1065,24 @@ wxTextProofOptions wxTextCtrl::GetProofCheckOptions() const { GtkTextView *textview = GTK_TEXT_VIEW(m_text); - if ( textview && gspell_text_view_get_from_gtk_text_view(textview) ) - opts.SpellCheck(); + if ( textview ) + { + GspellTextView *spell = gspell_text_view_get_from_gtk_text_view (textview); + if ( spell && gspell_text_view_get_inline_spell_checking(spell) ) + opts.SpellCheck(); + } } else { GtkEntry *entry = GTK_ENTRY(m_text); - if ( entry && gspell_entry_get_from_gtk_entry(entry) ) - opts.SpellCheck(); + if ( entry ) + { + GspellEntry *spell = gspell_entry_get_from_gtk_entry(entry); + if ( spell && gspell_entry_get_inline_spell_checking(spell) ) + opts.SpellCheck(); + } } return opts; diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 6f15bb6284..c46f40cf91 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -878,7 +878,7 @@ bool wxTextCtrl::EnableProofCheck(const wxTextProofOptions& options) ::SendMessage(GetHwnd(), EM_SETLANGOPTIONS, 0, langOptions); - return GetProofCheckOptions().IsSpellCheckEnabled(); + return GetProofCheckOptions().IsSpellCheckEnabled() == options.IsSpellCheckEnabled(); } wxTextProofOptions wxTextCtrl::GetProofCheckOptions() const From ae1bf96788ba87dc477f0904ec98226be290ec43 Mon Sep 17 00:00:00 2001 From: PB Date: Thu, 31 Aug 2023 21:08:02 +0200 Subject: [PATCH 10/21] Update screenshots of controls under wxMSW in documentation In the documentation, replace all the screenshots of various controls under wxMSW with those on Windows 11 22H2 (light mode). --- .../images/appear-about-simple-msw.png | Bin 18811 -> 9557 bytes .../images/appear-about-with-url-msw.png | Bin 20929 -> 9719 bytes .../images/appear-animationctrl-msw.png | Bin 395 -> 840 bytes .../images/appear-bitmapbutton-msw.png | Bin 1481 -> 1584 bytes .../images/appear-bitmapcombobox-msw.png | Bin 1127 -> 2339 bytes docs/doxygen/images/appear-button-msw.png | Bin 954 -> 780 bytes .../images/appear-calendarctrl-msw.png | Bin 3501 -> 5217 bytes docs/doxygen/images/appear-checkbox-msw.png | Bin 880 -> 1109 bytes .../images/appear-checklistbox-msw.png | Bin 916 -> 1653 bytes docs/doxygen/images/appear-choice-msw.png | Bin 1370 -> 2629 bytes docs/doxygen/images/appear-choicebook-msw.png | Bin 803 -> 1600 bytes .../images/appear-collapsiblepane-msw.png | Bin 4115 -> 4363 bytes .../images/appear-colourpickerctrl-msw.png | Bin 466 -> 392 bytes docs/doxygen/images/appear-combobox-msw.png | Bin 1320 -> 2615 bytes docs/doxygen/images/appear-comboctrl-msw.png | Bin 5517 -> 6625 bytes .../images/appear-commandlinkbutton-msw.png | Bin 1899 -> 2962 bytes .../images/appear-dataviewctrl-msw.png | Bin 1388 -> 5462 bytes .../images/appear-dataviewtreectrl-msw.png | Bin 677 -> 2738 bytes .../images/appear-datepickerctrl-msw.png | Bin 715 -> 930 bytes .../images/appear-dirpickerctrl-msw.png | Bin 1303 -> 1532 bytes docs/doxygen/images/appear-filectrl-msw.png | Bin 4433 -> 9605 bytes .../images/appear-filepickerctrl-msw.png | Bin 1419 -> 1767 bytes .../images/appear-fontpickerctrl-msw.png | Bin 1064 -> 866 bytes docs/doxygen/images/appear-gauge-msw.png | Bin 484 -> 264 bytes .../images/appear-genericdirctrl-msw.png | Bin 4049 -> 4252 bytes .../images/appear-hyperlinkctrl-msw.png | Bin 447 -> 779 bytes docs/doxygen/images/appear-listbook-msw.png | Bin 3020 -> 4747 bytes docs/doxygen/images/appear-listbox-msw.png | Bin 669 -> 1052 bytes docs/doxygen/images/appear-listctrl-msw.png | Bin 1224 -> 1834 bytes docs/doxygen/images/appear-notebook-msw.png | Bin 3349 -> 5060 bytes .../images/appear-ownerdrawncombobox-msw.png | Bin 1828 -> 2886 bytes .../images/appear-propertygrid-msw.png | Bin 4538 -> 6078 bytes docs/doxygen/images/appear-radiobox-msw.png | Bin 1487 -> 1768 bytes .../doxygen/images/appear-radiobutton-msw.png | Bin 1299 -> 3234 bytes .../images/appear-richtextctrl-msw.png | Bin 5587 -> 7928 bytes .../doxygen/images/appear-richtooltip-msw.png | Bin 3078 -> 3478 bytes docs/doxygen/images/appear-scrollbar-msw.png | Bin 972 -> 609 bytes docs/doxygen/images/appear-searchctrl-msw.png | Bin 525 -> 1537 bytes docs/doxygen/images/appear-slider-msw.png | Bin 591 -> 313 bytes docs/doxygen/images/appear-spinbutton-msw.png | Bin 477 -> 306 bytes docs/doxygen/images/appear-spinctrl-msw.png | Bin 624 -> 533 bytes .../images/appear-spinctrldouble-msw.png | Bin 393 -> 665 bytes .../images/appear-staticbitmap-msw.png | Bin 1077 -> 1085 bytes docs/doxygen/images/appear-staticbox-msw.png | Bin 868 -> 997 bytes docs/doxygen/images/appear-statictext-msw.png | Bin 389 -> 548 bytes docs/doxygen/images/appear-textctrl-msw.png | Bin 1223 -> 2377 bytes .../images/appear-timepickerctrl-msw.png | Bin 565 -> 1049 bytes .../images/appear-togglebutton-msw.png | Bin 1534 -> 1660 bytes docs/doxygen/images/appear-treectrl-msw.png | Bin 1006 -> 1723 bytes docs/doxygen/images/generic/rearrangectrl.png | Bin 5189 -> 4238 bytes docs/doxygen/images/generic/rearrangelist.png | Bin 3262 -> 2909 bytes .../images/generic/simplehtmllistbox.png | Bin 5945 -> 6203 bytes 52 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/doxygen/images/appear-about-simple-msw.png b/docs/doxygen/images/appear-about-simple-msw.png index 622d4122a6df07e07ffa74911b03226c543f639e..b0bc412f74320e88d7060245280a44800801ad5d 100644 GIT binary patch literal 9557 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 z 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 diff --git a/docs/doxygen/images/appear-about-with-url-msw.png b/docs/doxygen/images/appear-about-with-url-msw.png index a70f4680bfbda690ce4dc0d253cc9aec188d1eae..776757db2f9d213a8d55f16f458458311eb37e94 100644 GIT binary patch literal 9719 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 literal 20929 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 ZqhEk8Fb~2nBc1>N002ovPDHLkV1g2TxT*jE diff --git a/docs/doxygen/images/appear-bitmapbutton-msw.png b/docs/doxygen/images/appear-bitmapbutton-msw.png index 0bbb75f4f0a51bd457796b14cbb3c69347300658..790cd2a016e0d3f650fb184a5d4b244dcaf44eed 100644 GIT binary patch delta 1568 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 XPMVL|BNB!G>jCUeI9OL%UWoq-#HxgS literal 1127 zcmV-t1ep7YP))BCp0`?k&dxy$pk z$o9R{`?bybwaN3s)%>x?_QTcvy43u#&-<~<`m@OOt;6=W)BLm1{IAXXugm(f$n?R| z`?k^ht;zYZ#`CMe^ta3Txz78!&-=2?`>x3Mu*LG*>t8WCx5ul~`TT)kFcgkN@nZCzSlsUqB$BCAI2|z)%zXy0E|W+k zvgsTY$rH?dMqeRNgmM%`Q`9|%k;0E*RS+hODU(S+Ihv+9nkJZsED4?$cu_=1Kpbtx zju8X_F!1Goxz@lT>=2fT7aUbUIxf%x0a@d_gexEm!LZv?*=3-T7{h7jrnC zqR^?=>rEE>^K%T=?l7#B8hh*ox@yl3P}_)sC=3I<6a07U%5BrQY43lBb`Ui~x+pMs zc0`yT+h8E@5n*HTCWi7nM#cSyIZkSf!!X+eGo(WrJ75@xbd!$34jA2T_SgY44o%E4 z9vDDE=aGuJN%n9UF`p+v1qQ&sJ{VklOu{{dds}%-dtoexsXr!NhT)JVMhC^m#E?1c zF~9cQ=lAhB@))cvj1MmV2L57A%)fxke?okX3MKe0cQ2Hb1w`kz?@%IKu^ScvraIs#Z?78C%#+nF#}+U!M#P9 z7?{bmxT=7aj2Q})bxf+oJgdeurZFGiC>z794pYCXI86Pj;xP5Aio=9g6@UaxXjNgp zT#L!Ss!Ys_6c0GTyN`Mmc1>zuR6ut*S)6Jm`{soOk*0; tn8q}wF^&24#C|XP_-`BYDKU*{%pZRdNdfmEfT;ig002ovPDHLkV1ngDbnXBE diff --git a/docs/doxygen/images/appear-button-msw.png b/docs/doxygen/images/appear-button-msw.png index a05f23269ef4aabbd2d92c447965e81f5e6654c6..2f412391839c73ca7be352b20e9f94851ba2cb6a 100644 GIT binary patch delta 757 zcmVQ&Kp4j# zy^2$y&_KaOBs5@Y|A0XMfWR%CvcA(nra}idM>mH;rb7RNOkED{4-mQ*3>BimMTFM2 z4t5FQ^c`$tNv^NHc}>(e{Y+0Uy}Rdo&yW1r@qHh1%|0)MI_ez&bWybREinccK=0 z|1C(?|9=#0fc@*tF|Yy(Hk|(XXeFPS7$~P8?DHPA2U@iP0F`QZ5Uk&OXE(J5%Yp;X zI_s@+;ZyKq42MJhE^bF#yQ{5ik;N%_+if*veV7mu`75Cjo4Xw?x&kF)dn3c)FfLZ` z{&RJ8Rj=1S?}Wb#mzS5v$H$Su?elMpO|J?+nr=;s1p4>)_ovfo%Kl`{Z|y+Kb=%y>&QSU5sS-js&R%rzE= z%0p#CnHd98n8+w1V{9pXyNXnWq^ex~wfRQ#^V|1U`a*=pWBXJl@lX6+692@1INUWf zO_fDOYX1YY>YINb-d#XPQ)KW0yAXe9(&WZ%&%A#6RrjJZZ-0pgr(JgYwGY2!XzhNl z7vireGRR+X+Y6umvbq#E3U0v7OVskT+Ka2tTU%-4G zbUK=*w%U!22>#yWiOl6N&doUirK_|!Tf`7blL+DB?0yeQ6{~J1P)(!B zk~`}^2WAmlFkABFS#}6pa2L0~IJsY%timB7n5L>K&3{%sioZ8`GVc(Su9&J&ND-1I z6;{DH0k(u3rdu-woGJ*;OK-Uqr_=QE@kMqQL=R^-LgXE~1(Ajb?2< zlD`U=rV>DffDBx@ijc+dWbEo}(Pu>n7p5W8I?f6ZynM96LU<8zm1EliF$`Ie>&@C) z1b=Tb0DrzPLCS9toZ*eB0_MtPj+EWqGRORsOk;+d&=JOmOT%LEfsAP#=C!hjtsZ@q{MoJul3>DfSv%v}E z?0Q9CW=A1Xay!Xe{?mLp2u+hDu~y%X;_toZ0)KG~SuS1AG$i+l-6FcaL}lCsFWD@W zVJk(hrw*)GBCL}C#h$-mYyeNAPEp?RcOn z&31EhXKV3z|Iyg;qsbEVNn%|TYk)+l|9=667L{MxSmmid`xyH)N;`PWxwmgj$}eDo1`Sz|lIzoYBdJoM7VH|Ae_y)-xV)&Ct~>Pz95 zFW#zFE+iT5u~#fB%zw}y^t;BL&%GJ5|NoK4UmXrRcBub&#QyhV+4k|k+g>m*8^DpZ z_cy{G*uOwH)IS*Lu|pVH0gT6?*ddIpKORNm?~wQ>{)zvuvB=ZJVTA^(00000NkvXX Hu0mjfhosw( diff --git a/docs/doxygen/images/appear-calendarctrl-msw.png b/docs/doxygen/images/appear-calendarctrl-msw.png index d24e183b4bd01dac2d826fcb1e5feed0285cbd0f..a785d84f96ec3de0d18336dbb1a051d2e0b29474 100644 GIT binary patch literal 5217 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 literal 3501 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 YDy_lEU}5`oU^&6y>FVdQ&MBb@0DQ;>5dZ)H literal 880 zcmV-$1CRWPP)6w6qZXSZn{F))4>+Dus{9yIZ1v%_Tu6U=F-yK%F4pp+S2Cc>h|`=-rn}X z!QRo)!G~ot=98174z|%*rcEz4-7*Oqic@W#fj!>*{nvLepPik?>{2BZs(i2P`^=DF zzPLCiHZHib(i>3aJ7uF8kdYY@%+_Ai+0lB*pjBvpQB|5@mS8|VvhOyD(%~`wTy8#UM$C#tR3f4Ss)SMyGUV=r(-fInd()^|pFP zs(89?+hza>_cm!G^VQWA)L^k^Q?uJU779$BrMZF6q!vKJ^VV5Rqf^`&^mS}KR^J`F z`|=^|Xm3a6>+9<}Tj3_;*|bo~Hapct?wd_t;c8U>yzKh#Rc$leL+q|!(rAf=x@#pt z;Y@=KPN=Iyw56%uU(v=Nn>=T}x-I*VS-9O$WTiC)Dwy_~iPirDx|&|TRAQ#7ZVVGWLN+Ox3nIh4d^r!y_(+~R=zC0x{&!|={N?pHrNOZG!r7hPTg%;*dbYqi+0c-%hsR7a%3yo z`y7Px1cR4 z++h`e{n`8fZg1X77!;8ajyiEfW-=AB6h%=L%my=rB zw%s0FIdxF!m!+A40!yx7E*04V0MIz^(UgQchFUDSa{AyJhmGL06p>`k)Oi_~kwK1z zZ>NvQk}DWFXxc7q=w*H32)=Lkc_MsbLUl?qZQHhOQ!=V~RCDUQOn7$vllNwh$CB$p zS+y0~Yan=@PU^4#i1jiU2Wg5#woILuaZla3eH|cTERFLkQs855$rVl>l{Wv3)$8bu zTAX;MTY5*yGAhP?qC_-#uO3$%M=u}ft8rMh1-d|ndTHHOqv_^xU^d`17^~N*r-ihn z&&%3J@A{8-ZeRal|F8CoKf^=NwMMI}0RU)SgMv=al?+M@-&f1RmIfME1=TNdREdlZ zMi)eA+qSJXbYaUGks~{-Q}q z3nYeN7*++tRYpwIW+Y^qZOs>GN{+>ZR{)mmyI|006Q?83z`C)-~8B3!RDqeJLZKOu1=%HX5q8NQ%!n9e|4cgp9p9-?!~H)K6Kd5)6B`@#f4-^X1Nqmmhwu zCkYAQidh#8mLY&(Sfjf&@TAnZDyX&!qh%q%Hyf>L;8I$$9CulX^)j@?U>Xq&OO3Yx z08nhZuR=n?jgQLrO^Hfc+gQDhPL)VE0QZw;$zsdN(eRs^6I18qD*igya&$ZlcU#5B z9BhJNL3iaN7}jVREJHYRm?7PvfxhF+HO{kX#Wp3Q>a8g1z{Hj+S}`SXi>#AM&U8hF z*FLmjvK`V}jOc!+F@e4Bkfcy<@&o`~YXsLmUN5r4n$Ao}D}JbM6_0sSb0Ik|G5_}p z9zS_{?=FvF*!^d__kX&YJgD%&KWH0o{y4kk4#)^?ULA=2TySdm1`mw9mM&@u8j-8vR>;L@RE!f`q+5f_xn`O-mA zl)b&Z;V|Oc2#({|u3ZxZA>+UhQxl=(_V)J5%8Dq8%gf8*vxkR=nx-j=!f{;o;UT6V zqQ>s;@87(6Gg3$ZSX*1$*x1oRZnmxV$>Sc_%{4;c&RNwwBOmd3iaq{LX9w zS#kx#y3j~H!2g?Et$hf-Z`(?3(P3Ov&QZ&dwL9q?1^|xZBuNrQ@y(kz;j>FiOE+%ZKtkq_=)HBcb$$`a)xHm6CXklJ0clwrkQZGX zkQZGX^5sSQw+`%xwGiadi`F>jMk>T~!FB|HZ2Yu>N*ODuBXxn|HV=D6G zMQdB`9j=H}G;422^8<1JbfMAT5gn(y}-pEsF!vvN-$)?l4PT!GYmI00000NkvXXu0mjfMyojY literal 916 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 XtvH;BYsaqeUjpD@i?DfS<&*L^$7TNS literal 803 zcmaJ<|5J-`9Dlaf)Y?=|zJFOKMKSZ`l8jc?v2xQlxy&TrkK<6pP(yX+B;{BNBN^4* zgp4jtE9)6;p2>KYrf0d8N1A)++tU~Nc>V&fdwqG|y3uOyvYx}5!Ga)&Bi#sW0dY$7oyNf0PV6RV@t!PCP1knXzQDoA|c9+uq zgn`d?_e#Fe#diSZ-|c$?2ltp=DQ26&U}*R%oic%u72q%F+)}j1Uf`6g@CjuCnqO{A zh;&*j~Xa^LSOUk(k*=YD9(-uXK;bRSN7QE{ z6Z)aXu_KGz#G_2%&(v1ivu%(>aqB3=WciYwWXB4Gi*hZCqEQACZ97f z9%1WM9e=8PmLa2+w|e;gPSkfSPrK|JtX?eh$*cu&`3`!;0bgNsjI@s1GcY`t;hk0kCz1r>@MOIV@cuyUCm$I+0&A#@s)PYli!q``UIs>EkeR9uH;Jd_MeQ^LUxR f0-}3x|7&eD&Tfd2%iy`FcZI~!649fm9q0c61>>Qp diff --git a/docs/doxygen/images/appear-collapsiblepane-msw.png b/docs/doxygen/images/appear-collapsiblepane-msw.png index a29ec3b3f35ed37a8408bdbcfb9d27c2c9ceeb75..ac49cebb2780cc9ae432e848e8132cb3d7e35fa4 100644 GIT binary patch literal 4363 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 aeww1+W(t{qphdgg0O)ENX;x@BKK}=-b}|wG literal 4115 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 literal 466 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 literal 1320 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

UJb1G5f4`1W`-GHlTOt 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 literal 5517 zcmcIoXH=6*x277ZL7IqQ01HSFkRmm7B7zhF0Vx3@5~@f?LJ&}j0s$LHix?3EDIy}$ zdzU6n5E5$WB!oyp2^Y?Hzje=9cYXKY{WE*7S$p1@+4H>5er6KPO(C3Yf^2kjbeu-l z^=}>7uXJ?u94rjSJu%KZbaZ@HM*2Edp%ZJ_Hqg22U)rfR0>Za`*Ab<>tFyk7yHx%B z`&`av@;KYZX34{Z*SI&w5kwIzpk~N7Di`=MaApn#&EyYqtY4h7 z{ZupxMZ{}{db`(u>L?#k!jxBqvHZxFR7e=I`kj^dDmMY{wtp||!mVo3TR{zQiNiCd zJ0A}zc^g~wDt{VOtI0TcIF_DyqShgs$+Ot8UEJS=ru5<@qzbyJJ`Q05+Aq_?uHED0`Z6{r)Dg|S$l;;WkdOd zPz^u3N$&+8xSEHBSPDY1=-kMZclvfX^nB_w+<^D)4N?kq8Y&8!yv-SD((Ypyk62%W z#F{_m_5>&PVP4gJfJR?6^Bs}E`C=6WY4tOV4Y#>eB|`W27j(Qu8|kG*=1r8jq8Pd$ z?+2AbADlOA^0=Oo%iZGBPWLfdK}oA_*KmXBgW?lG3rL@vyIDM&CAE)+-(Yl)6W zCEWFK#dLMNF(h6CvC;qd9IaON)Y?yFGWTu*jTYd-TBfM<}yvg)`)1)chg(dt7zOHnpQf_hp!> zYuUC7Hg_`maX_RnsWJ6)dTYTnKmUVY!|n7RHtojS;4dHhGN&^7&2N1mh%Vlv$LS3_ zvVz_PQ&VUL(sT&k`o2GjN4VFcEV+QWBOj1gpzk$Ra?unnu%Xi#=NjdCR?zOnDsMbu zt!@`XUp^qVPFotO3r^#W9WHN%?4prw&bU{EE?0K=zcp@K?2Za?~JOg>M8d+7*8mX8xpCDFFS6-qRQaZMZe3{3dff=Hr(|6Dca8=3R zoNPa9l=N5z5}qu!p_3Cfo29@y^;0u058eHY_9O;?GNq)vUJ?gO_$Qk8!ndW*^BRN} zTt}D}&>1;xHKi>vfbPK9K@NLkr8G7Xc-a=)!!s3JA)3GM6$4NYK@UVhYai2m!dO3a zoCkABW*o5Jis*q*wfRU7l;s9&b%brrFJ;7KzUGuEOp>3X;G$oarujs$GCb+Xcc>&` zzqLM52Ioaw1COVf4fBKG>?AANoL)Wpq4U2fD{dU<+8mcoXu^cZ&$KLzMbh=IQtiR4 z9C>@{NG23;6Mz4--Xr#Q%d2(W02{7IqxZc1V2OZ?TrPhn&dc|qbiF-C;WqtSO{CXM z%p8~Jvv$bl2TKBvY-fr4#dm5$s3JmTKD8GL#HKwF@DV{ek{|7L*s=#W9uWQh4bwRt ze9IoyJ{B`ZZG^=kTa~z?ML(j9qgNZ+o@32F8N8rZVtt8p6V&?g=pujW^3#KK;> zE&dWBo)z@h(nUvwdBClAk?0WFoc_7r27RpC`!a_Ti$9srD1WN9H6G!x)_&Ra&&0kD zo)pmE{S?t2x3@3Te?tlAabJrsFq_d@ydecA=H8tZ4x~?SSg@;`o@iPey;M>x{EKZ9?HX z+Wljo{EXfw_WwyrZttx^klL%n+u&Vs&nd_!2*q5>;hkINp#&5igyu&q;ZL!HK@*CZ z<$W>q-vzuOo*0={v=`5ufEu#2 zzO(Q5`6Qy%fl9}7k9ygd!o@BGa@BhO?<2W{&_D)4hxwReP!H>Zsg_)34)34+Y2XPt zrzypc=0m(wE|ix$=!xn0vzQ~?b9<~((m3-K)yhrTF80Ih;@wXgr-~D?(kT5KA?K`S zYImMRT#3e@4Q^JYmK8lsemh*}E41*h+S+k`CT!q@R%F6i#WmR@sv$4z}p=)EDOdSzIJ9f%xQO!xGkb z@+!;8A@4#{21)=cV4u*PYYjSz0LVC z(K5JWlFkgwg*3n#8zMYENGB=F=>Z`xcUsmAsh z2&e1~>P7Ulk#Fsau3ZJax-lp|RAf=yH98`|3zmD%u+?SXZ-K&#-n`^{AeO~`_y9Gq&-J|?adD!H^nnIk5Z)#uI!wbIXz~)99Q;C@{cg+ zj#6Ri8>b|l*|`_5uC|YaRxZeRiNf@j99WXio{8H{eN0|9R1#8+kVCNP8;Ce3=dX9& zwH&uLfEca)q>8S^j%BM;G2em-)|29%c1Z;-c9;?ySR;i3|EO}N)HGjuUoGyQ<;Ze{ z(yJ1eUisG*hI7^$BYqWE1yylGKs`?j&&efoYFZ!XO_dw2=suuJNZ^m}FPcJvlar;< z1$D{`Z0+xbfq#~-%n%CAhA+TMBK%OPx#{J zV`LhKY;9sf4q71LBLZ~b+uuM=G~O03Mfs_SJ@|st%-dNIc%s1YkZ6G{d`fAQrb3MO z4$t)+koW9*Ll0&$CnLAp`D2k6)}GVWvK^0R3N{%%zGdH&6K zekzZ-EdTUKEyjjhEQ18rFHllrVmdb1e=2u>+W6jjJ1D&Wj``g& zC;7GSRz43g5{T_=(SPXnN@7|DXJ-`5<>w5eP8$}nZw)>SqA>$a$NLd)?Q=U*Yke5m zZv}QR@O=5G#*XN{h)k!*TdCYr@IOb$b&T%W%{sbvJh3BDs^mh;)!}~CFtEcFQAE~# zffO~yP89tESb8K!q$!qKREGMMU2&KJl{uM7UCgfebIJZn> z0HfEJwg<4icWa6EeJ?%Xrau8fpA>{w8eV`TS)O<48O*`Nho`vbsNhX>cLMuemh*?M z$RM(G9{;4vv-}UbeVw~Gu4aZ^0HrFx&X@dQpslrk8QSY_@v09XskZgih^to4URySX zUyVL`a;>%rGYxTQ1%!LL*+Zk3Pk|Npq&;UX<0NBY(`6#FFfqH#aroAQdzD+<2ni;| z4z`uX=&OSozbm{AO+m0~ViWUasO;n}HxnDm>e@gW-*@Vk_^f)y}r_B<^y%qCiunV_w*k5A)Q&E87G6#=VhDG?VwsqBBRjnx(sieXae`(%Q2?`ARGrvtz_q8Va&{jFSw4M(UViWH4PR89*^wOqG2hahNo z_b0!U+1$m@dQ}&S1hUH8B{7C)<+9(vYkC~~Eiw1YJAu9r__9bZu*xZYaOi6UTAxQAxf4?&l5c&+m2Wd3XR_m zkYXRpkYbNZ3*M7LvVe*vfwIdQwZS0T0iV`m6r}$tNM`*oTxDl$)BSK?cn*mDO~YKP zq~SOjbu+fzH`i!;OH<7{c>zbjZHEx;a+&x*X~t%~TR(5)*=kB#7xDF|ReX|s%&ZTA z@EgrSM2`6R=S_-$qdXGdARZ_R9i^~oNE1`|u6DQ`0x$L=5!k z`DSAszj61c9c+$NoLTdRT-cG5?PK?lZY}6 zGPpvKI=#{hQ3DmH!IohC&mx97oZ59%n8Of~SS=Oh&i>)U`t*6wTctfB@2IoT7G6Y|I!yMc%!Rbvmvvr<&Fo&YJ@geb$}O)e5~(O`9?8*sWo zctyRSHO3|kzN)Sfw$(@tB`q$PHTXdgZ_li%7ii@Q4t^yIUvc`5O#rr|X14IYk>&W) z_mT4UY>8=>;DCiMTX^0EFdfJNAKZ^7@%BJ3?pnJ}-g3SYahvv=1M!~wFo-bXh5j_` z=h3+DeOC9%G{v=2|MGp&pv5is1$VPX2vUv^GjtBIMBxM96VTdr4u4uQo!B=uSKG6= zt|Klo3StFM?269RWlxjhsznI$OO#VuKv^Ogv0Qh!8Ki@QO%V0?^p*3e@gnJufa}nl zdRjHkb1$um(viW3PpeFP19n#iPmq^)^)^p`B74*k^&ac5S~g*-QcN7V1{K6WO%x0F z!)WeRl=FT;IP$4&p zOOO`F$@@jVo2+|9X>&1@=E|_jUnL9MIh74+i0v`N!AK8LXFuKEmgQtX)SmszrP2+4 zp;4h<#k3WIg?0jMxKC+3_I9ozoR7V|vtYSnuZ|NWaO5EXF_RxREgXVd RkDgiSj0{ZmOLU#1{|n^I0doKV diff --git a/docs/doxygen/images/appear-commandlinkbutton-msw.png b/docs/doxygen/images/appear-commandlinkbutton-msw.png index 228a70a75c37aaf8375a93dc748d7ecd8beb7a89..b5d874dd2b3f13fab512a1e70bc271f33cb8b617 100644 GIT binary patch literal 2962 zcmcguc{J3I7XKO~Ek?>xBNC}dw(JZtmSo>2vc<^W7|qzmGIp|Nh%g~*_*oiDLYZNd ztq4Pw7?CX|8nXPndGDNe-XHI;_s{#|e(pWz-gD2r=id7{H_^;Q|MZCqCjbCAea8T1 z0RSv8rfqZ_#KgR6xB*jfJ~Du#0Dz19Phr7JazOy#Bf@$#tPOAFFbQ}(sSdnU!arQ#ex#p2ex*6G0dY*c65iABHFndAKB7<9P#(}@C z@pQ-3n2GBK7E?0>;YvF7wl6d&AKOS66YpH0PYe2O3-}GdK|aQnsig0*3*6U_F1M&+aZo6lCRVohFHM^bu zKFl#@wD~W8wcm>Duoow4XF$2B{q48H;(KFw-|wWpHqC;K{NR7;`SaR$Qi5o5B3NgC zx_R5Q^Y5K_RavLmnQv_Ujq-$Ko{or^x8@>eTSpMWPmB~pzJ?_`v=9f#fYzvD)yHE- z{4f55A-32EZwj9;?cYM7!$}?c*Kj3M_z+a|h z`cwo|UmclZTUNEfBRwRu;U!1eHNTvTezuEOOzIIsy%ZMfHUsdX?EGW;Ep=EEZ$WgE zm`s{*wK3PqqZV;{p%b{TNs~c;X$45Rb=0m&{@VNIU5_mm8$6$R+M0nc1_9Hs){}w- z9PNtN?n#*>H1dNp)Vi9debTm2apl@?yzH*D-(}Cu-nsj1(qBx0bwY-#G5m zr{_oUkqqI+*eUx;u%0wj`W*TSNu9`i*hebg97ZdwW+1aUw)v!QdV9hpCAO2Vd;3(? zUGy!z{;f+&#IR{XLq8+YIC(3OStMzs|Hi?uzc8Icj~0#d2!Fn-r@!e(1Ob1ldSdT7 z*k+~NP6GYb1MRVcf%IU(aCm#g=93$aIcVzg?9VEO1um?%GYZCA7}s586KrHJufiYh zUO?GK#y+OdebLwb<)TsM}>yhqape0o{8awV_swW+i#{x z$G0SEt`5Fsf1TF$T}aMFSA&qO$|r58Wd1Wxnz>|65FbmL`h?EHO}f}3rW4|SBx^rE z=oE3JjHoyE@A;5jy+IGOZ#SuxjZH9D@9-%XNdG;eOj90zC6>F$cezPFG-(3a z?32ywt0VVIg%Ssf#MXFQF?bnk=)1F?$ifAY07?)K>M(a)s*EtZtoh{wp|hwj;vm4G z;FKweZVY*%8( zFV)quNTEOQ8Z6#};NMG;wC0yCI%BWc{!KQiqDU|C9;Sp{2OWxmxZxj=A@@77d6S&h zZHF=4s}?s;4J0Q$)-~2NwJbNTne#&74RMY+zWQGvoNLFh-T8=p&6x_JrUctcF^5iD z4i0GkP}qPvXR691r;g=>GTqC@fVXm<@{ksq*1l6uW+K#SfhFHv<4ApqycZl%BvPEOQ+pW+7a|{<2!&i z3>Lf9p)>Q$LcEAVG|z|Vr_1;mu$AGNu9|b~K>fL={+Z-Co)5!|j^5hhK19nk2#x6h zw8SC4H4=#d6!m-~)WT1`g~coF)XH40g&*W?cSURJqO((dQ^~xKBzAoYU{)O6KC7}Z zmL#LE63tuV{Q#gGdv@sYlG)C(QT@GJ1u7fo=W=<Tnsa2G3TmI$=es<6|E$GRnBwav>3ZORy`Vz0uJ_@}dS> zTC)EQE&j4fTxvcO^k!u7x~l&Q2rwh2e2&H>|D5j;Jf+@Q@ILsmjDIp}Z_Sd7XrkG+ zp|-wpwV-BQ2i;1>NVQscbTKSJs5IMQMfaJgi-i!bTZ6SMG`tgiLmWN3)b#ciR+Hr7 z@2<`JL$sw|FFmqO1~Xb{4-X325nF9@Pnn%Nai%1v_m~fOmBABeqo%tRPSfTQ-qUiP z*^r#SfXOP>5?_-YopjtoR)h-^XZ@6+0d+axhhO50MECsQ(aK+5eu}DdXjaFp=kU`G zp?T=->4u(io$fNO+8rO$jjn*{i9>D1WyuSNO>yz1NNVL)nQfD5RTCY(d~J0`yBsMX zbUkNoOW<1CRijyJy;_ES(N-pOF=jdbFdNx)nlLWH$Ynp%Xs#ZY&7JZghL@=KQ8A#w zX2GsOBWo#g<}9!lZ99rm`&@E7(n!(d+r#JhzI&oX2mU!NXIEfw54%0>rBs+KME?Xe z=K-z=5D{*db)W)xtgZvCw@D);?)AqrQJ_z&C5INoloj3Br4t#IJrwd%z6j`K37!5W z_EW~Y$u`0Vy*qsUBbanCa>^;w=ec599hu7MZYAl(lMP(2(tz6g9D|e~<-2qiU>~ zwC)S1l;`~(a!`AIhk6b)vV|ZbgkYw>PPTB6G@g)upqy}{yC`R1H<3)#wcOtfi`Kjdp-q&LU z*j7_3S;R)>-YQ^E!yj-)C@ko>F!#+SHgT3{b#Q=_f*^=blxXtvH7DVrJGsO4uBF|J zWlG#k{#t1*&-!!EYo)b-9{#JOXIj)>O}WfT^nP8t+6B9+I+N$fNaX^Ir~7uyavcCz zc~b5U4|5`g8fg36q22KdY{zlx=g_ITd+zUcF$<@MX{@|5HD=kM`~;rH+F@9ysI?d|RC?Ck67>+0(2=;-L><>mVN z`ttJf(2#KzN2k#6@ULuD6>Pxg=jY<$;^5%m?f30Fra3;SJm>W1^YioY@W5#tRTUgn z6&#GO@bK`lj6#su;o;%g+1an#t^FMd@_0`bu*o{YVukhH* z%gfW#)BF4TC*fBB+c_BCOx5|`jj^XfN2h7Az|73d!^6Y4xVW^mwDA4&4BbK=-%!~3 z;X+4o*Vot0&CSHb#IE$fA>dQt`{>ZIjP3mKHsfRG{OtDj_Ck=SX>4(?@W73bj6!U{ z6>N-Y9E`7QacM`VjYo{H(5Go^j1_FBX-9FDt@$1o8v};FuY&Qv|u<|%h5Pz)P@;hAX1aSC9!+cQ*|gO!4Zd_H%W;llOxjl=y}HJZ&aRI> z{^ZloW`Hl>?Kn=)n)%Xm)kQqLv?G^U74&Lr8=HIA_I}>i*FP{lzO*wa_o3m1p~s8# zXy6r$wFI}7Mz5~Ev7>9<`VAX5_4RGuvUM7K?ly8;WO|sae0q(|E!#U&4Lf>w?&|B? zy=QM-w3eI}l9pok?Qh?=-%ySAf`uqCNTZ+anO6v;Mg)HCIr;Yh>A{{_OyJh|m?V_^ z3?h((l~@N4Ij~|}u3Aod#ZtMha`?#6qeq2a-?8I+x%p6FzI)rS+y*7rl$*(VCx*#Z zd4h)#3%SM2(BU~s+jW&!u<23Tj?K-@NqSX#&yL%^y!1M@pRAmkyiT7XJ%J{~&YF~W zPD(y;{=#sI^aKG4!#o$(gzBO*J_Im=04_0z(4$rcE?%qr)QF+SxLmcY^hy^mRW46n zSI$IQH*I9cN&4DRN{>twFss1kjLwt;=owvtRWbBT2>GhdCg|KuHijPKa@BIv>!@72 ze&fcCo40P=x_xIW=}G-}?+ttB?)x>kjzQLDHuUn{sCQQMOh^w;YQ@t-=RSB?EM8pu z=<&$N=vZ50EsgRQ#wXrkJ*>{1f*xwa5>^U(q4hy}?Owq|=oy&AcJ9ic z*IX)}{PL@>zxnpNk&*9zsBLZ_J!zgNMsj|lpMXI>;jNBO1HQedpodbuLKQuiK!tj+U4jod*O4oHrHN)L zda%j-PI`Xbj?)e`++e*;&u0tQU>2CSV<2Mx#<*Oy5`J5L`s~^Bh8@NFmzbq?ycYVA05 z@3}8$2kzAZrgDkor7VDAjhg!R{DoINuP+P-ZmQG>0Qnn79=gNyct_^eMU~|NixRXo90?94n{- zrUK9Sasz9)@lH@pPdIxJ_qGGv)qwO|F_c4}v%8~eZikiPSk;PCIF!fLLtJh=uP)&NOwjDr(gBYJC^?!^{+`Y#os*ZLp z9YCfbEqcgGrB+;(Gr@(X7k-<|98z)gQ~^_)9=@lbI`kA<1!L^HH%V{bz4L$G{p;_E zY_NoC(xaT|Bjl{;SqUyEJ!u~AM)kfuBLdG4|4r0eJN9I z(~CGj40&}Q{I80hu#z8AQZ)>NoK&t3APYjm@4E|X7-YT;hE`maTM7Q(4jmf+48kxF zY{_hy&zNz65m0?!Nd4t{qDPM&J<+2_j~+eIqeqXP=+UD`PxR=~qeoA|Ou>002ovPDHLkV1lt(2`&Ht diff --git a/docs/doxygen/images/appear-dataviewctrl-msw.png b/docs/doxygen/images/appear-dataviewctrl-msw.png index 17c58d4a0ce9addfedf304097e8a4ccbcdbcb659..0bbcb4be7688b0498df6c41088f291e583bd9f19 100644 GIT binary patch literal 5462 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 diff --git a/docs/doxygen/images/appear-datepickerctrl-msw.png b/docs/doxygen/images/appear-datepickerctrl-msw.png index 7b2e7b72dd52871d738915bb98707a2c03d348e2..81516df335882c073e16f0edfc962efa04e1d931 100644 GIT binary patch literal 930 zcmV;T16}-yP)+@2sXEDO2KrI)re&++Yh`|Up1Zx=x8^%{#jOLIK1mWW1LXxC(Fl)zjI@L6-TCE;%VDE!4 z3@yw0iyf=g>N9%r^768)q*|@Aiy&*q=f(Z~JwN&C>MA#09y87`^Bba-2t%(6ZR$H?tKZ%d6+Kr9@ zK$c|y0KjLpje+*CrOE&Ra@PQB9AqU}*CPo?=k)>!%V876V9P`3n!_ea@c8)1JDmdXZ?ssy z(;5=$0JJ7Vjz@Icsj0Eu!Jr{^X3&}tQ!eTyBiV%7if8yHKv1AbbBYobovd~Ow;jQt zaSeBb;HVA)F=YV9_Ka?Ff3WTnJt}=Y!*`px{m_zVYL@1^I?ko%ax#gc@Ig1);tS8O~WQ%dUr4*ml zW^ple>|y;}N)^#4>cmBU(+<*keP~Bp%xwp>CT1kJo%AK-Nmve>D8~M!lzV59O<%Jl zgb+dsOk5oYW2>g7YJ@cJZB7GGI{?<*2`H&ZMiR_D7%B**juotg<*0(+*hE z==b}a9=Ga-&q>`w!inW_IU0>Z8p#|p@zH3sTrLSA{eC|){eORjGhO`vlAS>4JHJ>g zL{VHU7KHoNuHt0czu1{vxidIamZ8YN5_9Tl?s9ohT*6CdVF$nva2Kv zLqQNSL6rGr{l)*YWbOFkDAmWo{c*H|!qE;2M>{C|0lc8I3em%aumAu607*qoM6N<$ Ef<))ETmS$7 literal 715 zcmV;+0yO=JP)M@9g&b^Nlt|1!HJr#2i2k?~arN-a5w1p!6pWoSl# zU0?FXkBrbk0JN~<(jl5JU%w|8WpqwPW?TiQ<;axu`m36ZHtOELuQQ!*z;K~}16-iw zf`kCbQ}2Z69?z(EO!ke5{62kFWpB{l{TZ2H^_Lt0pmRKMpAqpqbKjxXOQ!# zDvVgN`Fs=B6uw9C!;{i|%cdlp!5J4*=agt07Yw$gpPQ3UZBhL``j4z3c#Br*AAcSk zfARz$*Q#sm8C)0ypw`4gYxLTWj8=9Ydtz6;$?Lx4jVJgWi94u0am!#^{04xQcJ8$q x`P;M@Syf>4776JCSw@zTWn>vyMwZckrC%7)>ZcN+*H-`l002ovPDHLkV1hwIT|@u? diff --git a/docs/doxygen/images/appear-dirpickerctrl-msw.png b/docs/doxygen/images/appear-dirpickerctrl-msw.png index 9b5e6704b2fb71dd2efce5becb6f6588509a22f7..64c7fbe415be90ce8a67eb0a418a1e7d957dfdfa 100644 GIT binary patch literal 1532 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 literal 4433 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 C*z6_% diff --git a/docs/doxygen/images/appear-filepickerctrl-msw.png b/docs/doxygen/images/appear-filepickerctrl-msw.png index 0ecb94b14623df79ba8a8db9be0602d5a26246a9..6275f03eea03893154fe420ea50e93a1ed429ca2 100644 GIT binary patch literal 1767 zcmVen3OkNVTZs53xl`OPf|n)gWs84*mp8>rk7#q|Y_Q&xd{6&+T)L zv4ahVLqH(>VeP&JARaQvUI-sS_CojwvKPWfki8H-5}a-N_3PK|?X9Y+%UAPY7>!2j z>+2gE8}}{bo^i0(a5xNwLcyRz7s4e!e*Cz(xpB1DXf(RGxEKzHilQuEnCFB-p-3e1 z=+Ps`UI!12$Kzlyh+&w|!X7fgV9+uAk4B?@zaI{VqtWQv+R9fZJ1E7(VCeG-$I+{Jt*r!UB~ z!oSp( zF|BZ==oAAM#m;@pxeG4sB{92YqOI0RqX93KNUNJXsPXpIizm~(pczVHn?$V!J<-?# znp&Q%<|=1ihB7xgyas@2IFoo%qYvkb!BiLkE$yrNvww!0nSrU^eaQ4v!Zbl(Y_1m(wwI{BC zWf;y>GLsQ!^k`FDUDCyfB?#aJ*~cSzi|gc=PR4)Njh8BfnE?Ut1kvq@03h~&rf@Qs z=LHFXYc(8P+Aa5Ts;a8(e7Ah4+a_Kn+FBBBHuPauqbk<;Y=)6+Ige}cX}hE2z#ST+ zwV*qtkSoNSw5Y18slLm9pqfK#pNf)5g zI^L`7#{i&H3~U#R+j_Q?kG3bXXQybU(M~b2eWW>3KH4sJ?4$KDGYwwh+Fo5fy-h&Y ztqO|F*;h|rc&^nT5;#CS2~Aeg3$JO?wF6S01H2$<1)AQ5mnwN}lqB$AcoQ#G^4*?j zWnr$x(-kdZ8u>S#OgFLKKN z0|1bAdr9xW+3Q3g5C{Y)VBhYTjePP%QQq!ArfVRsg4H=&{}x zUV0YhT0BjW6b(JmtnTpAsj8m9t}Sy-DujI7cu-O6vx$ESN#MN{en-sOD_J!|5u|7; z1^^%nJnZE(*TwcLduQ5>m*NE(pkv&4GRSNbXetKrWa^kQ_X4uOTlPIZa|$C1<1%{T zrAoe$wLRQR48u)7q)(L3I7LG_TLwK^;R&KqF6)KYACHzGj5H}R)rQ#!hQ%eO+OT}v z+^zC7g#%8}eCx1hw=iBh6>H{WhD{-!AfPc>i*bc4wAD6b?LT1{&%CqMr?VcPiBWXQ zodIGL4NX?=w0N4@p=judhPxoP|6Wl}VAqxl_w;CH1T?R3ogB%!D%SX{QOfQDHG4HD z%4eLS(~vfon#|<^+%5rGZ|56X?KpJaY%~SLo3yA09Gs$|t2+v(XuiSghvf9fg?O2$ zn5C4ZkgSU}(6b|k6&NOyvhbburrcbWL1v?sB+;!gd}O zJe!|Ce`=paOmTjGuG|@R&sr`cODgQ1^|zu3Z&K3(v_|U}4eM`fe@4)@fq9~V_m!Cd;ibNug0~|{Go12?&-@ZkoQUB#VSo;0` z#>U2zCr@U(Mx&7=NuNJ|R#*R@WrD%r=H_N1k(l?by@S0*qtUx}@4kQk?!UYT%j3t7 zU%h%Y@1p-ZIM@q;@CsCWA$$bc3*jTkUI-sS_CojwvKPWf{sY#6dt5Dg8&d!P002ov JPDHLkV1oS$Sjzwa literal 1419 zcmV;61$6p}P)UBW000G2Nklvgg6o&N_eS^M5*(%X+r;ku_RPtb%8J(1w86B7FGIK45iOe9h9sAOe_WF-z=SHLT z9R)ml<{$g)*|Yo!?oFb&PAf!CoO0unZNwyQASnru1V{oT0g?bofFwW?pk0&%NCG4Q zk^os|tzKEJ6c@`I3p=2-B|Sc26k1NTv`p)w)kOm6re{BsiYRXDXqW5d#p@n_`^1ZH zS58WehEBNf#!K&csaabwTIHw!9hMfs01!l1D$#S%4KIE3_rl05Q(r36imreB9o&H= zKrsSD_nzEe^M^*t4(9%vqjkBiApwdPAbMS(d;Y0P1!--EMm{)akgk*=$sc!vd5` zDX>%yVboHP-+l5Gzkm$X#t9H6v+Dr0+m0`L1mwDwY1C@vRWX3Dr9odK(z!Ac7PsB97Y~@yP;c$PvWVQ4RAj{~UFjN(Dy3K>P$SZ4?y+06BIm zs7jFmMEg!M1vHgb)$|na@4g(zFj^IMVF&}n4lE2HY&#tKPSKYS4o(yRfg7rz2z>=f z3Pu1-ppO(;Za^h?!mSZ~1VG~XLpit#Hs*E{2uvG2hXaJI7f|6*ReiL;{7=S|D>E!I zaV3E}_6bX1R8tZ8%wZAd{|VJ|3KI#1*;WFx#6*G8#AMs8R_XYMD zEFcG&Q6nITLOvzvm4*5DvLLB2?q)Zj1_J@-+%^;7Bc6o=gsm5lj$RBb(l7v}6cK{h z)j7Bu_%|YU^v44bV8pW!LofqIfnI*#pS{REZh+v21Jokfc2hw5BdYp{9`u6|&R3FI zyP4I9Gx|(sDMCoGPmdTfNl|3Vn&@9%1}z5E-jNAq@Zn3@g*DH|iUu^#yT&z!3K+06;uJsNv`f0myIb z8@=Eh>m4?D!kkMUvt!{LoOcilFu*S?{3RL#M0$y)+dj!O8v@EdoJc&JXMQHBkdKHb z4+t&e`T6weiuNIEq9smGr2p}QNlicy3XeG!#G6$5Z@y=iBO=47)obg; zwfR^9!oT5n-7uNm1PEI{0&2A?wd&f&>YOM*(uN1f-}>rksMRc2%PZ@vGd@7}P5>kU zs@ICO+6JlasknbdOQ?AC%q}nFJ%BnApqK%wmR9KZ_i{h~wz^bUUd*p7>g4QS(fpU@ z|C^ioGyBz7w61Q~jTayZP@}qj$=xrVcXj&Z_cDcle%$ZU|M@}x`}+?+$)2MV zw!7ck6i{DS(SNJ(pt!b1@zf)y)3zi)dszGMFQ_Cy;*tPKfFwW?APJBJNCG4Qk^o77 ZjsS*2j(9MfaDxB<002ovPDHLkV1kaslp_ED diff --git a/docs/doxygen/images/appear-fontpickerctrl-msw.png b/docs/doxygen/images/appear-fontpickerctrl-msw.png index ee4841ef39710c0bae53202671b3cc5299b6abbf..d8efc3702ea0cdbaba5f2189e2659a05e143d873 100644 GIT binary patch literal 866 zcmV-o1D*VdP)d>Y)CbzFmd})2Y{HFHgo^wzBIrrS;u6dpZ zIRF5#zUl;i5V;nVTnkFB1tr&lQeawr-+y{~@;na_mz+@66pO`jxxBHl5x=w+-&1|x zzrVldIF94E_4Qv>IPdT8udlCz!C-H1FD?f|i^s>uVzIcjwY97amrcLlAB{%4ySouP zWKsZAf2dSn2E(msD;#!?U?4SR*S5fz*5sRTIzIIsLJEMt0QT@klN@R8A2#`OA(AC z2N4lXIMZAJOA%UC6A|$O3>~J!CPsABZarB1QQ!3NLe*}aTL1vAY1k<%R?d-$<08Gg;>?JE*D!l2q#5Nns|#i_z(H za3-ca^_)IYM-?N+V3eq;GKi`Z85UTWzLd~4>S4;`ai$y&^EJ0o$P;xCOpB}&_K?jX$;Q#;t07*qoM6N<$f^l+~*#H0l literal 1064 zcmV+@1lRkCP)v&o5XbK+`UZW9Vn!;rgM~*Z*>VcQW#%TP;y`(*?8q)NLr8X*V-!oq@S0XP@_nPI z47c+e&E4*QS9kyK3zLI`qu&XKn|NlpiQGhPA~&(q*>fz*)Kx>P{X?jhw*E%&7~qLz z=wJ?56ksBVEWLc^b8nq}-2>#@+Y!!LSKW2vW3M_^t<`J>m%B^`*romA3P2}`*j7(3I3dD>MH!#Jv=-Bda>V!v%kOBtUEn( zj)MOuf^M%H9STmnQFkn(7Q)1KyVY(tIY_J3aBV}cl|q=v z=mP}HK()vaG#a*T)zr#XC=;O#uss$MqA0~gA-#ZGK@<}UjZBOTldz6uyq3`tbU_OW zSPV3%q?5QNB$l&JH7zHB(tj8~N*eE#lL%{Oy>3}%wN~B?VIp>V6yl;7&!z-1H4oct zjKosiOrZ{ki)K+qLzUGf9ylwrx$ z4`o6SCX~?(Jf(Npn$Z#pJTcsmNE!cFR5B)Gi#K5`p`7`USRF8v5QvbN!OULZz9 z39&3qQ;VgYFeak?$l!d8%ru;77;s!lFj}IA;2IXFLi=bXYUok)gv`xek?I1J#2BGM zNKAJv!wHP}bjicAR88G2?W~3{5j+27fSb{`!)t;u&8k}4DQ>TXFtOKJ`?rvZl40DG z2@=o8$D*0guP}{Dt+KVdy%fSkO)aTv5zxAn{^x)X)vklfn`_FcOteh{euewlcRy}# z6gJnDt@S)C{^x)R8>@3G3%|&pd;;bKn^>$Gyp<`;e8U0qGhgSYzj`+- zUn)&Ro_syn#CE&WYC8A4_zwRY%jn-&q^I8KbQ(uT#{nh+;4}bI4wL`y-<|gl4*xv3 ii5}cUZX!34n|J~h)EdwYF#3D|0000p^ z{!TeiAy_r3MBJYJyKCdN-!Ckvm!I|V(#ii-96R4@yzHDb4@g|n*JBa-chh1^56~|R Mp00i_>zopr03Zo+Pyhe` literal 484 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 literal 4049 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 diff --git a/docs/doxygen/images/appear-listbook-msw.png b/docs/doxygen/images/appear-listbook-msw.png index 4c63b51901f7e82d86edf81bd6fd02d5c92d0fdc..5132b3dd35e8a6efc65f484eec88eaeb659fdd07 100644 GIT binary patch literal 4747 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 diff --git a/docs/doxygen/images/appear-listbox-msw.png b/docs/doxygen/images/appear-listbox-msw.png index a90d745e0154feaab88be701c769d7b4f30f2dea..979c25b567782d288b0f1e6a986baeaa6bbd2000 100644 GIT binary patch delta 1044 zcmV+v1nc{q1)KWh3Vb^a{una&E-x zYyl!O{vc7*2M^Vqjzv5oPh!G|i$oAK_kW zy+s-%mJte8?}%{k_7n!Kww^2n5uYZ`lS7l4ATgVeV}COua}<+RO4%W;wjNpgXU3wI zZ4a{fQ!Ep5yV-u3|Ku*-QmS`ExOaOZ%WQ`xGr^~cW1F@^Z)uU(T9`kVa!kF7X9CQ2 z^emkK753eJG25X@Z;&`PBW63vbojPTEcYymWlTrk<1>Gr2Ku4fD>0ia^mZ$|56epu z65$}qW`Eq;M}&K}TKoMH$g(uhOAn#epLczdv0K`q9;C9USvO1EtU%2N-1z-g>jUNc zEf4NIBHX{zlJ+Ixo+dREWptaSx^ij3yMKxK{1FdC}v+| zOI-%1;~u&T;anuJ6lrnY~{UM51XhNOB zKrE9@hikO%ywZcQ&xpwEx}@iwGiKMtuMD6Wb!*wYyG6>PO&j2%>O_`3b|@O4NQJAa zjDM`zb&K0CbCd>@R|a^}3fF<=L%30BK7>1g$bw=JSx^ij3yMKxK{1Ut9~SR7MAreF zMZ?X9B3yQ}@5v*gzddW?1BARiPn9`hJblg}6{fpDYt^5A%FB=8XnfgRC*HA^Yq1A7gekeX^I` zBq1wgC1j;yvY#KvKukXYY z%W~X0%jU^6j=p;|40-%G)^YLcfghx3?|~f@J_r zy1B}CQ8#2m=oMU?UgPV^^2TkO>{Ven>|Yqu2 ze4A|ZF6xAA=zkfGH)g|9dj-0D{qDkGJvttz#pd{Ujm-;#_FdEs*#y-rlh?Yuzc!7B ztHS8c=lb!h{Td&%yQ>xt|5O$aEtc&<_2Y+ORY@9|nZg;iEAgfxk(|MXt z%XG-cm?SLie_PDkc$IB2v3MV^vMnYK z%-~faS$_#x30W0{tc0wPou<<~FS9$cLN-pO53^6Q60$;8LRLan$V$jc$O>5rSqWJo zDF7FlHH`QgWErfDvk s!hdt&%!Pw2vdAKfEV9TxG06S}!3;Q0I?V7k01E&B07*qoM6N<$f;YKI*#H0l diff --git a/docs/doxygen/images/appear-listctrl-msw.png b/docs/doxygen/images/appear-listctrl-msw.png index fa828d512ad66aac98eadd22a170c62c6db9258a..30386f398b797902f97f4f0339e12647c9b27698 100644 GIT binary patch literal 1834 zcmY+F3p`s_9LGJnN`q?6DoazUN~yN-9IdDdB3@Z#9x>GW5hAt{k9y6_BS_6hNr^Y1 z5n`frsOadVXcR$%rd9UQdQ-|uqr2I<&$|1$=bXr-gh!S!*+ z`C=Wd>pXg)r!FETR*IaSWosjo57sm&t2tSqU9#bTs@ESLiSrzRm`Nfe=cJtLI+QN3 zzH4&$ z*gFyTc4C=WB&789x(aoEQMoZYES-vi-`?Tfb}eC>!kYGX0{mJd*P9#o3oaeJ#$i;r zP64LJX}Uh$3Fj4_&8LN}RZrGNmDlaa20ewk2f2}j(4Zg@$ake}-ruTlZjNevn~*Va z9IZ{il|P|N`zct+foM!8Ftt(rFM@?kG)S$gEs~GZG$kiNvR~JG6rFyeKkRq8B}_hs zlll7;tTXKPli}o?2iFt*XXG^t3}cI;_BS$eY0rGdn$wP4>(Y3J;vHL9d3WmAscVma zZ&<1^<*gR>Xm?tAGoR>3H>wed{zu{S#L1(`W!QX^TFz0oA$a@!O&?Jt4(6Jumxmn) zoKe|7*BI4fI}htLD7b#Q7}|x`ETRx2tg3@ljU86FAf2@xc66}PW6^j(%YB*#|7t?K zf$938p|gHm8dF$wA$4m7Ck^E4NHVrvZt0C0SY4D&4=LGi@yR*rvR|&aJfuYny}x-S z>ck+sIHtg|PBr2ehZsBaoQBI&CPKR=|5vP6BtdKXUaa%xW8D=@lhM}sL3TrP2>rNT zA824;>Wl8AJ>ryN1dHl2pZS)pOno`TI2fF{%1V zhH{-NI$9*?()yzt(iicEjB%QdRUVEt$mOL*jY}#13UX~Ubee$gVIKvCUn~?7P6>lW zj?p5Xo3VJ6;L&~+dFx{CnZsEu*DmHIB!ln#4%6in5vbbTR*c?ZoASx)0F?y2qQ&Xp zENmU)@Pg>g!O=lt|8Jo!!lD7n&1cKLOPz#g&jsH8Kt!^+;8O_y+ZDZ@e%P2)cjhe2wEkf~`7^JVd z{D`&|@O+X;YRAx(V|Zu*#c(0t zlN1b30Bc-bG`zVeooce2eRB8%5)SA>hpRinzFNDHI<=7Ty&o`P8z`QLfJ#tfEdUVQ zvKcMFnh39P!as=23qJ`6HAPg_w6oeprbbk;_z+ve>C%LohJ) zsI|tT$5nAO&6g6Aq?KetY>94(&g{M6 z>4Z!2nbD160t|uc-*x{e(`elAx3`tVUaU=pZetSss;Myxaaje!$QTp_m`Z}f1*7)W z7yHU4l7V2ajsg{V(lmA^{nkh#|E;JsM1}$DbDeauEMD&9*B{Ve7_j^U7=3y$9C(N_ zNFL0P4#?}EP&=35pUvl>L4vBbgZuU&)abi=Y+)6c=-I>sE~Lih9vL9GjA?tT0)CbI znaTmAv+KP3x;I#y88z+2*@<7kZe-b0vB!?r>bPsdarkIeAy#bP2IZWvG1)pD z39X6r@I~M6ijq}jUG|bX1f9ZI(V_5A3AmPaQBe+DQ1lVfJRe6d_Lx25O0OxATjypG zkax4wLI${&nxu8qaoSmlDNYH~zF;F?8%;S29SSo}^G5YPRYm;}jUt0O4&a6gIL+zB zZDB9|<|F1yaD8(PTY%%1g)9Tme^r!Mq;;ffuD+=FMxXtvF(IzJ_J+JZGNK4-SNBM@ z`TJi5z>59S7p8;|ZJQVkhRD*9;3JV!>8=L0droE!xpzgTJ#ei3rEe~0fFS!F3w;YZ zlL0T(oUai>obP;Wbg0~Acn!J*KPaT}Z_-e5^yP4do27H`yJH)z@6uk!i!Z7f8Rith z(fPapV}xtjiq_MZ;p&emH7AW=WBnE9Bv-Ko|5}OTkTh{izXQM$O4-bv9+u+kUm=Br zeZ7`A+rAMLUG^_)=KY&Au|0x(bWK{Q>`!K&63XAp5*TOQG?7uJS;U}R%pVgmm~Wn) zsa{945Iip)p6cAq`aXtG=ZY4tj_7(mXRki*YN|0zK2_xX5J!Rmg~M2>>yofdJF@e( zGdXm?nxZT-TiFDu$^I&Rc1~sfcj>~^6swP?bP(WN<&J>zU?qv+_ z8klTa!d|1iF{*+v#f;|71pfv-Z3Lgu$E5>F6s4)Pe|-IfI#!}M2Lqn4G-Kuu?>O@; zb07^*<@yEbuNzb~SPj3iqH0XTlre-k!qe45wxE9dcyzC%Gt+i6otwZE87SI&^rjIP zUEpF@U@})bc9=2yn^ExL{bTa4{G)^#dGV5Px4C118ID*Jx;@$xM~Hv=mQ|o%T{fr+QC2ymy{#G zmj-wFGiYJM%XxQi01e#vY3Tr;I=qoE;2IhbeA<+}bf1;FZQWTLfIAy>ffZ9{VUoPi zC&woP-JoB(T_3gMlMWZ)Gsbzz5#!wkp3nQt^H>l<2|o`x!HX6=U9=d?2G!a31FCw6H z2)#v0hzLm}f#mVM^ZtqV!|a`N?m4?VcXoEqPNKP~9xD?c6952UHP8n=JV)xe`7qL+ zkEh)ne&=v0P~R2`0I>D_XEd2oZ2SNKFvI|K-!cq^Er<-Xv??6z#1N#^Rb|t7Fd9AN2-e^$0a#eCZwkpR}lF#Ebpnz5Ju|Fb~`6+0GZ_$NCN=`h; z&32?kF6hoJuLm^Vv9E-0@u=>olR_piO>h*n6*#eEfB~mRYMPrsNsG{NEV;dN1$R33 zttl6cef7Y_@C*MEP5k<+lBrrbS;I4?qtgGJnbh*==xEKN6of>xlE({qk0x~W%+HlJ zSJ6w+Y*Cs{4<5u;+#Hu91di1@wpL7O@iIoUA-w1&0%p&s(Ip=#pNU7fsA_?B!6o*w zf_qPQ9mwjHGSFpYLO{_~Za3cGqRM-D6`U3}HnYhGLvKBgpS+F#K@1HJ9?iY0*Oro! z656_y=7j5n5*C_ntK-LZg=9}^Gm5rucM^vxC522niGPMOMkaBT<4wt@li335;aid; zp41(u6({^pH1}lsHp~3>^XQ9#_}%HbxjD|FyYVj&s%mPUVK&E zB7x+Ity^#o9-0)F|CO?Y;tY-W0L&z*MV+3>M()Z+ z^4H=ULykj8%F0E4jneJ&usz=qcK>ACX!MWA2?lOcZ{EDIZSY7AJ1X&m)7fdX^RqR5 zjgYBZNW8QJbVEW#Md@_`eRH`N`nnbVLTTlTG*{N(n8bL4ps$>v(cd|%v7J*p@Qvq# z-A79Ws>Qa&wv56i7qn4bXPcPcSg=#Tfn!iSad12|&tF=;V>iW_9DgjkYyH?yE?sAn z2%Lm`MgUCvcmRQ7@V-O@LjIVPzTXkYe}EEtTFR^~_wGE9sM%qH5}&$7_>|{C3Vb`} zu@YP7`oo-D_o6Vt zsP=D-WdW!ZH0&iaXE%XqyJV94{1w zVT_J=-dfzbjP7jcs4joq?ZccCBAU9wJ^-NQuA~#@U;t_^jH~1*y9|`~sPNcgog#ks zvv=}l$K^vLoEYOshH_O?(Xy+y)X1WdW`z#^d zG@^#j>@=5ij&}ycD|;V+=;&#)gKkOE#w02&YC^}IYM(qO59}~Xvg<5RoUWa9SEBGT@ov^w2%`%WqOKE{0Iz&Jj(q2OcUDzpBLoz z7^8Kg<1*esTyvnxy`6kD^;mRYYl&t@v{bN@+o8GOy0a~zRD+x>ki3V?HH`%K!#+}Sv%W+^lG zT=bN#Cf+`vzHdy(0js*p&#iY`a0}(6AsSp@C`U`@p5@oydkjy)g#+$`AdLc@tBF4| z@wP9ws*Sa*Puw1tn=KmLme1EBX74*n5k zxjG`&lm*jxBLs~;{G z#n&bq7x@v5>ly0|^h2EHQaj~@2!O}Y4lJaXFR#{C2yk1VwU8`S2sb9K_AXl zQWmUwueQPD=m*GEyTz2TH5lyq@>TgE{GI5BXuKE-8%i{Xq_lMYYM>s4Fs2v^ze)ep zH(><@?AL_q5#ART29Ch;K1!wKw+Ffqv`>_9c3aO?3&yNkN#Xs7`0mx45JdyO66kcz zf_D72_D-*iSNW zN=ESDOp@4hb8Et@n#VZaiZwQ~T}|jMhxKHH>MPB)OXRUSV)*(yx1@x+{}X#aAXjYB zMj0)Xsh14(8dQ?-8!@Cak7&bIkE`nbwkZD>L-V&*##q)s?e}4rdTq%wAyIDY?ZUrd z>Vo6<-yZm|J*w8iUoQ_E-8e)oyh*Q&|74RL2?FL55&^zBWIq1VhBKpp5cArU&0Qd; zKNGN5cqQg8*N_%K_wU$vxNzy#Km=IM%@p{1&!qGE)EDsRTG9`JWEzc~WVJg|Y_ovj z*AMqtl+2&p!Ui=zuw-F;@W7g1yMU$6!74L2oLWa8SWq?MkS=XhI&Y)ZGf$bf=IhXt ziT=Iq4i%8WM$eP&;l#CR5seR%oDsD0!Y~nP`e!?Um*#A0eY=+;Kzi}BU&bfC3J(1B z9n;Fm9fzh`%KpjEY5LUqvql-_twFr!_ytBDYB0HUVU~xp06T7&*B=qt58<--$r+b{ zw5It7_8;`h)pnS9OU-;zs8a|LHT{jX4@!UrGWf9BK)%=MrJ^#VHak6tC2dK1*Vq!o z*uUu>U#_SNVqn3o&0X_HQy>+E!@v#+{LceLz>IIE$!3AUDALF2{&_g>)pyMvdC&|| zbVd?nG|K+GZ*;$oe^rdyxsIO;6(=EFC-0}+KiT!V=c_p@Oj&C55nzirPfQh-cjHT~ z{(1e)N+-Q;BpI+k`frRPltqlyBwdY7AJcMp0_n62wETUI-d%hZh=f+p=4bG&k0BLX z@ow?MXGZDFDZ_{!o&-TDX_gr#+Z>0m{T45ANFz*oKEl`ekE=qEFY&-Fj*uCr`|dVV z(|`8@eAwjcTBN1?EEycRBB!zY88^yUKe8Z3zVo$+>Gv?yCvu=etg)*H?2UiLKWFv7 z`P}E{c=__vy%!O@&WbiRGXZw3e9G{znr?>$pT+Z{lR1CQQ<`~3NK>G&c1TWOAX`P^ zb<|(OKV$D9|Snb<7iNzawS1-9NuW#(Q# zbP@7PgBi0^Mo3+h;)`kU=fukK3U^RrZN11YIYPE2n%KTLRB*}pjsb%k1l-+d4bmPD z;J$!3$!-un(X$k(A4NImvR$v%)%2riVabZUWsX6DTi6eyqCiqsh2z z(KWNQDw*e5w>9zIS@AkHnF=_&OjwA0pSEX|%{SJN8G}QDlgAI2W&b-_Q{T-q8N1zI z(e;eL{UT4w?$K?_b@%UFh=J1)QF$gFZkI0KnaLLXRv&Tu321;R@;ohahx`Dg64p3NY;z)BjJY6r$(lzg~`okm0 zgb@55?%*4t%T?Jsytz*H8PC8eZ2L%qxM45(7cdy>>-@PQ(xNKTh#& zksAJRw>=?lIClw_@y8V+btiB=eHAr~QAM0Ty?_ehBG*RsJW7+0pm;MeFktpn*?u`X zQ76K(DH}e&OfGM2YHtnDPa*B=Kr=4y1H)f%+BzQazRBYDKXJa6uI9qCc2^*M9UE}w zW|(f}x$N&|a`oNC^(%~4B3b#`4m5f4`p$G?ZH`TY$ETQzso^U}NZB+TmV{xzj5Ux& zBc}+0)Y1Zs(A-gfe29D;e|H%{Lk-VD1>NoOR0TW^8Trv`Ci`u4Z8Ac&{|xkOtUnBK z6@vtBpg0*Md-b67V~v92Sb0)pryY!Vn#OKhaV-tEmmK_%x0vGjy$F4%|} zl6@q(U0k6c_T?=0;-xnk{Ub$Wm(qTy$=+d?Z1!6^hL%2F<*o~%1wPBBPY0Xq@2pcF zMvX)MjsUw;$Dij2c}AWcs-;UW{|cWvXexB@{fY~LAPFjku~|<^1fu;41wFf{8fWhd z`Q=<6Gy$L=<0Y1jSDv(N2pk`gxBYEZR@8r)>WgZPU`x^2WZg$bDgC${uyMvo0_ zPnbgEP!HtYdF{?xYSao$@yz*2JA*&-wo&%g)*k9bdL=pca*mrQSD0?#rG6kEcJ{O( zjnAepek!(Wv#p2j7fRVXcIi$o-cYj1VRI*6-3C`VxjfOWqU>u778%e(rYzc_7u}Hc zu|Cb4XpVaQV44iX?;X{=&8%+L3x4<&QHTpwgXM<6&vxw*k%)Dssd-*xSuB}p-mTx# zoyCuuSjzoJg41dXH|oNFD8XrAMM*3bn7t_xnbJI1e+!Odj=RlTmR51+ir?Z6t+`|B z!?)I85Xi)xRYj_Yo5?}VX0tfS%Zy+y!+u~;H?I`rT)SA;BD~c_lCa>6i~N++f-E65 zd|!@|;MFFSoebGgGay4mR!j{LsqjrDQcNNJ^vBVOq^S~34U}~VZh1rHnFwIDYvApL zz5E&**iaS&u`jqrd2TPxTsNHo@L= ziOY;^SI5K bC_>|`?5s>Hb=~J}Ie-D!6jbxTIre`5PBZv; literal 3349 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 diff --git a/docs/doxygen/images/appear-ownerdrawncombobox-msw.png b/docs/doxygen/images/appear-ownerdrawncombobox-msw.png index 470f8ebef80ce9c9a7a2a9298519d0efd207b7cf..5ee966a224757e27a170f7464a7825fc00e2a3b0 100644 GIT binary patch literal 2886 zcmZ`*c|6ox8~-717;6b3sjOM1BxQ>Xvc(lLjA3F1!w_N25S6l}#kGum--j4Q&<62MtdjEU%%E7|^v-|zz7zGylP>~e zDhE>U)tH6q-YM-HezW>9uGbs?w9}(Qq$hvTFQR zTvfto9V!C64&c>wQpL<*U*Ul8!r0xJf+`eG7!87I>S`iDe{poZj*jIlk`+lJK(Xj6 z*UbjXUh2g=WV2Xt?%^X9m!h{{T4uEJKywS9dw**Pjiaho}| zRh{CZ$mjlKaIQ=-1k2LCnuQ3O)|; zuc|EJY^T);poC_vAkL)5XYaw~fC%#cB0q$o*91oNxI$u8J;{?c>QHT~pq_j17`!nj ze+cU#dUL_yeL}O^dTMTqSveK<)xLO>9=U{#p1F*$u%f3N6MlXtjg$``$nzScig%Y^ ztMk-miP6fNA(u);Dg-rdPZWeA3B3F3_ zecj#8rS;i=s&+<|Z{hcMpYDWQt}ubnYKl%~1vupZKp=YX9l-X?U zp|b-W4gdgkJegW?wOp-B|AAM<;%osSTln|4q(}cqSZo1|4~prN#xAdvo_#H1ElG z^8WrMk7`(5m>nUFE$&+Q;W}^S{rk*3rP=vAg?K{B>iJQ99N)RYf(oBUPoI=T>4C>Z z9|J&z0G)rD`2n}+Y&}!$g-hLYp;2bJT~1WKjpcHHg~sT$i2}g%n-*`Nbgj7u9}480 zNj!4RQ$_?14#&AXA2z|$Q9el`t9A*_>{N$}Ww^U&W3tF9k=Y{CP-NF~?k_&WW|RWB zQmhLj`W608p~Fm)rK5$n=;!`m#0BsFCf1)>W@JNEaMMWZ(vvHm2}rt_BV|@4uaV^& za26xwI6H2nSJ*tu9f}_1k6^o`kB`+|Q*|_&xTnxYcG_ z+vX2km85VRUt=1c+*r!XQ>yc-#_kxaA}zNR+}6aR6z^s&++>)w#@Hm19^tGB9lw$!oL?K6>3GChr{)&Lo(@=SSRm&IL7TkS1NrgO` zpTefe{))bZ9@O0+i>W*06~g{X{MmPm>1DbxDN?g*CY^3(i9brS^yN(#OZR>$U~&bw zYG(PS*Tl2Aq%DQO6rGJdW7|*MUn`@7J4X&GPXM`P1+es&w)uA4 z5GS@6gT**`38vBnjTA6&HtsqI67Z_SL66De)W28L1Tuaj+}#z%`94I_7pH^2aMnldSi0|3>=9a5 z{nF0-jbRbM2-(PjQNwwpT{ZHeSeo~W)Kw3u zEk_{z+SYZKtO;Z*i$ZAq@_G83b;ek+lkw&4`N8;sk2i6M-8sA3#Es3yVrSy^vpYr-l=%7X#Cb(Yh-deY4quB5D`Zu6`^dW zmC#94;cz4lzXH_h>5Bjy;M^7;3 zU2#v7MvhBE%J12Hss%BBY2n|5@z04Y-A3een9RYAG?VQJ2lJo5{pTbCpZYDdIETd7 z-c19;kL_ZZT>p)ui2`1fTMZkp^rIUvxxd!^R=t5XYdJdfznIDi%nDKvF#Kp+Fgayny~ed5j0x5%xg_TR zdhInF*Db*Tnt*VX3HtZ9cn}4UYR0n9Vql&L+G(X%)eU^NVluoy?J{o3Z_BbU20XZm zy3m`2B_+}J3124}`%n5F)qwPMj$zr}w7Z6qC9$z`wWga@=~rfP?RP~_MZ={fV08=L z)m)DSNcs)#r|bhtCCyDA;R+#XwE<3wt{*Xh6k_5x9X&OK-k2o^Py@2MPQg$ErY@hf z0-!#d2-qTjGNaEXWVUQ-=8NDdg=n)9Q`pXoYGv1(=Aw12IQo`<@KQF9y~X3$s3(MG~5hj?vl(F`1QiSTUtcBQEf7?WGer>58( z{`-<&$NYq(dOcy&DVTGzZjo0*FkbQIXsjt z$EpkEG)z`X%NXu&Zg<2N1bW7_Pc3Z*Y|>ID5lxi^(%Nh5+y^5X{#9zmL-+fejOE~CE_^@+si=)`GM`57n5h8A| zxez7HNaM;uR<1ycd<4b&OBq(}cW25YP4U*70^;X5ESh!BHi^X(@)ahGmsZnGU}5h$ z6M0_^h2I!Q9WK-HvtH{uE?%J_k$eC^_7Qy7SOZZ-xx@>xrA;Hg9~DU28*24oq!NGD zWFWIYxcFyjXg(O1W1ga#e4ZcK(aWkkZy*MZ|GNzRGr|9P=hK1TV(#+XyZ z!_aToc)Bg?x98jZt8Ynn@l}%#@6zcL(MFjI{1J@5`x$ptk z<)b-m-WVU0=Y$h5*Fps~qs1gRpZZU~qDpAQl8cQ<2}(#)%4mw6!-sxG#G$cKWnFCfyFH}MREj1nBpITJ>60Uw`Z`uFgW@A#lT_8qq*^tQB#6ZERv zGA3?VeiV(#18{tas^3C~zT<vBFMHk|O z_O0Fd2vGi(J0HLO6QccT@553N?jZxbLfbF8OF6K7`%E zdwHAXNcUXw(U5!yABEbm9ds^b-fWaVFLh-8KlhIgrBIgg<`FIlD+nlty%`d#4($y- z;E51`aGtSqm8~6`5F_1kg@6~^PA%pPzpjc@Tz*^!xK7_^E?p~Y^aV|js)@yZ0 z%wn(cXn%3z!zI^gD{?@E67u0yK5A`6>MsH)F1f;@lUpPvR32F{#3*lGkPolj-wNZT zv@S3a9Fpc!Ikyr9Ee&li)%r^%_u`EkPrH%_$btq9OHp3X5Ba+ zh4UrHcp{5gvROZv#rcEgd`goKntagYgC-v|`JiF)vA=Kp*Pa>VI1vL;GXT%}BFFHKMGlcI5~pCo4ya^41s}^84bgPEU+HUbS6o%;@{4T=v`wv*4+I|wJ`j8$ z_&9&q??0UNxQK+j)E)THYwXfWT|g`SEBT!J^U;571+JJ6y@tl`&4+&_qxRkSfR8%u z%Eupr^WjOq-lxO)HuGbVs~i+krnf_1r+>zUwX5g1wJtS^E|HI~myk4izSu9a-MgvEQ%itV%XJl_ z*Vn)OJU$-dV+Pp`^~BCmZ+ph| zWU1F(q@QPu50Cvbr+%8le6;h7@ZnJ#<3rnEdScz~d+qfON;VJv47)Qud%5*!? zJ&&=dUaLxTZFE@pDk>`Tbk7$>weyVg;njs;o-ga;V<*#*QHyraGTFYG_fsuiV4+1y z$Xa=P4eI1oI#(jadQRo(-A@(U%hTthQ(eyJgLP>Qe5^^jGa~p%)nfY}lHdcu2Z9d- z9|%4Wd?5Hh@ZrJuSL}ZiANbepe=8p}alL+t`v+P+9|%4Wd?5Hh@Ns#OLYwCUJ^~Bz z03T=xd?5Hh@PXjt8@5$jCm$GmVDRzz`22kQ{9sj-aO-@W=ACRepYFJF_infH_aFO# z@ZlW@C=wNo@49mEv3x$P0p>f-+Dw9=-}aVtM5sMB=*v%4E!~RonO--)Rk}RSC?6i> zZ;;#Re6*rl;zJFdPrWVWG{-pS>K|=3_Lx~R*3TE4GM^eV+jX^Vqarlsq8Rnb?!zQs5n?K~rVcocm6>-{tv(LP`1U%PwCM};-udtDS?Mfo+ef4*e;cAil_ zJSuDC2tL}E$nGgVpF~XaHs{^b+&pWPS#J4rX8(TbOXYd`d~~YI8BbX^?x*mvDAS!0 zgAb!Z1|3V~LlZQ3Oh5j+@S!YWkM740ANb$Q$K~>p;{W%#e_X!&&_#j|3_dXUz~BRe z4-7uA2j&CYvbFj6kBS25!37@(J`j8$_(1T1-~%mR@PXh1!3Tm51RrR@e0&E}A`qXU SL15MZ0000EC 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%0AXr#kC%DO{5+pjIhZ%~jT8S@#S? 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 YFL`l0@&!Z_!vFvP07*qoM6N<$f_!56=Kufz diff --git a/docs/doxygen/images/appear-radiobox-msw.png b/docs/doxygen/images/appear-radiobox-msw.png index 6576b031a78512f2d34d8bd1f62e96150e7075b0..806bf6c456a1b21231ce086381672a8ddbb1c45a 100644 GIT binary patch literal 1768 zcmZ{ldpy&N8^^zn+sq}mqLs@JNhv8SMlu?0hOy+5TVc#SWG2%Nk|TC%$>oq+ZpSEh z=a|iHIZYFXMaLy3kxOGo(g-{L`u*{H{m$$4{yd-8^LhUK{PAQsJ6(|nL%;w4$fJ-5 z?7sW#3j_LLe@e;wO6;3>tPRQ)1OiRYVtD&uDGFijN_@&M#Na30j=myCWP=klWPA@C zX$iBY7UaUc)t@Wq+81ehUk<`fwS3~Sx)&Qx%ihxe`&+FX|hXcx94$6WFw+EpuJ?2>VwtQ>TTi}6Ib zENi0oMJ&5=p!E^jlYcB(vbu?W?Tk!a?TE>SZ|=2bT0G?thzwil2`}v!e^v(|WBWc5 zm4g-zIxhrkAFc-cRbWU(8Mfogr&N!!ij`x@Zw6sqElb83bxWsWs0TZ`g4s$<*`7o-0Mss zsx1F3!$YZE!fY`5*003Jt$ko+zwbr|F}(xGs{E|0@V@N6_KvU{Ye!_*OECC*4THOk z;M)jS;A1PUtxyWU-3=PYmnY_4S+fU#2l@SO-zpNjV=mYZ1fG7_;Ia^$r8Jz|8gxy1 zZSTXlthX8ZosV74Q_J3nuy&b3`^G_^seBnjP|fmgAKzmWzq;GE1%7xe#tqMKPjZ;i z$fLQQWPja^oMVQP6yT|G*8c`~%;UGp^{U^UJ@2f?Tz$VR*ZR$8ktaR4dA6v>X;m=< zkypRUu{w3}H>*gR*8$BgqChA~-mNp9Iyg0@pfa=atG%k}2iEJwx7(}c?t(8oyMcvwSaZ<|z98^!$Zo46WA#_|OGr%{SdjKo>#Q88xKEJiK5%s-dV zHbnk&Z?O!on6X#vb2(c|*m{ZjS3$%z&aTyt+s|F=`lb_($(o zm=f|27NUX+ATo6Xp(D#F&#Q~$y0#$$NVxs zC?t4gSc^RVH7!`wJ=li3x~5spwq?bGQjmeq8_pX#tgEV{%nT>rGVXa>?ktVO_pDRr z_`3d`f{iGE=(-cT_e3~z=BQaxJrfPV)un;3MuITRXb@Zr8*f1zpAA#hqud)D%u z2GWl@uTvM$=?k?*j(?OG$;!%_MotMH_`@ITy^7Av%(Qk0H&q=fbg`scJW?aC%uf2z z>7h8)dSB*A&h)!1@d0Ue7{~H9-?S#RyTph_yU&`1Na>+ywB;IwQ(D@UDz;x*w-!EN z@|+DSLaxiFQYaK>1J~duQeVU#u$6vU#qzE6CDW{Y@CCk}o;5eMIqQ4H{yPies?;ON z{pO-Eup*g`C?6(W>dNEb3-nP~DCD_`z4#Wew2B`h)3m`+J^9|Mh%R^raCfMGrMcYDup?Dwfip4FD|TEADB#KmJ>ribHWZ_9njFmj13K k;>J=$jj|qk>3`Wea7Hba5n?xi-+x^I%GL?-!sbTGKO?ng@Bjb+ literal 1487 zcmV;=1u*)FP)*e+%wFL!GoxpYnVHWS2G25Pmb?%zB?}oQ#|wYD(ou~A z&gGPqGwD{zDp!}I)aR<|bW4e3GG55VtC?h`i(;WzC>DxE{j*Rk6pKVEdRNMxfh-VM zG#<%`-IS=9MF}Dv`#{JntFBm3NRo>a`=5CsX4gRBdM#MEnM{SE-IcVVB$8UxF|(FY z<1Q#^JsQ`(8+9|Dn@DL<+ptoa2+YmOfDUJ&+uzywWHAz+^p`JOVp zHhqa+C-QPStH3CIV%e$e*NA>QDyNW-l|M47Sc}m;7MV#qRU0D_d?0o-`b20xQsU4ISmAb zz@&Zg;=DSGGHcjNxIEkTsd0zV7C9pUl3AYED* z0?9>YM;TeVv>P!7vsk>ieaVteD1M=guqYQqby$=gLM(@~V5v?8LOLsrs#zc-xP`Nz z3JPXHIC>Ci01Kp0@yA6i=y%zoHGqqQN-+{Nl@{fL+%8rlnBssa^Px+BX(?MHyk9^s zS|fxB*UFj&DkYFbTj|Hs;@itapk^U@r$`VPIcGufh?vcna|NQk?2rTenWb#+gw8u< z@!knKk{21v2_mhUMX-1^lIp%qroLGy7K(*pp;#yuiiKjKSSS{X#fDV+D|6mePkeUB zrBC4s9hQb;F*)V_)z^RE#ZTPw>}TKo+p{jQ?#I@?+h6<&7T7V{Kr9gOr4POT%|Bh6 zHYK)f*|2r%=Iz^40|VQC>sol#En2u*d#R7c+r9mK^g&S~`t*SP-`L0Kdlw))FB6-) z5J!>?=#Db*weuQQlfkm(=7K(*p zp;#yuiiKKJtN5*T(=(rZ^;gF#d)0UU_TKjVmyP&a3jtsJK=YS>w5?yi+Huxy+TqegxI-`-t+4B z!F%@qG)!GLrA9QubC!c1Q3?chuK)DKYjVctXBmz&J~YcxAh3lW9v!R686SUqudyia zA~a%}Dj__!ETLRO0ad^!~086ThWDLD~rRzsKK`EHLPQh%=Z4{SOgJFbk>_c+XI2 pXVnqJqCxtFVxd?l7K%mnvImeRqG3u_1oZ#_002ovPDHLkV1i@+!Ug~U diff --git a/docs/doxygen/images/appear-radiobutton-msw.png b/docs/doxygen/images/appear-radiobutton-msw.png index 1bf7b62c2a2a9376cce0a6a039087fe23532b2be..859f2a2f6ae3501580c4decb722d0048610707b6 100644 GIT binary patch literal 3234 zcmb7HWmMAv`~3kUBm^WSL|O^y98$6|5C$TG2uO{RhSA+1DKU{o2|+*!K?d9C5CI1w zQk#?$>5z`s|Nqnb^}Xjj_kMW3+;g6D?sIOkF$i@{5M)OWq zdQ`9ob^ZwZ6#Nam@Vx&TC_``f!3QNykQnnG{8u2!0za5MOt%#{YUvyUw~@FZYC&%* zX@^<^oqk>^@P!1*_JIw21^N6XJCGs1E{ezvm@@QcOfpFYy)D;IRt_1P3^$!x zqheaI4A_`yC{{ssOb?CRA-J0~Vl}mOx=*??Myn%^5b^s?-55bbkCxl;g-!jtB)V_D z6j}R%f_n>>_3bsW1^_dK0F}^HA?Cgz6!TVrVfytk|2=e4)BDZe_`@eL*V+CLlMWf6A*Hq|DLO&b8-tM@a@f5gj=*=$p>8(eE8kd?kZzmcqu8R8!NR|11G)sy z=ZJUl>RfbjHuW!D0};m*2~6$7kHXj)fN@Ce>HVCVuNBN9Ft#%X82TT4$M zqMEEicGKhn(~w}4Zk^?R*I10pwZ`L9 z_tg54Nt(2)3vdn4ympi${%V1gE#}*wH|Rk-{7dQN{ICR5VY|Sy8PzQwGW4hY?n!k7639k`J)H8BKN|v zC&^n=?%(&$9@fqKlhpSl;PPd58vRqUsTGZ#CNsY%GRz$L^N)@Y$i;(W*t2rjFc|!k z3{WGJ;%Pr?%9qWJn{_V;U5#TirU!xy_t?IozEjq1f zwU9vBv@iiQG25(dmAV(l1F&T(t_t{@h z>tA1A2j?yGI`%2rx6Vpgqd@>AC8cUndY^r~Hvh}vNg|O*Ai%Q_aQNutV}TpIxT90D zX)HA@CBVcel@?I=LHx$ds{xzpqqQrl9xXCpm)4x>>36y|iEcleu%)u1Q*YVF%`>R- zTvcZJW*#`2G`fmQ9m5D2M`2hxjyp+xiypHrD=RAvk0pSg-pWtvTF_`!Ik_e*maw#A z#UN^5hGo2p!T)-C@toSqdLZ&75x!+e_%W_Sn$Gqrx{jUpAD!}U#)Q{meSWaD4;|r+ zY=X|`f~28yw{EpDznj$0LfF~yC-!J%;&%0_CQ?#T9buVO=LGXJ%$ z(_9Kb$GT^P&!%B|F<;@=XAeg%MIEQp{DOSd{;*8X8Iv}AEr(W6usnjPD9wOyXdFbjNeo7?)_{CUc58TMyG$@z_hSfR|tuv-Y}@u|6oW*ug%$Wb52xIx9)iJ@(ZTv1w@ z7DnV@Za*2#5ynT|sC&hilfDO)IJH)uT&jz%|Jvy|q4n6*)Bb}QZ%&pHD0}D|ky!HT z)ou2a%NFr2pN@|o{pZpC=8UDBhE*f2CF;`+q-y^Tovc}$Yu*-evgDsKzLOuTew5uy z%v$b2(8hP~?D(|Lr`vJHc9l-7?gY(ww*G^ZgoLS?S5^E8mryMZjLdSjE_sxP&RmEznTsK|_w6iRO^-dVQF# zt3g?}?N>*~XWzu)tp+t^P?|T5U3`%V9cL0M1!?>=);Ep+>>|Y~OobkCEOVvkH@gdr zX1e@6cGKTQ(5Lo0`B9QUlysUsK}!= z<+&gaShbk4go4$I@h%;n-65?FpJ{DM#+1O|f|II4M#DeH|Njv#sYAKXFpII%uz%eH N(1XBr>a}fS{sR+eKxqH~ literal 1299 zcmV+u1?>8XP)du?0zr=M-BUyp5}F+NGQZ*?lulQEOJPq$C< z@>OnbrmD_@IF7~^-Eo{9`k`Nc*od>ofNmIO!)%!60dsk6<2MBxu6go{!>)J+zvJ)7 z%vt6z4F6rT^We*#y8Zbte=Jy4QdaWI;Pg!x|3Hf6W{`}x0 z-a8aL-Q96VR{#w$TY!ocWBSuNNha zn6u2;iyCIbY?x;*b2wyZnbF{fjc{Bsj{jZHJTQ-jVK&T$*)SVs!)%xhvtc&OhS@M1 zX2Wcl4YOf3%(C$%(!@BOF}mfuwbq$oLq9!YVVDiGVV=Xx8t>yAWhU?At0h!(RP4lgH1OG7^9UqnI7j8mfXc zr>u8<;v79Q?kb+8Ea1MrUhaL|F!9WkQ8e_=JU{xOz0c!eF6Z7yJWE3YC*H?K(sQ#S znKJpF6lSHi73N4(rVOptb`;6x$P_a&>0KWL4XISfL8;XLsyp-ZD_;SML>$DQ~}N;NcApz#jP zTctwkndKr^e%_{%o?FbCnAyyR*)SVsDW!>cQe*sv$WRkPHVDUW2)50XL!kfw002ov JPDHLkV1frC=GX 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 literal 5587 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 CvG^tc diff --git a/docs/doxygen/images/appear-richtooltip-msw.png b/docs/doxygen/images/appear-richtooltip-msw.png index afc7152a06ffad7ab027e2e2cd982882b86ab294..aad00800fd5932a986e28eff95f1214bda4508eb 100644 GIT binary patch literal 3478 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 U!oPYk82|tP07*qoM6N<$f>4DsCIA2c diff --git a/docs/doxygen/images/appear-scrollbar-msw.png b/docs/doxygen/images/appear-scrollbar-msw.png index 5d37b51f82de87d237b90a85b615bf57abf5ab55..1bb8ba869fa6d924b18e3f046afad7afd3314fbd 100644 GIT binary patch literal 609 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 literal 591 zcmV-V0NQ^z-iY^zMOr;E4bL0Tf9@K~#9!?a+gI z1W^oz;jC?`wr$(I|C{Ng$bV{YM(<*Te9xf=0TFyt07!%&3=u&PfzWg02lxT)5rsE~ zJ2xN}Pq1W4DIk{4WOKP(zECXb1jIAtO0`-o)anhLfJC;^Y*{)wyOaXDdwN-4zaQY9 zfPulGZ!iLezHWHrSwN6Xk#G6wgKsU))Pw1n*>5mbVD{@KCg)7g1LhYNzrhGt{JPNhR>#ps~TPi zA6r*_5*;q+YK%rZkfw%WdLR@A|H&iX@#QD{n#}VIq4fw20B}Qm6a~ansi$fB!>(zX z9!rfARaN=hUOQZMLTcZ4e;ibZZQF?bd7cl$;01!{L{SuyLw^Y29)jWoW9&$Sh>juF zb^Y1d_q}P08AQ`G))Ot1C?BvOIiYdFYfb<_S(eI*{x~@2o(Sr?{$8}dqFI(5%W)j- zuudT;S5ycgb3#7T^UWm$03ae`3=yvooI)(iLhSFlj{dS4MBBC(=Nc)BoKPWxD2m^^ e8{(}fAYR*kXA%FT93W5t0000Qw@XoQCsq*ViIym zCB&jm2nCJvF=r6(bK0AV%dVh(^Xi60N7P&6tq&pKL z(PZ$J@`@`7WB`Ni0k$NzZwp2_DG5!xv$HO7dDe>n2MK73 zMFX$B(3=7jiGLOjYMsw_qfnkmWhNI@=OosyBiZ7y)6xMN={mehB$`{6PS_qMTBzPO zGN6Q05`1GKsBwso}($O8ykigf6#bc!9cOQ){gbc{>i zz!%7FX>^CX<+%&1Td6$c?=rD2fu9V;F`nk_Y94kOWnE_-`j(L{TIGf>j(SH?;=(qdR6L zI4&ef0su*p952Bt4wV0V%{rr_bAuKuff_5zG7ZYI9PT+6b6&4i!(Q+A`{QA`Tr%TK zvhTV1{WE_QVsxcbLDru06Uzi^@sJR7si`7wg-Qp>?>qST8N#szW%Uxs*%u1BYkOYJ#SdO!KC^I{;20U5yH$=lP`%hSpeUVJoy;3K)t zNN0T|SujRD}*7XVs=C#yVB9v3a~aFL5GB8veTLWTZp z`D=9!!49}`^?D#b@@4sAfsC}>fDCZ@t2G9tYb;iV#s(sHj?K$5#jwN>wjIsJ`Qt}O zu!CW4AUazHTX_E;h75CqNNGO*Jq&m#Mav8rJb5PJP{JeWH!`exEJGl}`!|h4v(E77 z_&hSK?gp>X(;8fFj3AiADoa~Ie9)8SN|yNyE6)vKn=L$5z)NE1p%kyIo=D<@)(<7| z>WhI0d+&yI2Kb-_1{_x2umZzuZhbf4Fnc$M>mgm^E01sDgZu6V@@XaW49Gypr;T^R z%wXf)0N=IJ889Hjop@KtvQUA;l@KX%m;`=GIE(Bg$HWIujNx5vaFRp@X$-fb1kNR2 zZWzc7L@;+}nJYUyF(w}bgZpale)20a$YN+e>w8jPyxLbq`zC_9L#2>iCE_C|>2F}r zeAYdH!DN_VIB1w;m`7wr$!BSOk`$2^G9ZKXkO3Kx0U3}%LO%fdF(`V)vMIFy0000< KMNUMnLSTZZE*1Fz diff --git a/docs/doxygen/images/appear-spinctrldouble-msw.png b/docs/doxygen/images/appear-spinctrldouble-msw.png index 21761111bf0830a48d08f9ffd5d3e3caedff23d8..4abd5925bc94cccab958b66fe07a374b4af89d85 100644 GIT binary patch literal 665 zcmV;K0%rY*P)cBnbc{N#e@6s6gt_tAr3jNTD@mE5@yYQ$woyl|JY>%d&hZmt{FzI`nD@G(0I1JRczvUNsHzG807^E0t(!mY;GzPj zWBl>{l*>42C7U1qGEOx5r|c}~4lXKWH_NzH$kc~W(Xf5l28>1{5B-Nshf*70%{glu zO=D0~PB(M;20JEjI+SdF*fRhW*l(QY6OGiiRw19QPTbWRRe&{IvNQgqdPK0g-~yw%|o^b(-|s#um4s%Mx_aGSz3O#m=WGlZMP500lg zo6U|3IsPLZZg^N7+wImv6t814nWWQcKgM%!rqgLW9zSHgJ<EE9SnZ~91^ literal 393 zcmV;40e1e0P);Kl{|IXk4&e#9O*Z;=T z|Gm@yN@0Yx&;I}b0IkFKwbTE#%m1y*|K8*O-sATrQ-`Af008YtL_t(|+U?dwVue5q zfMG1SMXUEeXD4;v4WaTsU4Fn=@!x-Et30HlsNVOAP#usH>IT}j?fPL%O>+dHS?0BA znho|HsT(2)kObQXfJDSyA3@;z8?Z~~#Slh+03;&ny?+p9R(UV~auLM)gkaUf=jC56 zf{3`{8-kaWKq>XUBbZhB2|;(^LjezBfE1Fd0%-U7U9kMa5y=UNUrkCoU{XF1=mR0+ z6ZkkORYX4Ah3tZtv4G+MYBxkJ&`2WkFcu;R7abEZ%cT-sT~8r|q4QL)y6$=mA>2%Z nH;&^lOw(<3hO^^;|DCHlL>40jy(+Hx00000NkvXXu0mjfu}{T3 diff --git a/docs/doxygen/images/appear-staticbitmap-msw.png b/docs/doxygen/images/appear-staticbitmap-msw.png index 0924a34b7f7a494369d7a27e047122e68d3d9332..f62aaa7cf160cecc87f631179417f0efb5c8bdf2 100644 GIT binary patch delta 1065 zcmV+^1lIet2)zi9BYyw`b3#c}2nYz<;ZNWI00Z?&L_t(oh3(f(ZyQAz2k`&ydK2Qj z$(Y26(nLKF3KUgoD?m*|IJHNRD&WAqx1P!u0Pa0hsH(VDNT?G14CImnhe~irRJE0( zq^a%LPP|#~&ihLbYdf}UWCyk6(2O3f<}&-6nSJKjU59gylYeXO3EHRpDSyhJOiLYi zKom)(3;=7)*>M1rB8ocTq~p5d zaXgmKlf}i+*MH12rnOE90b>wFsMoufo^+)27}EpZ^BBA_pcIUC@a-^TkP?Kzn8Edd zd22xkD225hJY%R-5Cq^HT4R6z&G22TPqL3v6bc{&Qo{Gi^75aV%oE1EjST=AFs-Za zzcV$poXK4NkGv2#IOte?9HUff?76k_#*MpIuAI$eK7Vx_32;C(g9Ad!Xlv_NA->7w zuJz$H=V3mt5~>-&GgB_-N+qPzI5mLLmh&U1u-G3@T5T5Z5dq|?>W(P6*=7!U)b zxdFV@Nq?m{Q0=q%TMr+8ys|PeKaU_l9JeyNX2F=H6uu8i8_&Bfbd#h&z1i=c0nlCI zx_MD5O-xO}^T2ug>0TU>id5Iv)tNJ?YPBaH_u{#fp_GRJcU@yG>BECD5Q0>y>vWHC z{`2P>KdgD1n>nprrJ!|t!LN4mF(9mEgp{NV0e=YyKr$8##t#o8juD3Kh3%_s>9a2% z|5cbQhm?6(jfq{C0(Grxgp{?Wo%SGnl2^$j6285-Bta>Z>KtZ_sS8oF zwtuM9mez-_zytE-GJ*h^OpoHy3dW$j-YXiQfHa00lcZixUiRY&!R{_H8B{8G{v2W0 zmEsM)v$78jWe*SQT5kc&+NdY5wFKVn#|r_*5Jjj|u)p8K?!`|}U)$NaTPXZ7Iq5qN zZ<4BIODT7DIhYoPDHckbLz-Fw-ub${!r!^0=H zZppQ^A!Cpfm$tA<(QNkYojcj<*N-a=#5X1p1Uim^whw7*0XVMf&&)WU_gd_KBLX9E9|C=JcRsR)~o(}8Jns`NEZD$mm zu5Y;7Or_cTRlqm#iA0hyRzHKStu3RYBWn>qYu4O%-dWt!vwt0c>Ulsh(5IB+aPIwn z#g#kkzT3`g9#0v+`DWzIGfx^F?I{!pwoI-o9V*Puci;WxGf!`?>-w6-Q|j}EhPIoS z=po;-pj4^?2ac-tc;5CiXU^MapWW9m-nL!Ndx<23&n^}vxXNKnqu*Tf#Yd#1DF}(L z1=}{U!8F&}=zp1}9|2+&o~X$rZB7d22`fYzEm>){^b{kl7Et+AWkkVCK4mW>+A%IBN~Nl zmKyJ~N&D>c$Nu~GZn@=wQ@l6;0RjdF>gdq-+;f*u=mUU@rz`&aIdej9y|dGfJGSUL zFeV8i(n-~(kSN_y2vRBfo)pED>gsBnLfQZZfLShpBOP6LhKCEw>HX}t-#PV^Q+l`F zn#PIhD}N_Div&i?q8?KVf__(umys4gk$efRah8MM%HzEwBcN%7tX$nYcQDUPefzDq z)mA#C-Ux3r!aIx=7|WBRsshnm4qgpPtm`$ayW4T@IP~8ezR+gQ9OK;I^Et2F@Ke=z z@?AvRG-HGZU{l#M+s-WqPbK#8ZEaL}T3(eK+kZJju|tlX{bQsrQLrX=AKdZSz2!p5 z<|Yv(zC84$V483Gl*OlR$Kw>uxa*z^EGBZ_?SA1ImmUjc`|!h= zra4mxLsk9kInSDAf^+iOO5%gLBC5n!ZZ3i7J3>H}p%6va%_369i#X3qgB#kDn?#6T%WA7(Lcl%fVBYw5|zHTlwT96LGv$Ev{x zpyK-sxw+KIvu(A#t@01Mx;hU%Ya|C|x;X(Lk00000NkvXXu0mjf-B=n} diff --git a/docs/doxygen/images/appear-staticbox-msw.png b/docs/doxygen/images/appear-staticbox-msw.png index 6e105de3a8bb9e3a39a1f9381ad6e9b19ba3bfbf..aa2d82266548cc55c2ea13165948a86c4d9e9ca6 100644 GIT binary patch literal 997 zcmeAS@N?(olHy`uVBq!ia0vp^&w$vUg9%6$Nb8*fQq09po*^6@9Je3(KLGOPdb&7< zRLpsM%QowEghazb{llzlm8Kd=9n}rXtN|!p@&I?}JsZ_4hwKd(qN!UXLNui;u_O%P|zlPii$%;ZF4s zJ2gRPiejXO^QM4j+LPBNWebFt$KH54@9ERK_wRi9_xq7xP2{H7cdbEE$vuX@Gow2_ zMDO!_d>m-K(s%BS?dM81*Vf-&!`b<*{`u)ix%}4URxkH&n|$Pd)AkMO#+kQf+cQ`A zl&eG^ecb#b$L&p#{yBgCPaiw}8{J>Je!1t?uC)cayRS&fJ(myX6?Z@X{ITBmJRRm$ zXRG!}s6De)~Wu8gpx1E-~ zKbcjup)Ty?X|*YrzKH(R-hAHnxL0c2tf}wU`)FP(+O_`p;WSmH&>Y>*+kZX2xbdvs z_c= zK6xegmfxSU%P!q3BJy^t+z=Dmdt2$-syh*37H%p^e`lGzEIPmO(WNzd*Vz6Z(NcPp zww>*EZui}q!1y&;ch~6eK5ctC`+KQUuJY$r`#sN-=H*2R-u|ECvE5#F-_qBb&*p7i zBkK~BvpeguOQXC?QO53E#lV8%`B&nn?n!@F_4(t%x?6MJ8h`IojOjamSN2wYwPne! z?BA*E6GhgaR^!Uq*u3KAADcf~+q#@JeKjA8?K^e+=!FKY3cK^RQ;e)`t-@T2pE}Nvawl=SbG!MLBzwoeH_2;AYr)L%1 zsPpCX+b>&mDKb+1+Xm&=<`Ms*)mA1)UVEKrc4kw$`}unYD^Ewhs<~75woQDFlGL?* z|FY(rKK$|M)c+EX3J!nq|Bq^IrN#~**( s?`Qte4$Ln5t9cH{Mo2iIIR2-wtaG83Z^14@V7_JWboFyt=akR{0Q5H9yZ`_I literal 868 zcmYjQeNaqM6o1N45i{)=-!ht!rYOW%86&ejwsz9Q2uWMn#k?IKkA}*~8q>${jIXfy z8ivwtVoHg5qlg#V>ti=Bre3iRYd3mJtrzd^le_*f?#%h!Gv}WB``vTS+~TCfHGu)s z0uTfVRIXJd!`%)|>E{b^)^B4qf{dD+q}mV%fCm5xh!U_lQItVY1~mz&&dCA~-VBev z;V5gcNjUKhz$JQ6%*jGTIa2fhQ7~Z8apCZmQ9!+!(B}Yf8+4Gz&6-%m8w4o9p*jca zrQmUs12l68!2_EE@$x`g9yPjw2t?5%ilC#Tv7@7bHL^It;S^MH;h2;3YC$RwNiYcE zVu2fP2Bhe=SQ@O>=On?B1V_RW2p6C@1ZvqFot@7umPV`f8BV!aQ6MRf1c3C$U*H(a z8aWp5q{t(f(||EJ1)l-Mp^4%zQG0)CD1!L-DHX9B4s{Q_W-@!CrWDvto0(v()}2{S z)5|8XBiX8e<-RimR}AMhU1|0yd|5%?pl`Qj+-MvvQ$;=X)aac;RNec%kqhK#ao&fq zgOloX6Yb{y(*2rVI{MwYiz9`vUUGE9@D|mKh-lMGVilaqm!zk-is#=~CnLh8r zoRcNv;v8b&dR2-m)@gHn$`; z$iJjMC45HNsd~5n!7%(*wsA{qJ{ew8@X5N)ZlJ;fV|rp5>JOv`Wp6sKNcp;oE2#X! zoz4kinm&I_%h2td*%cHYe#(9~L)+Ked8e&O$a3sj{}WYp$FE4(8WE})qLVodO;$(L zNVz*Q`=i^WmGQw#h2smz$DwPOf%#pYWb@)TgMHhr=Gq)-U-Yia#p_J+6N`F6=a$8O zsM|Q~=&#umUad^|aW(R!W_a1V9Ztz+58;b3xxR%<&cCLMO|LcOHr-TZUHjEizi42x z-hb{T^|Ajz`w%;jpO(5gb#(C6|_ diff --git a/docs/doxygen/images/appear-statictext-msw.png b/docs/doxygen/images/appear-statictext-msw.png index 877761f424be6e609df1750d8469b3d1acaae8c8..4ca94e4ea0d123802130a6f09538929fb65e385b 100644 GIT binary patch delta 536 zcmV+z0_XjO1Ed6y7k?QD0ssI28K^IR00009a7bBm000ie000ie0hKEb8vpxAmfZsr5|WRA#KuAt zpWz*$0|px~Bu!OCRQx8JXFq?R|2&BmBEtXW>CpoImc`zjS%2)!nZ@3m`Gq~XTWfam zM-x@-t-V-HrfhJJyP13Ksn`oZAR;0b+q0~-O^C6gB$Oya;uz!|>x_Z}jS55@88?=B z!1GOJhFq$gZa1LiUf1v_ut9L(qQ7}qM3hGnZTco6IJARwSHnf8&&42W<;NnT_B@vW z6E6lz`s?;E_J52&!6~J6mLjSfb9qh_UdsU~ZQ)T_l8-M=d`3@)iPBGAUZFQ&pk$iP zRkh!OX}emkH?2Q$VGfOQPP-HOrKMYghR?}9eyhmYO0CR&R=E7m&X>jBoLTJ6nZ@3m a`3BB1I1v#2u&*-!0000sT67*W+OyjaRW0(0C5iEAXz@`Y^nW!JRpMH4m7r6a`oXJAdqFAbPg-MRe9y7-xyF zEO6DjmM%f|WyqxG@p{oqae%=iA_RCDj!E-g8tNG%-8#)JPa+hljzpk?QZF*D&z>WO zIn0;CP-8Fwf>}+XdP2%fG@gaZ6mL(~(FiQ&dor%Zi@bRS-8FZE3yI>X&Em1Rdp+K9 z-EOzzEqkMsesFLb7+_RM2EI|Yv#M0WNwcN(s+&_g?8{h(y%cYIq+2M{nWB<+f2S{x zSRH)I9r_|+tJZ|F)2|l2!}n$Ar1@FTU+SH8Jf0q3)w>(llLE%m6KmonUgEt6ZvidU V0G)nN?@<5%002ovPDHLkV1jG*uKxf4 diff --git a/docs/doxygen/images/appear-textctrl-msw.png b/docs/doxygen/images/appear-textctrl-msw.png index 0f127e71f55616c0fc89bcc4afffbfc9fc4a8462..987b41f7493078db7a67dcafa825e184d4489ad5 100644 GIT binary patch literal 2377 zcmd^BXIB$i7Dc3Je2BCW=|*@+e`*5Ki}VtTKm<%80*XjcLN8_z8=(mzH4rdVk>t@; zqzM>66a@kpgs2E1M1tw^Xp?bG@zeZ)x$EA0+J}AaS$pkuGdv&;5&kdTmslcTMd zz-9=}{5~#mnB_PF-7D8(|lxJx)VHlHpcHiZ=qLxk{PAQBm$y9*${NY7|zz+UDja zdEp1vd)YC^&8UJZT_u+Tgo*ZAgzsa=&YttZDjJ7 zoa)Z9RrxtxDsQ6|essQJ=@G}iICCG>ZL8OGeZ4O$#p945PQifDi6Z1hKBo0&PT8+V#AgpJxe#y zhU>%GO~c(EJvaN_j7c7?E(yiu8$bn*0X?ECjBRY)zw~GZtc)1RI+|Spn9ObMz{xHm z^h94E3w^(>>!8~~T1VEVvV1`t9_J(z6@}WQ&nauD7_G)-s*94EH>{79EKyN^RSsG$ z(tO%PNL7_$xN@}00{?Z+l(g4La($fBL=G^h_lBvVNl*Yg(gDxBUi*>)hf$`6$7jGZ z%J~pGFTk^7$LG^%G-kJ=hQf3Ejj~7vC`8#(gj;V~KV?te^`D+}HUx*6opR%vhmM)g zKdF1@eP*Nf@6ovk+}4`YLTxPFuP*1U#4Zc*3_Fp(wG$L|btNSI1+ko^;?jV%JYGeA zR+K6JFsoxkaoB&xvNIJ=B*uM}N9=09{|+7vL6mf~w&GsBnj``=EaN99s)ISD6=lS~ z9mbW8&u>v@B({5K@rkMgvd-j7RG8UL&jD?+DD3c|sX+u;Hp1jZH*R>gcG=+4(rHb^ zq=Yu~4aBHk-&T0CIVisjwdm2JP_xSNIKG6?kvdIiPy}!~JdCm1- zEtE?+*+@~p0y8kVwO_WQ@d#!?JNg!IqtIoDgj$yO8wVHJJ(Ew)x8UlTzhS03tt37v zmfW_Ga!vL|E?^$5SycEBw;b0(KBqAX;cnP^b*BH>&wo%5(Eg6jPOzzISAB4$G~T;Zi}rV zh#UQ(3N5g|Yunl_=@g*RUB=0MA(%l3<3z!m;|Ew~?hCHx*bYZEWoZdD4o(K_Vh#tb zJgjSAa5X-jzrtfM@P$R0yB4YlLZq03W*Y~DFQ^`57e6QBv^T1(`*$}tK_^Q0M_fA> zs7Fh6_FC;OJjnNbJ0jtBWe3(W6%f#DXlU5h(Gj=0)7}n_2oIM9*Y@%$bE>O(_Mr0n za6Pw`p_ z7iUKth(5yzP)bB>{1$fFth(x8-MIvNxG~RBVJbM(MmkYi$;M*@iIMPiLOj&<}im1se1Afst{z0UGULtBz^u4Riie^K(IJla93@ zBE*L5_;fcWj`mC!toL!z*cO6@y}IAz&`7%1Wan9)fD7i96vE}omg@~x4;Q`mc#Hgm z{@F#X%QJ5^DJ@u6y1 z=DmZ@(;qIP(&KV;6>97Fk!{wU$hPn5>M~X(5C}5@N-tq_LeKNm!ONdMRn`;V+NgsEjq55ZDqiIBIULy+ zhx6`LFN2JX8r$2sQ`=2VO<|Fd`eClX25T4$_LxAhd=5h(2zWgH5%E~Qf;SXex3B;g zO}7?oE|2$EP*`Cm#Gb|3RNZG#dJ*}}vk(5GyOYg(p;U}76iS+&j`N#K7rt#%g)~RS z#&Tz0FP+b^lm1N%Y;G>VY(h54lNMiPD<-kNj+DH98e_5sd&jGEzW#5){3+uCq2{2* Y{#4tkZ@zn8@HY~2vV+*-Z7$sW2gT5N@&Et; literal 1223 zcmV;&1UUPNP)k4{A|?gji1qdDnNkHOT4O9{q$FiTl9H5NMy4PoDM?961}XPENJ&ak zl9EA6Qj(HEN>Y-Nlnhdml9UX7Oje0c97#z^{!_pB>`&QcLwd2MZZVPR@^b_`NeQ$v%Jf5yjuBFDylAV){P4-bD{TAD@Ak&&;vQIZmlYimm@ zD+};iT%1{0m`0*;etvRpZeojg7@+9+^XHp%%4!tS3nj4NxV$_sj*2LbGc%(~`RUW+ zG|IXbhiSNeH4{5|mi!==t{TokYsIF*0V1aTFTpM~=I^Xti! zKmDTm5T*XHz}GtnB`($w6iq?Y1frx+K6`dGozi*VLpPnWl-D~5C762VBTkgACZ?@i zcG4-;MaGs+S<34jgc3}+SgYOt8=w(w*`oZmMR_HaGQi=U-xR_}FXr_QO8E_TqA8AY zF9|_$oS66(McHh&CBu~7vNfiM#u{xe>GckvlxG;MXc3geALVKzjyRd3&o)YkwK_fN zQC2CG5^&(tlqX1~#K{!Tj->2Q`RC6^kjZ_IOh$J;%47J@&?mj@kTOV#=NwE-oDC%b zr@u!#5{|e}LeDpEZj&-di76S``OBB*Soow2QsU|RxsM-Tynp}9y?dv;JpJIo zxmT|&wmcFk1E{7?8@@o>dHKJ+cwshH#XLq&Glw;1KDnGb~;T- z^dEpSF(4nfts!ONPDFSjlQMlLf|LQu#GQzAN>V0o_mVPwCxVm?rMqkscOu+2V=GO0 z@Igval9H69!|#U^u*-yWjIJBIh!R)WrpQtc z?ow*w*n@|HgHBA2?ahNj91brwAQlH=3vO(O6*p`)caR~Qlj@=V>G18K ztuaZ{B*r;4A9CsU_kAxfU*2opBPg5Ag2|z&IPL+Q63iTp!OYPZ%p8ruB9-2J&h<=Y zS2uS4{b>Gksw&{g&Fbe5YaG|AL?xLVdnU7Qy|s6*pZ_OgJ4tNj@#_z(@4n?!<+!@B zbEZOEUth-ys-1qE(57O4wCQ_7}n>p^WBf#VF%*@PmcXta# z<>nf4BwK26|82o_<3O47A%qY@jVxbM(PJ(Y4iq^bLdeI7dga+h*}JKsIPZFUdlQKS z01OWg4-O6*KOd8mizxVI_iCKp;-^;xMb77jIK~*qo&HXimsRwc0f1yO7-O7aKu{#f zbXe4F#Gh3EI6^SSe+u;V_5CQ&)zwwhm7~?Sfzvy&IyY+f?Jr79!AEhWa*R}7tf6+d@5(9{GJ`{FjW@%VRla9b{k+|hd zj%RofE5JoGn1Lue3P&IW_6SEuDF6VT4X2r*(0nYdp`k(9lT0eT#I(L=sy$9v zST6kHe0$pryMv64a{vHb#1EcULPpVKRtrIgoPM{qHnJS@J)=3tTUWQ|mnAYm&&I)x z5JGN<&(egPqR(6wD!`E5khV5rgn0#n!OH~(1_o5-h@{^OFTGg8{ddmJ`Fd?_EtN{u z)zuZ1_V)HfBGJ*&!Ln>ooSU0-xm+KYcHV!@K6_9j>cl)3?jf9#BO@a&my2PTBi=ur zMnp-Cjg6JfPDsfdPsf^73C1{|&zJQmRL%Jaa7^c!)5cMqXRchR__Vxvc0P64Y&Mn7 z%{>0TwpwXH(vnP$FIz4>j4hhqucZ{fUrS3e`$rQUnEOX#Fmp5pGe=`Eb2Ns(b9Jqw T*uI+i00000NkvXXu0mjf*M#eY literal 565 zcmV-50?Pe~P)e=IL{{0>m_=Z)Wi2&6MThG5k0`YlEAqZKJfaenc z52;>US00F3+U=b*gRzSe?*Ogz)>b|rug!K0?{`Vta z-puZR?HEm~DS+BLN$Me`L^aekqKK7mh3g;*Il@Jeq`3tCd_KQl^s?SxKlG6q!Eb=K z4G`|8*hQe|9jeianiOfj-aJ|XPGA9$$s(o-P9$D^b3*2(wqL)- zA%NXG`D2<1ktjfq&5ByA)m8y7%i-sBBm8C?n`5i9!w*#fFXrJrCwUl7@azr`FECvf zw*8II3_Rz&O?dB+2Zd`%NSyq}Gl1s-!2$W3K7OweeAHN1l4pl%ecQtqb=MM|nC$-` z@;~^?AKo%~a;SDzH}S+4t0W)5qgK@6Y5pI%;q9h8>b=8G?vc`~B$dj|0euU=?Q($BG`c-qRf?t@t?}o=E=Ra|eyg4EB zB=GlNavrO%(YdM{9myFT!@Kq5?e?1^2m$>&(#P!q0Ni{eL+n@R00000NkvXXu0mjf DDQFGg diff --git a/docs/doxygen/images/appear-togglebutton-msw.png b/docs/doxygen/images/appear-togglebutton-msw.png index 0cfe4fd26ad69f4ae05c22a21f7f67fe3dfb9603..992347cabb28195f9c85a5367160deb91f85205f 100644 GIT binary patch literal 1660 zcmai#YcLy#7RM7xtVGg^6bY>=OG+#HP?ucqwzLw~BN|ba29>C+iY2yfRJa}`p|wkr z+u9`*wImj;&{(u7Tk5gavtFBct)*FvSGCQ}{nq>Go|$w0AO3UB%zx%Lb8`Ig7xZ+I zx&Qz`&&S&I_Cg^CZXUliGzp7;)!^0;?M_spdBC`Pi?NdHp?m^6ls}ECS;Ma}1 ze%YjDj=5zT1FN4}Zi)4uxf)!s4~Wc8gN8T|tV2y}$JevEHEf{h8|nD(tofzl2-Fy% ze4rFUG;`v0A3IQuiKSZNmSDLB$R0D}BgZTEgvn=c$`h^vE8Nf9nrw+u+ArOm-f&U& zNTop*`Z=Q!1!Ahu*}o6N_=3Ek-`Q)K!N25PA!u%F%vkLI;plyDxBVF&o7ENrv?h!Z zWbAoLgZv+eif zPvcP33zzuuj(L}DGX(-9@ru2vaL_u@$&}dj8Ym6V_cAZ7s^NaaRjf~!Ca@Kb!;)-7 zfX4{64(8AY39+84=a?6_&52Yfo?-=bshASYs*B zhi{(U{wA**PrYRm0NL_x3Jm8VB!9&b!`9#?dRwYjfJOk`($3b|ozx>Rwd@&M)RzPGcm`({#~SmKm{|(@ z$yqZK?4MfW=Exq0S%tdf?thiI*cWoJzAR@Gn+nO|n}Oh=Ncnd8L51(z#rBpSw#@V{ zJn3(F#sGG~%S@Oj{!u2tmJ(;7|4jrXv2<#I&zOa_@waN1;7x%sIAjZLV)-wLCceE- zvfv9 z1zXL+@-mHhrQY_&Oq;3Q)iy5+eKHA))?wdOld`*;GCUX98y1mLV`T)9%W@5w9|a%D zT(77oOEoymlKwatr=E2&p~?T)|DdZyx;EHxvUq>=i6gyX9z03L=dRAF|7#pGG&CIl zGPGnc<}?D(6Bh9K1+Ps|Mzp#8!z36bF$t*p(0aMb1#zZpOZjph4)Wi?2Tw4*pUKI7 z89)2sc;g|O8!1q;k#ssm8B=|LV<+FvI>LO1ef2__k4D-aml?eI`1`Kaa+2{Oy>ZqVPSD&~?T&hJiAC0;9wWT5$BL6S9Q)*$T(=CxAUy=ggNgm1VU>@{2M( z8*qlf$mE~li5B1IfRpE&xSytnJwtGTd8yjlQ53%iccekOG4JBSFv;XmHD3p_;1)=uJgPl{OcWy9NUIrCR51?N-Jw;Qh?A@uy7>x{j8(FRp=j0{x~t z(8k;e?$A|*VlL_8gkT32FSCuNw}OO)9ldYiZYN9QOdd5mjpnBRn)MhQq8)$^TNoLk z7-E~PhR6R5XV&HN!$|p8@>?)wwEp*YZN@D$f$wd<T{X{S%{^DIZ=kMwfPR4#NQ zF!3>TEin{0u9~;=4paFOY?k$2@3|(C6KCivy#Y2323Du12zq5}GL3&e|APGYQFtBp zflIP{dD3{ryCx1Y$c#pT?nV9Koeyh`h3rhOhle{8ppa=)*IWaJ)s$*hQ+XWx(cx6) zCqetHbS+OAB!R0T5GcQ9zRQ!Z=WGv^h~A^lp1N<;hGb@wjy9yMMpl=-ebUkDJab-U sm=&}=@Ed&tlTcX|0-o3SoZAl|Fjrc9aua=9{Z0Tr=kQ*29ue&S00F}k-2eap literal 1534 zcmV|eVG7Wba!ss;2%*@Qp;N~$i6PTG9)(pkFUOmV4dSfeWN18L9 ztGidy9y19=BZ1Eu>QDWtKlPs`#CW_ei_5Ne+I1fQi$V7O$gTo9Zif-Pz^;ft6nS0x z&F3F~`P&{;wWc!o;^%FP4&L&6OiaL8#2>CFkpJrEy`#>5D+w^#a{dY2{>A;_mT#8D zD-ZCBMT15B;h_R|n8vAC<5c`Fw*6TFG)}TQ;1!RBir@ZFS2rH5pNOW@sfr+3KM|`R zk7fMBCHYs6L~2GO$z;3&NF-v_qpS|=A1}>cIur)t@yJI;bw(^cqk6lVSS-xy42KE) zpY}6P`$AA%5WFO>Tda~C{&4b|SS<9kk9pF^5cogr2|nm$U}RyGr^VvaN?x~EB{}@z zU4gi^q7DvCofYG*`0Ny0hI`BFvIEg{ zgBkc4=;r5VpH&Eq6(AA`-t7w9?F|@W0aJx!UZFL;{78pA?Hv%JaIp z$!yFIxEL*~<<|>k*!rBt8;fHB!eRf_ChwIdFMukfb`N9#4{6&&%LE9?L%gJR7%`01V?hTkQe}{7*`qC#4R!<^*BI zaATL}GF$Uq> z9OVlrxLsyW2fPwR{XI?-d|Lw5l?Qkw6VW36evftGfm`rx$QDWtKlP{n)SvoOf9g;DsXz6n{?woPQ-AvXFZIVz zf9g;7Khgb9bpO*g%a2`s@ML_bZDP26Vz{H+k=E6H|NAL|{ZBU@OBLh2YT1xhIjU2Q zl{Kt_di-Hc3&H*;m260_nXs5tHmlBV)0Z(;oh<{z1pA*fsxgy6X|w4a4x__istC*k z`=2yQ)<1K#87csW-RQ8J2>$=6R*V?+a;rrPSHXv)f1gOSub;H0IC}P4up8c!fBRt( z%4?#-?d9#SQVbjPGK)oHwQ5VHf3HZix1XOUo#EZDqO;lbcDtU$Up{2eO0!^l7kBS0 zL}=kdHts!Gg%;e&&EQIY=2d>~L-T7ZAs|3&wZNl*%zsd?oiv+Na2F^Qd}f7W@Zld7 z%CPl0jW-s@1aNl&?ML;0I2Yv|b%707*qoM6N<$f+>awE&u=k diff --git a/docs/doxygen/images/appear-treectrl-msw.png b/docs/doxygen/images/appear-treectrl-msw.png index 8be3310b339a6eefda62674b51ca2a1ab7414177..d390c93f124fca2b74c3364d1236aeda89da81c6 100644 GIT binary patch literal 1723 zcmd6o`#aMM0LH($v{8molRIa*l__CUn@d}zh1y|ewNmDiOIXM<5ozX8RCAY!L{@fI zE2U|PIL{WjBr@hs6m99yN*q6&=Q+>$56<&^-uLtC``gPr;(b6veXBYE02-bLG59qX zttAbtwAKUgUys+Me9ptu7YqhVMtw#AVEs8yjJt1Q>D(=!oPqtiFWDTr?jAgt{nGFz z3VJdOg3d2FLnT%o;-floX{pjR7L}@6T7+%^++?$L02i;dyJ(~zMJ6Frg=mZIGLv_5YL^sdlsqgj<OjYZHl*c`}wntI|052uNm5Z*lg6v_=plj0iks3xE6dmz| z<5bV0x$TC0PqK1;g!EyT&{5gE)fX4Nq|l&yb5TZdNsf}Ip`wN}qJ=hIDB&3O7$~4G z7~CK~jNB`wac#BVvMQ_dT`m(jiEPdnvUwTWIrI$0vDHQ+*`5jjrPpnnWdk5!^#WM0 z_bHDvw*gd2F#7D3KGXl;IQ6Xc2>;IQ&CAlLk2_89<^UCY$S^|>xk1NiR>!R9SBkYC z<@~HN!ovSkxV>PpNobsQHw(xL-bb!UZ&aMOiKqnwBR*tkJVulMMGKvR~lJp zIkWUL#~5{}m0MSre}!P4RMr?MnHD(3aH*@avo?+^UTs*z95T5KML&`qq0~ZBkJZRQ zs84Ltw2b!*^(>;|3&bXFOpARqCP;+at7{LxmH!8|C}c@75w+vi<}q8h*KcqE37^_l z@_ydm2Da#|uitK~`UVF84-J?~0 zzfsZE+oq%WlHKs|!_g@oR*V^4mq7hf9KU33Wwao>Sx&K5N=UfhyvIzeM?KX@*5dtj zu&Y9LR{Pswq;%JV4m*Mgk>pKg6o}0Fk}>1EYRgn!XW4-6+@4aMxl4S4t^rl46dOl8 zBPFJmjZMOM8QoJbo&y%016xf0x=E8&kXSBgQJ#buTfyaSG$uo7Dwq(j+EoW8_6fE) zz#VFAWgqz3$DKUAtISRb9g{#Y{rf?rKEuUAu3@zJ((6T4JXSi$zfYO}`fFln+|uWU z+?jhanpAGCKUCXEnVsF5$nL$f2nB#|{dlpdRY{0rRn=Lz*9F?m*vFS*W8-4`Oewzp zBmA^pHrTpOym3~YPSCla_a(PIUF0?uv>l+Ye3LWS!>txwB*ntQ!bPFUV6^~0Q;51Z z*$--*6Lro$BI(#EG`w?w++WMEpwG>WlpFQ&2Fk&H{;9XiO@Di<5GOmk5XTP2tFFAu zaOW4S>&Pjrh6XKRc;CD4F~bI9EdFx;tT(8h;*{;UBX8nU?)7K5fsZ2;%KQx{7lb}` z<*>(R(6g3($m88D({`+8m=}HC19=>O;@_SkiFuF`Va5as~wPT3s&MsP44LXp~ z+3IM20;C|L|Dzi(va$a;(Ui31)=~GgsOm+wNd|FCGXC1*u1mY;GBlsi+mEi8io}vv zb7HY%ZKU%5iRSL5Zgf)9R~N{bL_6eBfV9oc5VSQ&?q>HNWUfBCC&v<_D|l;f1bAY- KF?Ak+X@3KzU_C$p literal 1006 zcmeAS@N?(olHy`uVBq!ia0vp^Z9v?_!2~3Ey3{W)FfecRba4!+xbR=jM*|%(&Lrw=Ds~*wo~QiIxn*qT$t>~9e3za z%WugZm!0Qdp3K?9kX_i+cXXzz$Gv-T_wV=CR0se3^rK*P$+aY{3mKsgw*=TLGo~I|-Dlb&c&BepR)1N-62XsamnQOYfcY665r7=X4JI1hIY8ZCGQ9N-|9D5OQ~3V6j7OI zR{3VzVwa}ay$YRcrXPs6V!O$F=l$r?mTgTckv=QuPCv4GMWKj>$EKrG zepQ})(*_cpKiwyN!k- zN|R*8f|<1R6mKROrj~TFUzh9F{5hHXjACg6mkS+1qGn(U;@PdWB?If^4&PgmUGhTxy6bg1HgJa6&#y@ z5eeo`YKIE1l?A$Y!k4l$tt=ISmY*ATz@7$qRsaIdU(pXs~1Tq__jZ;V^{*FR} VkIMF*wZMGL;OXk;vd$@?2><{V$TR=| diff --git a/docs/doxygen/images/generic/rearrangectrl.png b/docs/doxygen/images/generic/rearrangectrl.png index 452c4bfa3afab0957eb096eae68b690aa5e38d85..d63fe009ba42b68ed19ab054c4c5705ffe8e6980 100644 GIT binary patch literal 4238 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 RqjW()RZ&BsQqC;o{{XT}=+poJ diff --git a/docs/doxygen/images/generic/rearrangelist.png b/docs/doxygen/images/generic/rearrangelist.png index 4c975a7e8cceae244d3546a811f50086604b18d4..196e1a069ead3e01f03aea7b936d9db439db956b 100644 GIT binary patch literal 2909 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 Hu0mjf8+~NK literal 3262 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 diff --git a/docs/doxygen/images/generic/simplehtmllistbox.png b/docs/doxygen/images/generic/simplehtmllistbox.png index ac1a5eddccbe18ead96db0c1971b5cf5cf22c26b..2df44c6d6a13b2c145178ea1eb8be41eaab94d0b 100644 GIT binary patch literal 6203 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 literal 5945 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 From 2714bf19df2e2056fb25099c2a908c950401a29e Mon Sep 17 00:00:00 2001 From: PB Date: Thu, 31 Aug 2023 21:56:05 +0200 Subject: [PATCH 11/21] Update screenshot in wxSplitterWindow Overview Use screenshot of the splitter sample under Windows 11. --- docs/doxygen/images/overview_splitter_3d.png | Bin 1837 -> 7918 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/doxygen/images/overview_splitter_3d.png b/docs/doxygen/images/overview_splitter_3d.png index 11e43f6e2f6f8a80e4da9ca2833e7db09f407846..ce988ee020f82e29900b50229e6e92f060747c7e 100644 GIT binary patch literal 7918 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 literal 1837 zcmbW2YgCfy7RO1!gbeYOv9dHF-@J?|cq^j|BAQ4Mm|d(ieRI^Z$!tu_OhMm{yx?da zFQ}ty%t6m3!rl4SSri(rWYK2HY$Y?{oV)pJxseU1G_XhdOWHS9$r_%`p0u)Ms5(sq5 z_8;2vftuO<0);Yq%wl>6CH4(S_XH~FCcgdcn3^XI>Dew6B~}Bhw6PL2MJbD)7J&CE zw&Yj)X6<}?t90~M9VZ+U1mg=ryF0P$x_seqW?$BJRZS+La=_TAE2la=8WS`)8jH&DP92>E#_rSS*(rj$ninEUWvF!vn!1K%< z21uJ1)I@$zJbN~_@bTsq5foIg!${clllnF6jpEuhc{^Dfs5FZH?Q&D;$>L-axz+>S z54ya&yeP6d=M{6jfXN+F=3Byxr;-td{(&8 z_?i8l1ZMb=Am_4EjbY!sM%Q01KlLWG`?BP9*8{M$ z@s0{A*gRO0ak_jr<#lbYv&EbPy7bfj zR`VCO*CxwSzI|E?sNYYrdrTwtV-Gw4Qt=a2irBt<>%buNa~z5ByI7?r65 z2ltAXb_??BxM{2|-Qng!;^GVf1X)ZiOpY}vKpl9F01Vb6bWF+7(2f(G@jox+z&p+~d_LT$gRLI6^#nH&Q3x#9F z+fRf8F>jJ|KDqX85057tHrRaaZrGt{+f2t5jFU1klrI#)e(+>v}5!VOU{*Dje8ZfC#&+&fLr4cjzG@s{Je|euM?F4zn z(0-YHN(y&mX*u2y?FpAoV$?OfYzJIvRG0|`ki>{4-IyUF+vGI{Zz z%#NL)wP#M;ev!IVC3;e#+Lo~{WyAd1$c1~Q4V1L?Vrcl?OIdX~-EigNCyS(9En!`o zYXd)`XksAj#}>gasiGkhG6ofq10NL92T`Q8yX=C4w$gW48Be=4Fb`E+htI&nKj3=9 z6!}6ytPeruC;EGXO=t}vA0p+yHTIZZE3##<#UMt!6HQcY1=g^2yL`DvB+V`MrnXxdF)c~+lU?s)#4S-(%z zV&PtGJ>jGxV#IVO-*S_+Ht(12Zi}f|UF&=*O=Oq7J9O)pH4`8&&VRi}rQ)u>!J$~b K9A+&eEbYJNKRXBj From 2503725d7d41c5ee7e04169b88b6bfb63bfc0e90 Mon Sep 17 00:00:00 2001 From: Juriy Petrochenkov Date: Fri, 1 Sep 2023 15:22:14 +0300 Subject: [PATCH 12/21] Fix typo in wxUSE_LONGLONG preprocessor constant --- include/wx/chkconf.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h index 969d9ab547..e4c69faa80 100644 --- a/include/wx/chkconf.h +++ b/include/wx/chkconf.h @@ -2335,10 +2335,10 @@ #if wxUSE_MEDIACTRL # if !wxUSE_LONGLONG # ifdef wxABORT_ON_CONFIG_ERROR -# error "wxMediaCtrl requires wxUSE_LONLONG" +# error "wxMediaCtrl requires wxUSE_LONGLONG" # else -# undef wxUSE_LONLONG -# define wxUSE_LONLONG 1 +# undef wxUSE_LONGLONG +# define wxUSE_LONGLONG 1 # endif # endif #endif /* wxUSE_MEDIACTRL */ @@ -2374,10 +2374,10 @@ # endif # if !wxUSE_LONGLONG # ifdef wxABORT_ON_CONFIG_ERROR -# error "wxRichTextCtrl requires wxUSE_LONLONG" +# error "wxRichTextCtrl requires wxUSE_LONGLONG" # else -# undef wxUSE_LONLONG -# define wxUSE_LONLONG 1 +# undef wxUSE_LONGLONG +# define wxUSE_LONGLONG 1 # endif # endif # if !wxUSE_VARIANT From b01bd389a24a611539b541ed8566ade18fe87344 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 2 Sep 2023 18:56:17 +0200 Subject: [PATCH 13/21] Extract local InitData struct into a new private header No real changes, just refactor the code to allow reusing this struct from wxMSW in upcoming commits. --- include/wx/private/init.h | 45 ++++++++++++++++++++ src/common/init.cpp | 86 +++++++++++++++++---------------------- 2 files changed, 83 insertions(+), 48 deletions(-) create mode 100644 include/wx/private/init.h diff --git a/include/wx/private/init.h b/include/wx/private/init.h new file mode 100644 index 0000000000..5bb9a7ec75 --- /dev/null +++ b/include/wx/private/init.h @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/private/init.h +// Purpose: Private initialization-related data. +// Author: Vadim Zeitlin +// Created: 2023-09-02 +// Copyright: (c) 2023 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_PRIVATE_INIT_H_ +#define _WX_PRIVATE_INIT_H_ + +// ---------------------------------------------------------------------------- +// Initialization data contains parameters we get from the OS entry function. +// ---------------------------------------------------------------------------- + +struct WXDLLIMPEXP_BASE wxInitData +{ + wxInitData() = default; + + // Get the single global object. + static wxInitData& Get(); + + // Initialize from ANSI command line arguments. + void Initialize(int argc, char** argv); + + // This function is used instead of the dtor because the global object can + // be initialized multiple times. + void Free(); + + + // We always have argc and (Unicode) argv, they're filled by Initialize(). + int argc = 0; + wchar_t** argv = nullptr; + + // We also need to keep their original copies as they can be modified + // during initialization (e.g. GTK removes GTK-specific parameters from + // it), but we must free the originally allocated array at the end. + int argcOrig = 0; + wchar_t** argvOrig = nullptr; + + wxDECLARE_NO_COPY_CLASS(wxInitData); +}; + +#endif // _WX_PRIVATE_INIT_H_ diff --git a/src/common/init.cpp b/src/common/init.cpp index e3b315d28b..9634c8f70f 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -49,6 +49,7 @@ #endif // wxCrtSetDbgFlag #endif // __WINDOWS__ +#include "wx/private/init.h" #include "wx/private/localeset.h" #include @@ -121,38 +122,25 @@ static inline void Use(void *) { } // initialization data // ---------------------------------------------------------------------------- -static struct InitData +namespace { - InitData() - : nInitCount(0) - { - argc = argcOrig = 0; - // argv = argvOrig = nullptr; -- not even really needed - } // number of times wxInitialize() was called minus the number of times // wxUninitialize() was // // it is atomic to allow more than one thread to call wxInitialize() but // only one of them to actually initialize the library - wxAtomicInt nInitCount; + wxAtomicInt gs_nInitCount{0}; - int argc; +} // anonymous namespace - // if we receive the command line arguments as ASCII and have to convert - // them to Unicode ourselves (this is the case under Unix but not Windows, - // for example), we remember the converted argv here because we'll have to - // free it when doing cleanup to avoid memory leaks - wchar_t **argv; +/* static */ +wxInitData& wxInitData::Get() +{ + static wxInitData s_initData; - // we also need to keep two copies, one passed to other functions, and one - // unmodified original; somebody may modify the former, so we need to have - // the latter to be able to free everything correctly - int argcOrig; - wchar_t **argvOrig; - - wxDECLARE_NO_COPY_CLASS(InitData); -} gs_initData; + return s_initData; +} // ============================================================================ // implementation @@ -162,18 +150,18 @@ static struct InitData // command line arguments ANSI -> Unicode conversion // ---------------------------------------------------------------------------- -static void ConvertArgsToUnicode(int argc, char **argv) +void wxInitData::Initialize(int argcIn, char **argvIn) { - gs_initData.argvOrig = new wchar_t *[argc + 1]; - gs_initData.argv = new wchar_t *[argc + 1]; + argvOrig = new wchar_t *[argcIn + 1]; + argv = new wchar_t *[argcIn + 1]; int wargc = 0; - for ( int i = 0; i < argc; i++ ) + for ( int i = 0; i < argcIn; i++ ) { #ifdef __DARWIN__ - wxWCharBuffer buf(wxConvFileName->cMB2WX(argv[i])); + wxWCharBuffer buf(wxConvFileName->cMB2WX(argvIn[i])); #else - wxWCharBuffer buf(wxConvLocal.cMB2WX(argv[i])); + wxWCharBuffer buf(wxConvLocal.cMB2WX(argvIn[i])); #endif if ( !buf ) { @@ -182,28 +170,28 @@ static void ConvertArgsToUnicode(int argc, char **argv) } else // converted ok { - gs_initData.argvOrig[wargc] = gs_initData.argv[wargc] = wxStrdup(buf); + argvOrig[wargc] = argv[wargc] = wxStrdup(buf); wargc++; } } - gs_initData.argcOrig = gs_initData.argc = wargc; - gs_initData.argvOrig[wargc] =gs_initData.argv[wargc] = nullptr; + argcOrig = argc = wargc; + argvOrig[wargc] = argv[wargc] = nullptr; } -static void FreeConvertedArgs() +void wxInitData::Free() { - if ( gs_initData.argvOrig ) + if ( argvOrig ) { - for ( int i = 0; i < gs_initData.argcOrig; i++ ) + for ( int i = 0; i < argcOrig; i++ ) { - free(gs_initData.argvOrig[i]); - // gs_initData.argv[i] normally points to the same data + free(argvOrig[i]); + // argv[i] normally points to the same data } - wxDELETEA(gs_initData.argvOrig); - wxDELETEA(gs_initData.argv); - gs_initData.argcOrig = gs_initData.argc = 0; + wxDELETEA(argvOrig); + wxDELETEA(argv); + argcOrig = argc = 0; } } @@ -339,11 +327,12 @@ bool wxEntryStart(int& argc, wxChar **argv) // we provide a wxEntryStart() wrapper taking "char *" pointer too bool wxEntryStart(int& argc, char **argv) { - ConvertArgsToUnicode(argc, argv); + auto& initData = wxInitData::Get(); + initData.Initialize(argc, argv); - if ( !wxEntryStart(gs_initData.argc, gs_initData.argv) ) + if ( !wxEntryStart(initData.argc, initData.argv) ) { - FreeConvertedArgs(); + initData.Free(); return false; } @@ -378,7 +367,7 @@ static void DoCommonPostCleanup() // we can't do this in wxApp itself because it doesn't know if argv had // been allocated - FreeConvertedArgs(); + wxInitData::Get().Free(); // use Set(nullptr) and not Get() to avoid creating a message output object on // demand when we just want to delete it @@ -478,9 +467,10 @@ int wxEntryReal(int& argc, wxChar **argv) // as with wxEntryStart, we provide an ANSI wrapper int wxEntry(int& argc, char **argv) { - ConvertArgsToUnicode(argc, argv); + auto& initData = wxInitData::Get(); + initData.Initialize(argc, argv); - return wxEntry(gs_initData.argc, gs_initData.argv); + return wxEntry(initData.argc, initData.argv); } // ---------------------------------------------------------------------------- @@ -495,7 +485,7 @@ bool wxInitialize() bool wxInitialize(int& argc, wxChar **argv) { - if ( wxAtomicInc(gs_initData.nInitCount) != 1 ) + if ( wxAtomicInc(gs_nInitCount) != 1 ) { // already initialized return true; @@ -506,7 +496,7 @@ bool wxInitialize(int& argc, wxChar **argv) bool wxInitialize(int& argc, char **argv) { - if ( wxAtomicInc(gs_initData.nInitCount) != 1 ) + if ( wxAtomicInc(gs_nInitCount) != 1 ) { // already initialized return true; @@ -517,7 +507,7 @@ bool wxInitialize(int& argc, char **argv) void wxUninitialize() { - if ( wxAtomicDec(gs_initData.nInitCount) != 0 ) + if ( wxAtomicDec(gs_nInitCount) != 0 ) return; wxEntryCleanup(); From 229b749b34c512365bc92c574374f1dcd715fd64 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 2 Sep 2023 19:34:03 +0200 Subject: [PATCH 14/21] Merge wxMSWCommandLineInit and wxInitData structs This is a bit ugly because we need to have some __WINDOWS__ checks in common code, but less uglier than before, e.g. it allows us to get rid of wxEntryCleanupReal redefinition hack. --- include/wx/private/init.h | 7 +++ src/common/init.cpp | 41 ++++++++++++++--- src/msw/main.cpp | 95 +++++---------------------------------- 3 files changed, 52 insertions(+), 91 deletions(-) diff --git a/include/wx/private/init.h b/include/wx/private/init.h index 5bb9a7ec75..6135eb468c 100644 --- a/include/wx/private/init.h +++ b/include/wx/private/init.h @@ -39,6 +39,13 @@ struct WXDLLIMPEXP_BASE wxInitData int argcOrig = 0; wchar_t** argvOrig = nullptr; +#ifdef __WINDOWS__ + // Initialize from the implicitly available Unicode command line. + void MSWInitialize(); + + wchar_t** argvMSW = nullptr; +#endif // __WINDOWS__ + wxDECLARE_NO_COPY_CLASS(wxInitData); }; diff --git a/src/common/init.cpp b/src/common/init.cpp index 9634c8f70f..4e4db8c3b5 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -152,6 +152,8 @@ wxInitData& wxInitData::Get() void wxInitData::Initialize(int argcIn, char **argvIn) { + wxASSERT_MSG( !argc && !argv, "initializing twice?" ); + argvOrig = new wchar_t *[argcIn + 1]; argv = new wchar_t *[argcIn + 1]; @@ -179,6 +181,30 @@ void wxInitData::Initialize(int argcIn, char **argvIn) argvOrig[wargc] = argv[wargc] = nullptr; } +#ifdef __WINDOWS__ + +void wxInitData::MSWInitialize() +{ + wxASSERT_MSG( !argc && !argvMSW, "initializing twice?" ); + + // Prefer to use the standard function for tokenizing the command line, + // instead of our own wxCmdLineParser::ConvertStringToArgs() which might + // not use exactly the same logic. + + // This pointer will be freed in Free(). + argvMSW = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + + // And this one will be used by the rest of the code. It is separate from + // argvMSW because it could be allocated by Initialize() if a custom entry + // point is used. + argv = argvMSW; + + // However in this case we don't need to set argvOrig because argv itself + // is never modified under Windows. +} + +#endif // __WINDOWS__ + void wxInitData::Free() { if ( argvOrig ) @@ -193,6 +219,14 @@ void wxInitData::Free() wxDELETEA(argv); argcOrig = argc = 0; } + +#ifdef __WINDOWS__ + if ( argvMSW ) + { + ::LocalFree(argvMSW); + argvMSW = nullptr; + } +#endif // __WINDOWS__ } // ---------------------------------------------------------------------------- @@ -390,12 +424,7 @@ static void DoCommonPostCleanup() #endif // wxUSE_LOG } -// for MSW the real wxEntryCleanup() is defined in msw/main.cpp -#ifndef __WINDOWS__ - #define wxEntryCleanupReal wxEntryCleanup -#endif // !__WINDOWS__ - -void wxEntryCleanupReal() +void wxEntryCleanup() { DoCommonPreCleanup(); diff --git a/src/msw/main.cpp b/src/msw/main.cpp index 01dc56b298..f582f73cc9 100644 --- a/src/msw/main.cpp +++ b/src/msw/main.cpp @@ -28,6 +28,8 @@ #include "wx/dynlib.h" +#include "wx/private/init.h" + #include "wx/msw/private.h" #include "wx/msw/seh.h" @@ -38,7 +40,6 @@ // defined in common/init.cpp extern int wxEntryReal(int& argc, wxChar **argv); -extern void wxEntryCleanupReal(); // ============================================================================ // implementation: various entry points @@ -188,78 +189,6 @@ int wxEntry(int& argc, wxChar **argv) // Windows-specific wxEntry // ---------------------------------------------------------------------------- -// Declare the functions used in wxCore to access the command line arguments -// data in wxBase. -WXDLLIMPEXP_BASE void wxMSWCommandLineInit(); -WXDLLIMPEXP_BASE void wxMSWCommandLineCleanup(); -WXDLLIMPEXP_BASE int& wxMSWCommandLineGetArgc(); -WXDLLIMPEXP_BASE wchar_t** wxMSWCommandLineGetArgv(); - -#if wxUSE_BASE - -namespace -{ - -struct wxMSWCommandLineArguments -{ - wxMSWCommandLineArguments() { argc = 0; argv = nullptr; } - - // Initialize this object from the current process command line. - // - // In Unicode build prefer to use the standard function for tokenizing the - // command line, but we can't use it with narrow strings, so use our own - // approximation instead then. - void Init() - { - argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - } - - void Cleanup() - { - if ( argc ) - { - ::LocalFree(argv); - argc = 0; - } - } - - ~wxMSWCommandLineArguments() - { - Cleanup(); - } - - int argc; - wxChar **argv; - - wxDECLARE_NO_COPY_CLASS(wxMSWCommandLineArguments); -}; - -static wxMSWCommandLineArguments wxArgs; - -} // anonymous namespace - -WXDLLIMPEXP_BASE void wxMSWCommandLineInit() -{ - wxArgs.Init(); -} - -WXDLLIMPEXP_BASE void wxMSWCommandLineCleanup() -{ - wxArgs.Cleanup(); -} - -WXDLLIMPEXP_BASE int& wxMSWCommandLineGetArgc() -{ - return wxArgs.argc; -} - -WXDLLIMPEXP_BASE wchar_t** wxMSWCommandLineGetArgv() -{ - return wxArgs.argv; -} - -#endif // wxUSE_BASE - #if wxUSE_GUI // common part of wxMSW-specific wxEntryStart() and wxEntry() overloads @@ -274,7 +203,7 @@ wxMSWEntryCommon(HINSTANCE hInstance, int nCmdShow) wxUnusedVar(nCmdShow); #endif - wxMSWCommandLineInit(); + wxInitData().Get().MSWInitialize(); return true; } @@ -287,7 +216,8 @@ WXDLLEXPORT bool wxEntryStart(HINSTANCE hInstance, if ( !wxMSWEntryCommon(hInstance, nCmdShow) ) return false; - return wxEntryStart(wxMSWCommandLineGetArgc(), wxMSWCommandLineGetArgv()); + auto& initData = wxInitData::Get(); + return wxEntryStart(initData.argc, initData.argv); } WXDLLEXPORT int wxEntry(HINSTANCE hInstance, @@ -298,7 +228,8 @@ WXDLLEXPORT int wxEntry(HINSTANCE hInstance, if ( !wxMSWEntryCommon(hInstance, nCmdShow) ) return -1; - return wxEntry(wxMSWCommandLineGetArgc(), wxMSWCommandLineGetArgv()); + auto& initData = wxInitData::Get(); + return wxEntry(initData.argc, initData.argv); } #endif // wxUSE_GUI @@ -311,16 +242,10 @@ WXDLLEXPORT int wxEntry(HINSTANCE hInstance, int wxEntry() { - wxMSWCommandLineInit(); + wxInitData().Get().MSWInitialize(); - return wxEntry(wxMSWCommandLineGetArgc(), wxMSWCommandLineGetArgv()); -} - -void wxEntryCleanup() -{ - wxEntryCleanupReal(); - - wxMSWCommandLineCleanup(); + auto& initData = wxInitData::Get(); + return wxEntry(initData.argc, initData.argv); } HINSTANCE wxhInstance = 0; From 5f17915e63596f55d65ace90eadc45044755e34e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 2 Sep 2023 19:54:50 +0200 Subject: [PATCH 15/21] Store original command line options passed to main() This allows to avoid converting them back from Unicode to UTF-8 when we need them in wxGTK initialization code and can also be useful elsewhere. --- include/wx/private/init.h | 5 +++++ src/common/init.cpp | 4 ++++ src/gtk/app.cpp | 41 ++++++++++++--------------------------- 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/include/wx/private/init.h b/include/wx/private/init.h index 6135eb468c..df915e7f5d 100644 --- a/include/wx/private/init.h +++ b/include/wx/private/init.h @@ -44,6 +44,11 @@ struct WXDLLIMPEXP_BASE wxInitData void MSWInitialize(); wchar_t** argvMSW = nullptr; +#else // !__WINDOWS__ + // Under other platforms we typically need the original, non-Unicode + // command line version, so we keep it too. Unlike argv that we allocate, + // this pointer doesn't need to be freed. + char** argvA = nullptr; #endif // __WINDOWS__ wxDECLARE_NO_COPY_CLASS(wxInitData); diff --git a/src/common/init.cpp b/src/common/init.cpp index 4e4db8c3b5..c617781bf4 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -154,6 +154,10 @@ void wxInitData::Initialize(int argcIn, char **argvIn) { wxASSERT_MSG( !argc && !argv, "initializing twice?" ); +#ifndef __WINDOWS__ + argvA = argvIn; +#endif + argvOrig = new wchar_t *[argcIn + 1]; argv = new wchar_t *[argcIn + 1]; diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index c350e6ca17..20fee9a92b 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -24,6 +24,8 @@ #include "wx/fontmap.h" #include "wx/msgout.h" +#include "wx/private/init.h" + #include "wx/gtk/private.h" #include "wx/gtk/private/log.h" #include "wx/gtk/private/threads.h" @@ -472,19 +474,6 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_) bool init_result; - int i; - - // gtk_init() wants UTF-8, not wchar_t, so convert - char **argvGTK = new char *[argc_ + 1]; - for ( i = 0; i < argc_; i++ ) - { - argvGTK[i] = wxStrdupA(wxConvUTF8.cWX2MB(argv_[i])); - } - - argvGTK[argc_] = nullptr; - - int argcGTK = argc_; - // Prevent gtk_init_check() from changing the locale automatically for // consistency with the other ports that don't do it. If necessary, // wxApp::SetCLocale() may be explicitly called. @@ -501,15 +490,17 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_) #if defined(__WXGTK4__) init_result = gtk_init_check() != 0; #else - init_result = gtk_init_check( &argcGTK, &argvGTK ) != 0; -#endif + auto argvA = wxInitData::Get().argvA; + + int argcGTK = argc_; + init_result = gtk_init_check( &argcGTK, &argvA ) != 0; if ( argcGTK != argc_ ) { // we have to drop the parameters which were consumed by GTK+ - for ( i = 0; i < argcGTK; i++ ) + for ( int i = 0; i < argcGTK; i++ ) { - while ( strcmp(wxConvUTF8.cWX2MB(argv_[i]), argvGTK[i]) != 0 ) + while ( strcmp(wxConvUTF8.cWX2MB(argv_[i]), argvA[i]) != 0 ) { memmove(argv_ + i, argv_ + i + 1, (argc_ - i)*sizeof(*argv_)); } @@ -517,20 +508,12 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_) argc_ = argcGTK; argv_[argc_] = nullptr; + + this->argc = argc_; + this->argv.Init(argc_, argv_); } //else: gtk_init() didn't modify our parameters - - // free our copy - for ( i = 0; i < argcGTK; i++ ) - { - free(argvGTK[i]); - } - - delete [] argvGTK; - - // update internal arg[cv] as GTK+ may have removed processed options: - this->argc = argc_; - this->argv.Init(argc_, argv_); +#endif if ( !init_result ) { From ad7f5805bf65baea4e8ecebbfe40fcb7778d84d8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 2 Sep 2023 22:02:47 +0200 Subject: [PATCH 16/21] Remove wxInitData::argvOrig which is not needed, finally We never really used the "original" version of the command line, i.e. before it was (possibly) modified by gtk_init_check(), so don't bother keeping it and just free the pointers corresponding to the arguments consumed by GTK in wxGTK code. There should be no real changes, this is just a simplification. --- include/wx/private/init.h | 6 ------ src/common/init.cpp | 39 ++++++++++++++++++--------------------- src/gtk/app.cpp | 1 + 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/include/wx/private/init.h b/include/wx/private/init.h index df915e7f5d..41121c2d02 100644 --- a/include/wx/private/init.h +++ b/include/wx/private/init.h @@ -33,12 +33,6 @@ struct WXDLLIMPEXP_BASE wxInitData int argc = 0; wchar_t** argv = nullptr; - // We also need to keep their original copies as they can be modified - // during initialization (e.g. GTK removes GTK-specific parameters from - // it), but we must free the originally allocated array at the end. - int argcOrig = 0; - wchar_t** argvOrig = nullptr; - #ifdef __WINDOWS__ // Initialize from the implicitly available Unicode command line. void MSWInitialize(); diff --git a/src/common/init.cpp b/src/common/init.cpp index c617781bf4..cdd8dd1239 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -158,7 +158,6 @@ void wxInitData::Initialize(int argcIn, char **argvIn) argvA = argvIn; #endif - argvOrig = new wchar_t *[argcIn + 1]; argv = new wchar_t *[argcIn + 1]; int wargc = 0; @@ -176,13 +175,13 @@ void wxInitData::Initialize(int argcIn, char **argvIn) } else // converted ok { - argvOrig[wargc] = argv[wargc] = wxStrdup(buf); + argv[wargc] = wxStrdup(buf); wargc++; } } - argcOrig = argc = wargc; - argvOrig[wargc] = argv[wargc] = nullptr; + argc = wargc; + argv[wargc] = nullptr; } #ifdef __WINDOWS__ @@ -202,35 +201,33 @@ void wxInitData::MSWInitialize() // argvMSW because it could be allocated by Initialize() if a custom entry // point is used. argv = argvMSW; - - // However in this case we don't need to set argvOrig because argv itself - // is never modified under Windows. } #endif // __WINDOWS__ void wxInitData::Free() { - if ( argvOrig ) - { - for ( int i = 0; i < argcOrig; i++ ) - { - free(argvOrig[i]); - // argv[i] normally points to the same data - } - - wxDELETEA(argvOrig); - wxDELETEA(argv); - argcOrig = argc = 0; - } - #ifdef __WINDOWS__ if ( argvMSW ) { ::LocalFree(argvMSW); - argvMSW = nullptr; + + // If argvMSW is non-null, argv must be the same value, so reset it too. + argv = argvMSW = nullptr; + argc = 0; } #endif // __WINDOWS__ + + if ( argc ) + { + for ( int i = 0; i < argc; i++ ) + { + free(argv[i]); + } + + wxDELETEA(argv); + argc = 0; + } } // ---------------------------------------------------------------------------- diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 20fee9a92b..f72d777867 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -502,6 +502,7 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_) { while ( strcmp(wxConvUTF8.cWX2MB(argv_[i]), argvA[i]) != 0 ) { + free(argv_[i]); memmove(argv_ + i, argv_ + i + 1, (argc_ - i)*sizeof(*argv_)); } } From 497f6f993b15452a31199d9a8458de592be842e4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 2 Sep 2023 22:07:24 +0200 Subject: [PATCH 17/21] Describe ownership rules for wxInitData pointers in comments No real changes, just add some comments. --- include/wx/private/init.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/wx/private/init.h b/include/wx/private/init.h index 41121c2d02..f2368ee32e 100644 --- a/include/wx/private/init.h +++ b/include/wx/private/init.h @@ -29,7 +29,8 @@ struct WXDLLIMPEXP_BASE wxInitData void Free(); - // We always have argc and (Unicode) argv, they're filled by Initialize(). + // We always have argc and (Unicode) argv, they're filled by Initialize() + // and argv as well as its elements are owned by us, see Free(). int argc = 0; wchar_t** argv = nullptr; @@ -37,6 +38,12 @@ struct WXDLLIMPEXP_BASE wxInitData // Initialize from the implicitly available Unicode command line. void MSWInitialize(); + // This pointer is non-null only if MSWInitialize() was called. In this + // case, argv is also set to it and, because this pointer needs to be freed + // using MSW-specific function, argv must not be freed at all. + // + // It's also possible to use Initialize(), even under Windows, in which + // case this pointer remains null and argv must be freed as usual. wchar_t** argvMSW = nullptr; #else // !__WINDOWS__ // Under other platforms we typically need the original, non-Unicode From aec49d9c9d8e056022d89a0cf662239ab80f2a2a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 6 Sep 2023 00:38:15 +0200 Subject: [PATCH 18/21] Use dl_iterate_phdr() in wxDynamicLibrary::ListLoaded() This has the advantage of returning libraries in their load order, which is more useful than the unspecified order that was used before. It also means that this function now has a chance of working under other systems such as FreeBSD, which also provides dl_iterate_phdr(). --- build/cmake/setup.cmake | 1 + configure | 12 +++++ configure.ac | 4 +- interface/wx/dynlib.h | 25 +++++++--- setup.h.in | 3 ++ src/unix/dlunix.cpp | 106 ++++++++++++++-------------------------- 6 files changed, 75 insertions(+), 76 deletions(-) diff --git a/build/cmake/setup.cmake b/build/cmake/setup.cmake index 6818972584..297a251f28 100644 --- a/build/cmake/setup.cmake +++ b/build/cmake/setup.cmake @@ -565,6 +565,7 @@ check_symbol_exists(dlopen dlfcn.h HAVE_DLOPEN) cmake_pop_check_state() if(HAVE_DLOPEN) check_symbol_exists(dladdr dlfcn.h HAVE_DLADDR) + check_symbol_exists(dl_iterate_phdr link.h HAVE_DL_ITERATE_PHDR) endif() if(APPLE) diff --git a/configure b/configure index 801ec6a64b..30f90e8582 100755 --- a/configure +++ b/configure @@ -35456,6 +35456,18 @@ fi +fi +done + + + for ac_func in dl_iterate_phdr +do : + ac_fn_c_check_func "$LINENO" "dl_iterate_phdr" "ac_cv_func_dl_iterate_phdr" +if test "x$ac_cv_func_dl_iterate_phdr" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DL_ITERATE_PHDR 1 +_ACEOF + fi done diff --git a/configure.ac b/configure.ac index ef411b1bf2..d8919d3cc9 100644 --- a/configure.ac +++ b/configure.ac @@ -4839,7 +4839,7 @@ else ]) ]) - dnl check also for dlerror() + dnl check also for some optional functions which we may use if test "$HAVE_DL_FUNCS" = 1; then AC_CHECK_FUNCS(dladdr, AC_DEFINE(HAVE_DLADDR), @@ -4851,6 +4851,8 @@ else ]) ] ) + + AC_CHECK_FUNCS(dl_iterate_phdr) fi fi diff --git a/interface/wx/dynlib.h b/interface/wx/dynlib.h index 43fdf48225..9fc0b12122 100644 --- a/interface/wx/dynlib.h +++ b/interface/wx/dynlib.h @@ -23,6 +23,10 @@ public: /** Retrieves the load address and the size of this module. + Note that under ELF systems (such as Linux) the region defined by the + parameters of this function can be discontinuous and contain multiple + segments belonging to the module with holes between them. + @param addr The pointer to the location to return load address in, may be @NULL. @@ -38,6 +42,8 @@ public: /** Returns the base name of this module, e.g.\ @c "kernel32.dll" or @c "libc-2.3.2.so". + + This name is empty for the main program itself. */ wxString GetName() const; @@ -217,13 +223,20 @@ public: bool IsLoaded() const; /** - This static method returns a wxArray containing the details of all - modules loaded into the address space of the current project. The array - elements are objects of the type: wxDynamicLibraryDetails. The array - will be empty if an error occurred. + This static method returns a vector-like object containing the details + of all modules loaded into the address space of the current project. - This method is currently implemented only under Win32 and Linux and is - useful mostly for diagnostics purposes. + The array elements are objects of the type wxDynamicLibraryDetails. + Under Unix systems they appear in the order in which they libraries + have been loaded, with the module corresponding to the main program + itself coming first. + + The returned array will be empty if an error occurred or if the + function is not implemented for the current platform. + + This method is currently implemented only under Win32 and Unix systems + providing `dl_iterate_phdr()` function (such as Linux) and is useful + mostly for diagnostics purposes. */ static wxDynamicLibraryDetailsArray ListLoaded(); diff --git a/setup.h.in b/setup.h.in index de326beefe..b3bc67dbe9 100644 --- a/setup.h.in +++ b/setup.h.in @@ -935,6 +935,9 @@ /* Define if you have the dladdr function. */ #undef HAVE_DLADDR +/* Define if you have the dl_iterate_phdr function. */ +#undef HAVE_DL_ITERATE_PHDR + /* Define if you have Posix fnctl() function. */ #undef HAVE_FCNTL diff --git a/src/unix/dlunix.cpp b/src/unix/dlunix.cpp index 876738437e..144120504c 100644 --- a/src/unix/dlunix.cpp +++ b/src/unix/dlunix.cpp @@ -33,6 +33,10 @@ #include #endif +#ifdef HAVE_DL_ITERATE_PHDR + #include +#endif + // if some flags are not supported, just ignore them #ifndef RTLD_LAZY #define RTLD_LAZY 0 @@ -125,20 +129,38 @@ void wxDynamicLibrary::ReportError(const wxString& message, // listing loaded modules // ---------------------------------------------------------------------------- +#ifdef HAVE_DL_ITERATE_PHDR + // wxDynamicLibraryDetails declares this class as its friend, so put the code // initializing new details objects here class wxDynamicLibraryDetailsCreator { public: - // create a new wxDynamicLibraryDetails from the given data - static wxDynamicLibraryDetails - New(void *start, void *end, const wxString& path) + static int Callback(dl_phdr_info* info, size_t /* size */, void* data) { + const wxString path = wxString::FromUTF8(info->dlpi_name); + wxDynamicLibraryDetails details; details.m_path = path; details.m_name = path.AfterLast(wxT('/')); - details.m_address = start; - details.m_length = (char *)end - (char *)start; + + // Find the first and last address belonging to this module. + decltype(info->dlpi_addr) start = 0, end = 0; + for ( decltype(info->dlpi_phnum) n = 0; n < info->dlpi_phnum; n++ ) + { + const auto& segment = info->dlpi_phdr[n]; + if ( !segment.p_vaddr || !segment.p_memsz ) + continue; + + if ( !start || segment.p_vaddr < start ) + start = segment.p_vaddr; + + if ( !end || segment.p_vaddr + segment.p_memsz > end ) + end = segment.p_vaddr + segment.p_memsz; + } + + details.m_address = wxUIntToPtr(info->dlpi_addr + start); + details.m_length = end - start; // try to extract the library version from its name const size_t posExt = path.rfind(wxT(".so")); @@ -161,78 +183,24 @@ public: } } - return details; + auto dlls = static_cast(data); + dlls->push_back(std::move(details)); + + // Return 0 to keep iterating. + return 0; } }; +#endif // HAVE_DL_ITERATE_PHDR + /* static */ wxDynamicLibraryDetailsArray wxDynamicLibrary::ListLoaded() { wxDynamicLibraryDetailsArray dlls; -#ifdef __LINUX__ - // examine /proc/self/maps to find out what is loaded in our address space - wxFFile file(wxT("/proc/self/maps")); - if ( file.IsOpened() ) - { - // details of the module currently being parsed - wxString pathCur; - void *startCur = nullptr, - *endCur = nullptr; - - char path[1024]; - char buf[1024]; - while ( fgets(buf, WXSIZEOF(buf), file.fp()) ) - { - // format is: "start-end perm offset maj:min inode path", see proc(5) - void *start, - *end; - switch ( sscanf(buf, "%p-%p %*4s %*p %*02x:%*02x %*d %1023s\n", - &start, &end, path) ) - { - case 2: - // there may be no path column - path[0] = '\0'; - break; - - case 3: - // nothing to do, read everything we wanted - break; - - default: - // chop '\n' - buf[strlen(buf) - 1] = '\0'; - wxLogDebug(wxT("Failed to parse line \"%s\" in /proc/self/maps."), - buf); - continue; - } - - wxASSERT_MSG( start >= endCur, - wxT("overlapping regions in /proc/self/maps?") ); - - wxString pathNew = wxString::FromAscii(path); - if ( pathCur.empty() ) - { - // new module start - pathCur = pathNew; - startCur = start; - endCur = end; - } - else if ( pathCur == pathNew && endCur == end ) - { - // continuation of the same module in the address space - endCur = end; - } - else // end of the current module - { - dlls.Add(wxDynamicLibraryDetailsCreator::New(startCur, - endCur, - pathCur)); - pathCur.clear(); - } - } - } -#endif // __LINUX__ +#ifdef HAVE_DL_ITERATE_PHDR + dl_iterate_phdr(wxDynamicLibraryDetailsCreator::Callback, &dlls); +#endif // HAVE_DL_ITERATE_PHDR return dlls; } From d5d8c1ad28d95a75e3fed785c0ffd800a3365a17 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 24 Aug 2023 03:16:41 +0200 Subject: [PATCH 19/21] Add a hack to fix link problem with wxScrolledCanvas in wx DLL When using MSVC, wxScrolledCanvas could be instantiated multiple times when including wx/scrolwin.h directly and when including wx/grid.h, which declares a class deriving from wxScrolledCanvas, later. Fix this by defining a dummy class deriving from wxScrolledCanvas in the same header, as this is enough to convince MSVC to generate the definition of wxScrolledCanvas itself in the DLL instead of doing it inline. Closes #23774. Closes #23803. --- include/wx/scrolwin.h | 13 +++++++++++++ src/generic/scrlwing.cpp | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/include/wx/scrolwin.h b/include/wx/scrolwin.h index 417a901597..92dda56457 100644 --- a/include/wx/scrolwin.h +++ b/include/wx/scrolwin.h @@ -500,4 +500,17 @@ public: typedef wxScrolled wxScrolledCanvas; +namespace wxPrivate +{ + +// This class is specifically DLL-exported, even though it's trivial, in order +// to ensure that there is only a single copy of wxScrolledCanvas in the wx DLL. +class WXDLLIMPEXP_CORE wxScrolledCanvasDummySubclass : public wxScrolledCanvas +{ +public: + wxScrolledCanvasDummySubclass(); +}; + +} // namespace wxPrivate + #endif // _WX_SCROLWIN_H_BASE_ diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index f1e700193d..4f347509be 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -1532,3 +1532,10 @@ WXLRESULT wxScrolledT_Helper::FilterMSWWindowProc(WXUINT nMsg, WXLRESULT rc) // NB: skipping wxScrolled in wxRTTI information because being a template, // it doesn't and can't implement wxRTTI support wxIMPLEMENT_DYNAMIC_CLASS(wxScrolledWindow, wxPanel); + +namespace wxPrivate +{ + +wxScrolledCanvasDummySubclass::wxScrolledCanvasDummySubclass() = default; + +} From 19936c21762ce04616ac2a7267fcca1221fc13f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= Date: Mon, 28 Aug 2023 23:53:14 +0000 Subject: [PATCH 20/21] Don't clobber std::string_view equality with char * Make the wxString(std::string_view) constructor explicit. Otherwise, when comparing a std::string_view with a const char *, the cast to wxString will be considered as a candidate for the comparison, ultimately causing an "ambiguous overload for 'operator=='" error. For example, this sample only builds if the constructor is explicit: #include #include int main() { std::string_view view = "abc"; const char *str = "abc"; return view == str; } However, making the constructor explicit will break assignment: std::string_view view = "abc"; wxString s; s = view; // Error: no match for "operator=" That we can fix by implementing operator=(std::string_view) That, however, introduces another ambiguity: std::string str = "abc"; wxString s; s = str; // Ambiguous between s = wxString(str) and s = std::string_view(str) That we can fix by implementing operator=(std::string) Finally, note that some rather obscure ambiguities remain, such as: wxString s; s = {"abc", 2}; // Ambiguous between s = wxString("abc", 2) and s = std::string_view("abc", 2) Avoiding them is not simple (https://cplusplus.github.io/LWG/issue2946) and doesn't add much value. Closes #23834. --- docs/changes.txt | 5 +++++ include/wx/string.h | 27 +++++++++++++++++++++++++-- tests/strings/stdstrings.cpp | 9 +++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 174af147fa..624767ba25 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -108,6 +108,11 @@ Changes in behaviour which may result in build errors compatible with the previous wxWidgets versions, but now compare values, and not pointers, in their Index() member function. +- Due to the possibility to construct wxString from std::string_view some + previously valid code, such as "wxstr = {"Hello", 2}", is now ambiguous. + Please use explicit class name, e.g. "wxstr = wxString{"Hello", 2}" to + preserve the previous behaviour. + - Generic wxSearchCtrl doesn't provide methods that make sense only for multiline text controls any longer, for consistency with the other ports. diff --git a/include/wx/string.h b/include/wx/string.h index be59395409..a324feef06 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -1263,7 +1263,7 @@ public: #endif #ifdef wxHAS_STD_STRING_VIEW - wxString(std::wstring_view view) + explicit wxString(std::wstring_view view) { assign(view.data(), view.length()); } #endif // wxHAS_STD_STRING_VIEW @@ -1272,7 +1272,7 @@ public: { assign(str.c_str(), str.length()); } #ifdef wxHAS_STD_STRING_VIEW - wxString(std::string_view view) + explicit wxString(std::string_view view) { assign(view.data(), view.length()); } #endif // wxHAS_STD_STRING_VIEW #endif // wxNO_IMPLICIT_WXSTRING_ENCODING @@ -1883,6 +1883,29 @@ public: { return assign(s); } #endif // wxNO_IMPLICIT_WXSTRING_ENCODING +#if wxUSE_UNICODE_WCHAR + wxString& operator=(const std::wstring& str) { m_impl = str; return *this; } + wxString& operator=(std::wstring&& str) noexcept { m_impl = std::move(str); return *this; } +#else // wxUSE_UNICODE_UTF8 + wxString& operator=(const std::wstring& str) + { return assign(str.c_str(), str.length()); } +#endif + +#ifdef wxHAS_STD_STRING_VIEW + wxString& operator=(std::wstring_view view) + { return assign(view.data(), view.length()); } +#endif // wxHAS_STD_STRING_VIEW + +#ifndef wxNO_IMPLICIT_WXSTRING_ENCODING + wxString& operator=(const std::string& str) + { return assign(str.c_str(), str.length()); } + + #ifdef wxHAS_STD_STRING_VIEW + wxString& operator=(std::string_view view) + { return assign(view.data(), view.length()); } + #endif // wxHAS_STD_STRING_VIEW +#endif // wxNO_IMPLICIT_WXSTRING_ENCODING + // string concatenation // in place concatenation /* diff --git a/tests/strings/stdstrings.cpp b/tests/strings/stdstrings.cpp index f3ff37f2ee..c695dd21fc 100644 --- a/tests/strings/stdstrings.cpp +++ b/tests/strings/stdstrings.cpp @@ -690,5 +690,14 @@ TEST_CASE("StdString::View", "[stdstring]") std::string_view strViewInvalidUTF(strInvalidUTF); CHECK( "" == wxString::FromUTF8(strViewInvalidUTF) ); + + /* Ensure we don't clobber comparisons on base types */ + std::string_view view = "abc"; + const char *str = "abc"; + CHECK( view == str ); + + std::wstring_view wview = L"abc"; + const wchar_t *wstr = L"abc"; + CHECK( wview == wstr ); } #endif // wxHAS_STD_STRING_VIEW From 952de605f622cc7a3c30257365046ecd1a307808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= Date: Fri, 25 Aug 2023 03:07:54 +0000 Subject: [PATCH 21/21] Handle map/unmap events on Wayland's wxGLCanvasEGL Fixes hiding a wxGLCanvas on Wayland, either directly (`->Show(false)`) or indirectly (e.g. when it is contained in a wxNotebook). On Wayland, unlike on X11, to show the canvas on the screen, we need to create a Wayland subsurface. This subsurface is detached from the GTK widget associated to the canvas, thus it is not automatically mapped or unmapped when the associated GTK widget is. Rather, we need to manually keep it in sync with the widget's state. Knowing what has to be done to map and unmap the canvas, while dealing with edge cases properly, is not easy to someone not used to Wayland. When the canvas is mapped, we have this graph of resources: EGL Surface (m_surface) | | v wl_egl window (m_wlEGLWindow) | | v Canvas wl_surface GDK's toplevel window wl_surface (m_wlSurface) (gdk_wayland_window_get_wl_surface(w)) \ which is shown to the user \ ^ \ / \ / v / Subsurface (m_wlSubsurface) to overlay the canvas onto the toplevel window A simple way would be to destroy everything (m_surface, m_wlEGLWindow, m_wlSurface, m_wlSubsurface) on unmap, and re-create it again on map. Inefficiencies aside, this mostly works. However, it can mess with the current OpenGL context. For example, suppose we have a (fragile) program that places a canvas inside one of wxNotebook's tabs, and makes the OpenGL context current only once at startup (e.g. on wxEVT_SHOW). Switching between tabs will destroy and re-create the EGL Surface, so the canvas will not be properly rendered when going back to its tab. So we need to be smarter, and find some way to hide the subsurface instead. The obvious way would be to unmap the canvas wl_surface (m_wlSurface), as according to the Wayland spec., "a sub-surface is hidden [...] if a NULL wl_buffer is applied [to the canvas surface]." (https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_subsurface) However, as far as I can tell, this can't be done. There's no API to hide an wl_egl window, and directly applying a NULL wl_buffer to the canvas surface initially hides it, but seems to breaks the associated window so that it crashes when one attempts to show it again. So what remains, is destroying the overlay subsurface (m_wlSubsurface). When doing it, to the spec, "the wl_surface is unmapped immediately.". And not only does this work, but it also deals with the annoying fact that on current GTK3 versions, when the GDK's toplevel window is unmapped, its wl_surface is not just unmapped, but entirely destroyed. (Side note: This may not have been intended, and has been changed for GTK4, see: https://gitlab.gnome.org/GNOME/gtk/-/commit/5d3cec5441ca) So we'd have to re-create the subsurface because of this anyway. So, this works nicely, and as far as I can tell (documentation is a bit scarce), there's no problem to leaving m_wlSurface (and its associated m_wlEGLWindow and m_surface) unmapped in this way. Fixes #22580. Closes #23835. --- include/wx/unix/glegl.h | 5 +++ src/unix/glegl.cpp | 91 +++++++++++++++++++++++++++++++++-------- 2 files changed, 80 insertions(+), 16 deletions(-) diff --git a/include/wx/unix/glegl.h b/include/wx/unix/glegl.h index 59e830e4da..f6d455b397 100644 --- a/include/wx/unix/glegl.h +++ b/include/wx/unix/glegl.h @@ -69,6 +69,11 @@ public: virtual ~wxGLCanvasEGL(); + // Wayland-specific callbacks + // -------------------------- + + void CreateWaylandSubsurface(); + void DestroyWaylandSubsurface(); // implement wxGLCanvasBase methods // -------------------------------- diff --git a/src/unix/glegl.cpp b/src/unix/glegl.cpp index 4236ff06a8..7b177cd5c8 100644 --- a/src/unix/glegl.cpp +++ b/src/unix/glegl.cpp @@ -389,6 +389,14 @@ EGLDisplay wxGLCanvasEGL::GetDisplay() // Helper declared as friend in the header and so can access m_wlSubsurface. void wxEGLUpdatePosition(wxGLCanvasEGL* win) { + if ( !win->m_wlSubsurface ) + { + // In some circumstances such as when reparenting a canvas between two hidden + // toplevel windows, GTK will call size-allocate before mapping the canvas + // Ignore the call, the position will be fixed when it is mapped + return; + } + int x, y; gdk_window_get_origin(win->GTKGetDrawingWindow(), &x, &y); wl_subsurface_set_position(win->m_wlSubsurface, x, y); @@ -439,6 +447,17 @@ static const struct wl_callback_listener wl_frame_listener = { wl_frame_callback_handler }; +static gboolean gtk_glcanvas_map_callback(GtkWidget *, GdkEventAny *, wxGLCanvasEGL *win) +{ + win->CreateWaylandSubsurface(); + return FALSE; +} + +static void gtk_glcanvas_unmap_callback(GtkWidget *, wxGLCanvasEGL *win) +{ + win->DestroyWaylandSubsurface(); +} + static void gtk_glcanvas_size_callback(GtkWidget *widget, GtkAllocation *, wxGLCanvasEGL *win) @@ -462,16 +481,16 @@ bool wxGLCanvasEGL::CreateSurface() return false; } - if ( m_surface != EGL_NO_SURFACE ) - { - eglDestroySurface(m_surface, m_display); - m_surface = EGL_NO_SURFACE; - } - GdkWindow *window = GTKGetDrawingWindow(); #ifdef GDK_WINDOWING_X11 if (wxGTKImpl::IsX11(window)) { + if ( m_surface != EGL_NO_SURFACE ) + { + eglDestroySurface(m_surface, m_display); + m_surface = EGL_NO_SURFACE; + } + m_xwindow = GDK_WINDOW_XID(window); m_surface = eglCreatePlatformWindowSurface(m_display, *m_config, &m_xwindow, nullptr); @@ -480,10 +499,16 @@ bool wxGLCanvasEGL::CreateSurface() #ifdef GDK_WINDOWING_WAYLAND if (wxGTKImpl::IsWayland(window)) { + if ( m_wlSurface ) + { + // Already created (can happen when the canvas is un-realized then + // re-realized, for example, when the canvas is re-parented) + return true; + } + int w = gdk_window_get_width(window); int h = gdk_window_get_height(window); struct wl_display *display = gdk_wayland_display_get_wl_display(gdk_window_get_display(window)); - struct wl_surface *surface = gdk_wayland_window_get_wl_surface(window); struct wl_registry *registry = wl_display_get_registry(display); wl_registry_add_listener(registry, &wl_registry_listener, this); wl_display_roundtrip(display); @@ -494,21 +519,25 @@ bool wxGLCanvasEGL::CreateSurface() } m_wlSurface = wl_compositor_create_surface(m_wlCompositor); m_wlRegion = wl_compositor_create_region(m_wlCompositor); - m_wlSubsurface = wl_subcompositor_get_subsurface(m_wlSubcompositor, - m_wlSurface, - surface); wl_surface_set_input_region(m_wlSurface, m_wlRegion); - wl_subsurface_set_desync(m_wlSubsurface); - wxEGLUpdatePosition(this); int scale = gdk_window_get_scale_factor(window); wl_surface_set_buffer_scale(m_wlSurface, scale); m_wlEGLWindow = wl_egl_window_create(m_wlSurface, w * scale, h * scale); m_surface = eglCreatePlatformWindowSurface(m_display, *m_config, m_wlEGLWindow, nullptr); - m_wlFrameCallbackHandler = wl_surface_frame(surface); - wl_callback_add_listener(m_wlFrameCallbackHandler, - &wl_frame_listener, this); + + // We need to use "map-event" instead of "map" to ensure that the + // widget's underlying Wayland surface has been created. + // Otherwise, gdk_wayland_window_get_wl_surface may return nullptr, + // for example when hiding then showing a window containing a canvas. + gtk_widget_add_events(m_widget, GDK_STRUCTURE_MASK); + g_signal_connect(m_widget, "map-event", + G_CALLBACK(gtk_glcanvas_map_callback), this); + // However, note the use of "unmap" instead of the later "unmap-event" + // Not unmapping the canvas as soon as possible causes problems when reparenting + g_signal_connect(m_widget, "unmap", + G_CALLBACK(gtk_glcanvas_unmap_callback), this); g_signal_connect(m_widget, "size-allocate", G_CALLBACK(gtk_glcanvas_size_callback), this); @@ -535,9 +564,39 @@ wxGLCanvasEGL::~wxGLCanvasEGL() eglDestroySurface(m_display, m_surface); #ifdef GDK_WINDOWING_WAYLAND g_clear_pointer(&m_wlEGLWindow, wl_egl_window_destroy); - g_clear_pointer(&m_wlSubsurface, wl_subsurface_destroy); g_clear_pointer(&m_wlSurface, wl_surface_destroy); +#endif +} + +void wxGLCanvasEGL::CreateWaylandSubsurface() +{ +#ifdef GDK_WINDOWING_WAYLAND + GdkWindow *window = GTKGetDrawingWindow(); + struct wl_surface *surface = gdk_wayland_window_get_wl_surface(window); + + m_wlSubsurface = wl_subcompositor_get_subsurface(m_wlSubcompositor, + m_wlSurface, + surface); + wl_subsurface_set_desync(m_wlSubsurface); + wxEGLUpdatePosition(this); + m_wlFrameCallbackHandler = wl_surface_frame(surface); + wl_callback_add_listener(m_wlFrameCallbackHandler, + &wl_frame_listener, this); + + if ( m_surface == EGL_NO_SURFACE ) + { + wxFAIL_MSG("Unable to create EGL surface"); + return; + } +#endif +} + +void wxGLCanvasEGL::DestroyWaylandSubsurface() +{ +#ifdef GDK_WINDOWING_WAYLAND + g_clear_pointer(&m_wlSubsurface, wl_subsurface_destroy); g_clear_pointer(&m_wlFrameCallbackHandler, wl_callback_destroy); + m_readyToDraw = false; #endif }