From 7f603c959f47b588fce13e74f5a6575b7be9ac00 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 7 Jun 2016 22:04:53 +0200 Subject: [PATCH 1/5] Move wxPanel::HasTransparentBackground() to wxControlContainer This MSW-specific hack is actually needed by all windows containing more than one control, even if they don't derive from wxPanel (which is just the most commonly used class for such windows), otherwise the parts of the window not covered by the child controls won't have the correct appearance when the window itself is inside a wxNotebook. So do this for all classes inheriting from wxNavigationEnabled<>, notably this fixes the wrong background for all kinds of picker controls (wxDirPickerCtrl, wxFilePickerCtrl, ...) when they're used inside a wxNotebook. After moving this method out of wxPanel, src/msw/panel.cpp became empty, so also delete it and remove it from {bake,make,project} files. --- Makefile.in | 24 +++------------- build/bakefiles/files.bkl | 1 - build/files | 1 - build/msw/makefile.bcc | 24 +++------------- build/msw/makefile.gcc | 24 +++------------- build/msw/makefile.vc | 24 +++------------- build/msw/wx_core.vcxproj | 1 - build/msw/wx_core.vcxproj.filters | 3 -- build/msw/wx_vc7_core.vcproj | 3 -- build/msw/wx_vc8_core.vcproj | 4 --- build/msw/wx_vc9_core.vcproj | 4 --- include/wx/containr.h | 17 ++++++++++++ include/wx/msw/panel.h | 6 ---- src/common/containr.cpp | 18 ++++++++++++ src/msw/panel.cpp | 46 ------------------------------- 15 files changed, 51 insertions(+), 149 deletions(-) delete mode 100644 src/msw/panel.cpp diff --git a/Makefile.in b/Makefile.in index 5e37a781e1..cf9010566b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -4325,7 +4325,7 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS = \ monodll_ribbon_control.o \ monodll_gallery.o \ monodll_page.o \ - monodll_ribbon_panel.o \ + monodll_panel.o \ monodll_ribbon_toolbar.o \ monodll_xh_ribbon.o \ monodll_richtextbuffer.o \ @@ -5357,7 +5357,6 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS = \ monodll_msw_notebook.o \ monodll_access.o \ monodll_ownerdrw.o \ - monodll_msw_panel.o \ monodll_progdlg.o \ monodll_msw_radiobox.o \ monodll_msw_radiobut.o \ @@ -6347,7 +6346,7 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS_1 = \ monolib_ribbon_control.o \ monolib_gallery.o \ monolib_page.o \ - monolib_ribbon_panel.o \ + monolib_panel.o \ monolib_ribbon_toolbar.o \ monolib_xh_ribbon.o \ monolib_richtextbuffer.o \ @@ -7379,7 +7378,6 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_1 = \ monolib_msw_notebook.o \ monolib_access.o \ monolib_ownerdrw.o \ - monolib_msw_panel.o \ monolib_progdlg.o \ monolib_msw_radiobox.o \ monolib_msw_radiobut.o \ @@ -9545,7 +9543,6 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_2 = \ coredll_msw_notebook.o \ coredll_access.o \ coredll_ownerdrw.o \ - coredll_panel.o \ coredll_progdlg.o \ coredll_msw_radiobox.o \ coredll_msw_radiobut.o \ @@ -11019,7 +11016,6 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_3 = \ corelib_msw_notebook.o \ corelib_access.o \ corelib_ownerdrw.o \ - corelib_panel.o \ corelib_progdlg.o \ corelib_msw_radiobox.o \ corelib_msw_radiobut.o \ @@ -16396,9 +16392,6 @@ monodll_access.o: $(srcdir)/src/msw/ole/access.cpp $(MONODLL_ODEP) monodll_ownerdrw.o: $(srcdir)/src/msw/ownerdrw.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/ownerdrw.cpp -monodll_msw_panel.o: $(srcdir)/src/msw/panel.cpp $(MONODLL_ODEP) - $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/panel.cpp - monodll_progdlg.o: $(srcdir)/src/msw/progdlg.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/progdlg.cpp @@ -17182,7 +17175,7 @@ monodll_gallery.o: $(srcdir)/src/ribbon/gallery.cpp $(MONODLL_ODEP) monodll_page.o: $(srcdir)/src/ribbon/page.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/ribbon/page.cpp -monodll_ribbon_panel.o: $(srcdir)/src/ribbon/panel.cpp $(MONODLL_ODEP) +monodll_panel.o: $(srcdir)/src/ribbon/panel.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/ribbon/panel.cpp monodll_ribbon_toolbar.o: $(srcdir)/src/ribbon/toolbar.cpp $(MONODLL_ODEP) @@ -21247,9 +21240,6 @@ monolib_access.o: $(srcdir)/src/msw/ole/access.cpp $(MONOLIB_ODEP) monolib_ownerdrw.o: $(srcdir)/src/msw/ownerdrw.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/ownerdrw.cpp -monolib_msw_panel.o: $(srcdir)/src/msw/panel.cpp $(MONOLIB_ODEP) - $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/panel.cpp - monolib_progdlg.o: $(srcdir)/src/msw/progdlg.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/progdlg.cpp @@ -22033,7 +22023,7 @@ monolib_gallery.o: $(srcdir)/src/ribbon/gallery.cpp $(MONOLIB_ODEP) monolib_page.o: $(srcdir)/src/ribbon/page.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/ribbon/page.cpp -monolib_ribbon_panel.o: $(srcdir)/src/ribbon/panel.cpp $(MONOLIB_ODEP) +monolib_panel.o: $(srcdir)/src/ribbon/panel.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/ribbon/panel.cpp monolib_ribbon_toolbar.o: $(srcdir)/src/ribbon/toolbar.cpp $(MONOLIB_ODEP) @@ -26761,9 +26751,6 @@ coredll_access.o: $(srcdir)/src/msw/ole/access.cpp $(COREDLL_ODEP) coredll_ownerdrw.o: $(srcdir)/src/msw/ownerdrw.cpp $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/ownerdrw.cpp -coredll_panel.o: $(srcdir)/src/msw/panel.cpp $(COREDLL_ODEP) - $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/panel.cpp - coredll_progdlg.o: $(srcdir)/src/msw/progdlg.cpp $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/progdlg.cpp @@ -30157,9 +30144,6 @@ corelib_access.o: $(srcdir)/src/msw/ole/access.cpp $(CORELIB_ODEP) corelib_ownerdrw.o: $(srcdir)/src/msw/ownerdrw.cpp $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/ownerdrw.cpp -corelib_panel.o: $(srcdir)/src/msw/panel.cpp $(CORELIB_ODEP) - $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/panel.cpp - corelib_progdlg.o: $(srcdir)/src/msw/progdlg.cpp $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/progdlg.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 99f3c3231c..609ede490d 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -1969,7 +1969,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/msw/notebook.cpp src/msw/ole/access.cpp src/msw/ownerdrw.cpp - src/msw/panel.cpp src/msw/progdlg.cpp src/msw/radiobox.cpp src/msw/radiobut.cpp diff --git a/build/files b/build/files index 7fcb062989..af994ad48a 100644 --- a/build/files +++ b/build/files @@ -1827,7 +1827,6 @@ MSW_SRC = src/msw/notebook.cpp src/msw/ole/access.cpp src/msw/ownerdrw.cpp - src/msw/panel.cpp src/msw/progdlg.cpp src/msw/radiobox.cpp src/msw/radiobut.cpp diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index 0d649544fc..fe3d0a2a44 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -1772,7 +1772,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_ribbon_control.obj \ $(OBJS)\monodll_gallery.obj \ $(OBJS)\monodll_page.obj \ - $(OBJS)\monodll_ribbon_panel.obj \ + $(OBJS)\monodll_panel.obj \ $(OBJS)\monodll_ribbon_toolbar.obj \ $(OBJS)\monodll_xh_ribbon.obj \ $(OBJS)\monodll_richtextbuffer.obj \ @@ -1887,7 +1887,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_msw_notebook.obj \ $(OBJS)\monodll_access.obj \ $(OBJS)\monodll_ownerdrw.obj \ - $(OBJS)\monodll_msw_panel.obj \ $(OBJS)\monodll_progdlg.obj \ $(OBJS)\monodll_msw_radiobox.obj \ $(OBJS)\monodll_msw_radiobut.obj \ @@ -2604,7 +2603,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_ribbon_control.obj \ $(OBJS)\monolib_gallery.obj \ $(OBJS)\monolib_page.obj \ - $(OBJS)\monolib_ribbon_panel.obj \ + $(OBJS)\monolib_panel.obj \ $(OBJS)\monolib_ribbon_toolbar.obj \ $(OBJS)\monolib_xh_ribbon.obj \ $(OBJS)\monolib_richtextbuffer.obj \ @@ -2719,7 +2718,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_msw_notebook.obj \ $(OBJS)\monolib_access.obj \ $(OBJS)\monolib_ownerdrw.obj \ - $(OBJS)\monolib_msw_panel.obj \ $(OBJS)\monolib_progdlg.obj \ $(OBJS)\monolib_msw_radiobox.obj \ $(OBJS)\monolib_msw_radiobut.obj \ @@ -3423,7 +3421,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_msw_notebook.obj \ $(OBJS)\coredll_access.obj \ $(OBJS)\coredll_ownerdrw.obj \ - $(OBJS)\coredll_panel.obj \ $(OBJS)\coredll_progdlg.obj \ $(OBJS)\coredll_msw_radiobox.obj \ $(OBJS)\coredll_msw_radiobut.obj \ @@ -3995,7 +3992,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_msw_notebook.obj \ $(OBJS)\corelib_access.obj \ $(OBJS)\corelib_ownerdrw.obj \ - $(OBJS)\corelib_panel.obj \ $(OBJS)\corelib_progdlg.obj \ $(OBJS)\corelib_msw_radiobox.obj \ $(OBJS)\corelib_msw_radiobut.obj \ @@ -6888,9 +6884,6 @@ $(OBJS)\monodll_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\monodll_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\monodll_msw_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\monodll_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\progdlg.cpp @@ -7527,7 +7520,7 @@ $(OBJS)\monodll_gallery.obj: ..\..\src\ribbon\gallery.cpp $(OBJS)\monodll_page.obj: ..\..\src\ribbon\page.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\ribbon\page.cpp -$(OBJS)\monodll_ribbon_panel.obj: ..\..\src\ribbon\panel.cpp +$(OBJS)\monodll_panel.obj: ..\..\src\ribbon\panel.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\ribbon\panel.cpp $(OBJS)\monodll_ribbon_toolbar.obj: ..\..\src\ribbon\toolbar.cpp @@ -9432,9 +9425,6 @@ $(OBJS)\monolib_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\monolib_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\monolib_msw_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\monolib_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\progdlg.cpp @@ -10071,7 +10061,7 @@ $(OBJS)\monolib_gallery.obj: ..\..\src\ribbon\gallery.cpp $(OBJS)\monolib_page.obj: ..\..\src\ribbon\page.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\ribbon\page.cpp -$(OBJS)\monolib_ribbon_panel.obj: ..\..\src\ribbon\panel.cpp +$(OBJS)\monolib_panel.obj: ..\..\src\ribbon\panel.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\ribbon\panel.cpp $(OBJS)\monolib_ribbon_toolbar.obj: ..\..\src\ribbon\toolbar.cpp @@ -12390,9 +12380,6 @@ $(OBJS)\coredll_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\coredll_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\coredll_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\coredll_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\progdlg.cpp @@ -13870,9 +13857,6 @@ $(OBJS)\corelib_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\corelib_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\corelib_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\corelib_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\progdlg.cpp diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 02d6ba2299..6a988817c3 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -1791,7 +1791,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_ribbon_control.o \ $(OBJS)\monodll_gallery.o \ $(OBJS)\monodll_page.o \ - $(OBJS)\monodll_ribbon_panel.o \ + $(OBJS)\monodll_panel.o \ $(OBJS)\monodll_ribbon_toolbar.o \ $(OBJS)\monodll_xh_ribbon.o \ $(OBJS)\monodll_richtextbuffer.o \ @@ -1907,7 +1907,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_msw_notebook.o \ $(OBJS)\monodll_access.o \ $(OBJS)\monodll_ownerdrw.o \ - $(OBJS)\monodll_msw_panel.o \ $(OBJS)\monodll_progdlg.o \ $(OBJS)\monodll_msw_radiobox.o \ $(OBJS)\monodll_msw_radiobut.o \ @@ -2629,7 +2628,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_ribbon_control.o \ $(OBJS)\monolib_gallery.o \ $(OBJS)\monolib_page.o \ - $(OBJS)\monolib_ribbon_panel.o \ + $(OBJS)\monolib_panel.o \ $(OBJS)\monolib_ribbon_toolbar.o \ $(OBJS)\monolib_xh_ribbon.o \ $(OBJS)\monolib_richtextbuffer.o \ @@ -2745,7 +2744,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_msw_notebook.o \ $(OBJS)\monolib_access.o \ $(OBJS)\monolib_ownerdrw.o \ - $(OBJS)\monolib_msw_panel.o \ $(OBJS)\monolib_progdlg.o \ $(OBJS)\monolib_msw_radiobox.o \ $(OBJS)\monolib_msw_radiobut.o \ @@ -3465,7 +3463,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_msw_notebook.o \ $(OBJS)\coredll_access.o \ $(OBJS)\coredll_ownerdrw.o \ - $(OBJS)\coredll_panel.o \ $(OBJS)\coredll_progdlg.o \ $(OBJS)\coredll_msw_radiobox.o \ $(OBJS)\coredll_msw_radiobut.o \ @@ -4045,7 +4042,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_msw_notebook.o \ $(OBJS)\corelib_access.o \ $(OBJS)\corelib_ownerdrw.o \ - $(OBJS)\corelib_panel.o \ $(OBJS)\corelib_progdlg.o \ $(OBJS)\corelib_msw_radiobox.o \ $(OBJS)\corelib_msw_radiobut.o \ @@ -7064,9 +7060,6 @@ $(OBJS)\monodll_access.o: ../../src/msw/ole/access.cpp $(OBJS)\monodll_ownerdrw.o: ../../src/msw/ownerdrw.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< -$(OBJS)\monodll_msw_panel.o: ../../src/msw/panel.cpp - $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< - $(OBJS)\monodll_progdlg.o: ../../src/msw/progdlg.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< @@ -7703,7 +7696,7 @@ $(OBJS)\monodll_gallery.o: ../../src/ribbon/gallery.cpp $(OBJS)\monodll_page.o: ../../src/ribbon/page.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< -$(OBJS)\monodll_ribbon_panel.o: ../../src/ribbon/panel.cpp +$(OBJS)\monodll_panel.o: ../../src/ribbon/panel.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\monodll_ribbon_toolbar.o: ../../src/ribbon/toolbar.cpp @@ -9610,9 +9603,6 @@ $(OBJS)\monolib_access.o: ../../src/msw/ole/access.cpp $(OBJS)\monolib_ownerdrw.o: ../../src/msw/ownerdrw.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< -$(OBJS)\monolib_msw_panel.o: ../../src/msw/panel.cpp - $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< - $(OBJS)\monolib_progdlg.o: ../../src/msw/progdlg.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< @@ -10249,7 +10239,7 @@ $(OBJS)\monolib_gallery.o: ../../src/ribbon/gallery.cpp $(OBJS)\monolib_page.o: ../../src/ribbon/page.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< -$(OBJS)\monolib_ribbon_panel.o: ../../src/ribbon/panel.cpp +$(OBJS)\monolib_panel.o: ../../src/ribbon/panel.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\monolib_ribbon_toolbar.o: ../../src/ribbon/toolbar.cpp @@ -12570,9 +12560,6 @@ $(OBJS)\coredll_access.o: ../../src/msw/ole/access.cpp $(OBJS)\coredll_ownerdrw.o: ../../src/msw/ownerdrw.cpp $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< -$(OBJS)\coredll_panel.o: ../../src/msw/panel.cpp - $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< - $(OBJS)\coredll_progdlg.o: ../../src/msw/progdlg.cpp $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< @@ -14050,9 +14037,6 @@ $(OBJS)\corelib_access.o: ../../src/msw/ole/access.cpp $(OBJS)\corelib_ownerdrw.o: ../../src/msw/ownerdrw.cpp $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< -$(OBJS)\corelib_panel.o: ../../src/msw/panel.cpp - $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< - $(OBJS)\corelib_progdlg.o: ../../src/msw/progdlg.cpp $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 0ec2923388..1fd3de3824 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -2073,7 +2073,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_ribbon_control.obj \ $(OBJS)\monodll_gallery.obj \ $(OBJS)\monodll_page.obj \ - $(OBJS)\monodll_ribbon_panel.obj \ + $(OBJS)\monodll_panel.obj \ $(OBJS)\monodll_ribbon_toolbar.obj \ $(OBJS)\monodll_xh_ribbon.obj \ $(OBJS)\monodll_richtextbuffer.obj \ @@ -2188,7 +2188,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_msw_notebook.obj \ $(OBJS)\monodll_access.obj \ $(OBJS)\monodll_ownerdrw.obj \ - $(OBJS)\monodll_msw_panel.obj \ $(OBJS)\monodll_progdlg.obj \ $(OBJS)\monodll_msw_radiobox.obj \ $(OBJS)\monodll_msw_radiobut.obj \ @@ -2911,7 +2910,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_ribbon_control.obj \ $(OBJS)\monolib_gallery.obj \ $(OBJS)\monolib_page.obj \ - $(OBJS)\monolib_ribbon_panel.obj \ + $(OBJS)\monolib_panel.obj \ $(OBJS)\monolib_ribbon_toolbar.obj \ $(OBJS)\monolib_xh_ribbon.obj \ $(OBJS)\monolib_richtextbuffer.obj \ @@ -3026,7 +3025,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_msw_notebook.obj \ $(OBJS)\monolib_access.obj \ $(OBJS)\monolib_ownerdrw.obj \ - $(OBJS)\monolib_msw_panel.obj \ $(OBJS)\monolib_progdlg.obj \ $(OBJS)\monolib_msw_radiobox.obj \ $(OBJS)\monolib_msw_radiobut.obj \ @@ -3796,7 +3794,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_msw_notebook.obj \ $(OBJS)\coredll_access.obj \ $(OBJS)\coredll_ownerdrw.obj \ - $(OBJS)\coredll_panel.obj \ $(OBJS)\coredll_progdlg.obj \ $(OBJS)\coredll_msw_radiobox.obj \ $(OBJS)\coredll_msw_radiobut.obj \ @@ -4374,7 +4371,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_msw_notebook.obj \ $(OBJS)\corelib_access.obj \ $(OBJS)\corelib_ownerdrw.obj \ - $(OBJS)\corelib_panel.obj \ $(OBJS)\corelib_progdlg.obj \ $(OBJS)\corelib_msw_radiobox.obj \ $(OBJS)\corelib_msw_radiobut.obj \ @@ -7581,9 +7577,6 @@ $(OBJS)\monodll_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\monodll_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\monodll_msw_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\monodll_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\progdlg.cpp @@ -8220,7 +8213,7 @@ $(OBJS)\monodll_gallery.obj: ..\..\src\ribbon\gallery.cpp $(OBJS)\monodll_page.obj: ..\..\src\ribbon\page.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\ribbon\page.cpp -$(OBJS)\monodll_ribbon_panel.obj: ..\..\src\ribbon\panel.cpp +$(OBJS)\monodll_panel.obj: ..\..\src\ribbon\panel.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\ribbon\panel.cpp $(OBJS)\monodll_ribbon_toolbar.obj: ..\..\src\ribbon\toolbar.cpp @@ -10125,9 +10118,6 @@ $(OBJS)\monolib_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\monolib_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\monolib_msw_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\monolib_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\progdlg.cpp @@ -10764,7 +10754,7 @@ $(OBJS)\monolib_gallery.obj: ..\..\src\ribbon\gallery.cpp $(OBJS)\monolib_page.obj: ..\..\src\ribbon\page.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\ribbon\page.cpp -$(OBJS)\monolib_ribbon_panel.obj: ..\..\src\ribbon\panel.cpp +$(OBJS)\monolib_panel.obj: ..\..\src\ribbon\panel.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\ribbon\panel.cpp $(OBJS)\monolib_ribbon_toolbar.obj: ..\..\src\ribbon\toolbar.cpp @@ -13083,9 +13073,6 @@ $(OBJS)\coredll_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\coredll_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\coredll_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\coredll_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\progdlg.cpp @@ -14563,9 +14550,6 @@ $(OBJS)\corelib_access.obj: ..\..\src\msw\ole\access.cpp $(OBJS)\corelib_ownerdrw.obj: ..\..\src\msw\ownerdrw.cpp $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\ownerdrw.cpp -$(OBJS)\corelib_panel.obj: ..\..\src\msw\panel.cpp - $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\panel.cpp - $(OBJS)\corelib_progdlg.obj: ..\..\src\msw\progdlg.cpp $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\progdlg.cpp diff --git a/build/msw/wx_core.vcxproj b/build/msw/wx_core.vcxproj index 291c6f866d..fc9608749b 100644 --- a/build/msw/wx_core.vcxproj +++ b/build/msw/wx_core.vcxproj @@ -799,7 +799,6 @@ - diff --git a/build/msw/wx_core.vcxproj.filters b/build/msw/wx_core.vcxproj.filters index 4295676e97..357b1ec0a1 100644 --- a/build/msw/wx_core.vcxproj.filters +++ b/build/msw/wx_core.vcxproj.filters @@ -786,9 +786,6 @@ MSW Sources - - MSW Sources - MSW Sources diff --git a/build/msw/wx_vc7_core.vcproj b/build/msw/wx_vc7_core.vcproj index 583cc7eeee..37d66fa9fd 100644 --- a/build/msw/wx_vc7_core.vcproj +++ b/build/msw/wx_vc7_core.vcproj @@ -928,9 +928,6 @@ - - diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj index 91212e072e..ced19bd2c1 100644 --- a/build/msw/wx_vc8_core.vcproj +++ b/build/msw/wx_vc8_core.vcproj @@ -1642,10 +1642,6 @@ RelativePath="..\..\src\msw\palette.cpp" > - - diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj index 91d8b8dbd3..098745f91a 100644 --- a/build/msw/wx_vc9_core.vcproj +++ b/build/msw/wx_vc9_core.vcproj @@ -1638,10 +1638,6 @@ RelativePath="..\..\src\msw\palette.cpp" > - - diff --git a/include/wx/containr.h b/include/wx/containr.h index 784ff2fcd7..bb25e6a42c 100644 --- a/include/wx/containr.h +++ b/include/wx/containr.h @@ -90,6 +90,16 @@ public: // Returns true if we have any focusable children, false otherwise. bool UpdateCanFocusChildren(); +#ifdef __WXMSW__ + // This is not strictly related to navigation, but all windows containing + // more than one children controls need to return from this method if any + // of their parents has an inheritable background, so do this automatically + // for all of them (another alternative could be to do it in wxWindow + // itself but this would be potentially more backwards incompatible and + // could conceivably break some custom windows). + bool HasTransparentBackground() const; +#endif // __WXMSW__ + protected: // set the focus to the child which had it the last time virtual bool SetFocusToChild(); @@ -252,6 +262,13 @@ public: BaseWindowClass::SetFocus(); } +#ifdef __WXMSW__ + WXDLLIMPEXP_INLINE_CORE virtual bool HasTransparentBackground() wxOVERRIDE + { + return m_container.HasTransparentBackground(); + } +#endif // __WXMSW__ + protected: #ifndef wxHAS_NATIVE_TAB_TRAVERSAL void OnNavigationKey(wxNavigationKeyEvent& event) diff --git a/include/wx/msw/panel.h b/include/wx/msw/panel.h index 4762bef191..86ba5ec6de 100644 --- a/include/wx/msw/panel.h +++ b/include/wx/msw/panel.h @@ -31,12 +31,6 @@ public: Create(parent, winid, pos, size, style, name); } - // This is overridden for MSW to return true for all panels that are child - // of a window with themed background (such as wxNotebook) which should - // show through the child panels. - virtual bool HasTransparentBackground(); - - #if WXWIN_COMPATIBILITY_2_8 wxDEPRECATED_CONSTRUCTOR( wxPanel(wxWindow *parent, diff --git a/src/common/containr.cpp b/src/common/containr.cpp index c663417043..9904c6761a 100644 --- a/src/common/containr.cpp +++ b/src/common/containr.cpp @@ -162,6 +162,24 @@ bool wxControlContainerBase::SetFocusToChild() return wxSetFocusToChild(m_winParent, &m_winLastFocused); } +#ifdef __WXMSW__ + +bool wxControlContainerBase::HasTransparentBackground() const +{ + for ( wxWindow *win = m_winParent->GetParent(); win; win = win->GetParent() ) + { + if ( win->MSWHasInheritableBackground() ) + return true; + + if ( win->IsTopLevel() ) + break; + } + + return false; +} + +#endif // __WXMSW__ + #ifndef wxHAS_NATIVE_TAB_TRAVERSAL // ---------------------------------------------------------------------------- diff --git a/src/msw/panel.cpp b/src/msw/panel.cpp deleted file mode 100644 index fc7cfa5bb1..0000000000 --- a/src/msw/panel.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: src/msw/panel.cpp -// Purpose: Implementation of wxMSW-specific wxPanel class. -// Author: Vadim Zeitlin -// Created: 2011-03-18 -// Copyright: (c) 2011 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -// for compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/panel.h" -#endif // WX_PRECOMP - -// ============================================================================ -// implementation -// ============================================================================ - -bool wxPanel::HasTransparentBackground() -{ - for ( wxWindow *win = GetParent(); win; win = win->GetParent() ) - { - if ( win->MSWHasInheritableBackground() ) - return true; - - if ( win->IsTopLevel() ) - break; - } - - return false; -} - From 9e27a1ca3aef0ff36cb7c9d2e3f6618505733834 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 8 Jun 2016 02:31:19 +0200 Subject: [PATCH 2/5] Make wxSIZE_FORCE_EVENT work if only position changed in wxMSW If the position changed but the size didn't, we just call Win32 API for updating the window geometry but it didn't generate WM_SIZE in this case, so even when wxSIZE_FORCE_EVENT was used, no wxSizeEvent was sent. --- src/msw/window.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index a76d66c1f1..ea048e8c0b 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1894,17 +1894,24 @@ void wxWindowMSW::DoSetSize(int x, int y, int width, int height, int sizeFlags) // ... and don't do anything (avoiding flicker) if it's already ok unless // we're forced to resize the window - if ( x == currentX && y == currentY && - width == currentW && height == currentH && - !(sizeFlags & wxSIZE_FORCE) ) + if ( !(sizeFlags & wxSIZE_FORCE) ) { - if (sizeFlags & wxSIZE_FORCE_EVENT) + if ( width == currentW && height == currentH ) { - wxSizeEvent event( wxSize(width,height), GetId() ); - event.SetEventObject( this ); - HandleWindowEvent( event ); + // We need to send wxSizeEvent ourselves because Windows won't do + // it if the size doesn't change. + if ( sizeFlags & wxSIZE_FORCE_EVENT ) + { + wxSizeEvent event( wxSize(width,height), GetId() ); + event.SetEventObject( this ); + HandleWindowEvent( event ); + } + + // Still call DoMoveWindow() below if we need to change the + // position, otherwise we're done. + if ( x == currentX && y == currentY ) + return; } - return; } if ( x == wxDefaultCoord && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE) ) From c5825827fb07f6ecc6c7162567af870069682f91 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 8 Jun 2016 02:40:18 +0200 Subject: [PATCH 3/5] Ensure that picker controls are laid out A picker control could have a completely broken appearance if its size was never changed from the initial size under MSW. For the picker controls inside a sizer this was indirectly fixed by the previous commit ("Make wxSIZE_FORCE_EVENT work if only position changed in wxMSW"), but the controls not managed by a sizer still didn't come up correctly, so add an explicit Layout() call to ensure they do. --- src/common/pickerbase.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/common/pickerbase.cpp b/src/common/pickerbase.cpp index a435a0598a..ffe484e9e4 100644 --- a/src/common/pickerbase.cpp +++ b/src/common/pickerbase.cpp @@ -133,6 +133,8 @@ void wxPickerBase::PostCreation() SetSizer(m_sizer); SetInitialSize( GetMinSize() ); + + Layout(); } #if wxUSE_TOOLTIPS From 0d86c01b8b2fb675ee79beb21b5d0f53ea5ed736 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 8 Jun 2016 02:51:53 +0200 Subject: [PATCH 4/5] Deprecate wxPickerBase::GetDefaultXXXFlag() methods They just seem completely useless, not documented and only used by wxPickerBase itself internally. Replace the code using them with wxSizerFlags which is more clear and also doesn't hard code the border sizes (especially in the case of the picker control which doesn't even have borders in the first place) and prepare for removing them later. --- include/wx/pickerbase.h | 14 ++++++++++---- src/common/pickerbase.cpp | 10 +++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/include/wx/pickerbase.h b/include/wx/pickerbase.h index f4ec165784..963132bcb7 100644 --- a/include/wx/pickerbase.h +++ b/include/wx/pickerbase.h @@ -76,27 +76,29 @@ public: // public API { return (GetTextCtrlItem()->GetFlag() & wxGROW) != 0; } void SetTextCtrlGrowable(bool grow = true) { - int f = GetDefaultTextCtrlFlag(); + wxSizerItem* const item = GetTextCtrlItem(); + int f = item->GetFlag(); if ( grow ) f |= wxGROW; else f &= ~wxGROW; - GetTextCtrlItem()->SetFlag(f); + item->SetFlag(f); } bool IsPickerCtrlGrowable() const { return (GetPickerCtrlItem()->GetFlag() & wxGROW) != 0; } void SetPickerCtrlGrowable(bool grow = true) { - int f = GetDefaultPickerCtrlFlag(); + wxSizerItem* const item = GetPickerCtrlItem(); + int f = item->GetFlag(); if ( grow ) { f &= ~wxALIGN_MASK; f |= wxGROW; } - GetPickerCtrlItem()->SetFlag(f); + item->SetFlag(f); } bool HasTextCtrl() const @@ -150,15 +152,19 @@ protected: return m_sizer->GetItem((size_t)0); } +#if WXWIN_COMPATIBILITY_3_0 + wxDEPRECATED_MSG("useless and will be removed in the future") int GetDefaultPickerCtrlFlag() const { return wxALIGN_CENTER_VERTICAL; } + wxDEPRECATED_MSG("useless and will be removed in the future") int GetDefaultTextCtrlFlag() const { return wxALIGN_CENTER_VERTICAL | wxRIGHT; } +#endif // WXWIN_COMPATIBILITY_3_0 void PostCreation(); diff --git a/src/common/pickerbase.cpp b/src/common/pickerbase.cpp index ffe484e9e4..faf2b991fa 100644 --- a/src/common/pickerbase.cpp +++ b/src/common/pickerbase.cpp @@ -102,8 +102,8 @@ bool wxPickerBase::CreateBase(wxWindow *parent, wxWindowDestroyEventHandler(wxPickerBase::OnTextCtrlDelete), NULL, this); - // the text control's proportion values defaults to 2 - m_sizer->Add(m_text, 2, GetDefaultTextCtrlFlag(), 5); + m_sizer->Add(m_text, + wxSizerFlags(1).CentreVertical().Border(wxRIGHT)); } return true; @@ -111,9 +111,9 @@ bool wxPickerBase::CreateBase(wxWindow *parent, void wxPickerBase::PostCreation() { - // the picker's proportion value defaults to 1 when there's no text control - // associated with it - in that case it defaults to 0 - m_sizer->Add(m_picker, HasTextCtrl() ? 0 : 1, GetDefaultPickerCtrlFlag(), 5); + // the picker grows in the major direction only if there is no text control + m_sizer->Add(m_picker, + wxSizerFlags(HasTextCtrl() ? 0 : 1).CentreVertical()); // For aesthetic reasons, make sure the picker is at least as high as the // associated text control and is always at least square, unless we are From bd388e9827c004a55bc971a32350523320ae7919 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 8 Jun 2016 03:19:51 +0200 Subject: [PATCH 5/5] Make wxBU_EXACTFIT buttons less tall in wxMSW The ellipsis buttons of wxFilePickerCtrl (and similar controls) with wxFLP_SMALL style looked too big because their min height was greater than that of the accompanying text control. Fix this by making the buttons as tall as text controls and not as tall as standard buttons, this seems to be more aesthetically pleasing. --- src/msw/anybutton.cpp | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/src/msw/anybutton.cpp b/src/msw/anybutton.cpp index f5767b089e..034dbce424 100644 --- a/src/msw/anybutton.cpp +++ b/src/msw/anybutton.cpp @@ -414,7 +414,7 @@ wxSize wxMSWButton::GetFittingSize(wxWindow *win, { // We still need some margin or the text would be overwritten, just // make it as small as possible. - sizeBtn.x += (3*win->GetCharWidth()); + sizeBtn.x += 2*win->GetCharWidth(); } else { @@ -443,30 +443,23 @@ wxSize wxMSWButton::IncreaseToStdSizeAndCache(wxControl *btn, const wxSize& size { wxSize sizeBtn(size); - // The 50x14 button size is documented in the "Recommended sizing and - // spacing" section of MSDN layout article. - // - // Note that we intentionally don't use GetDefaultSize() here, because - // it's inexact -- dialog units depend on this dialog's font. - const wxSize sizeDef = btn->ConvertDialogToPixels(wxSize(50, 14)); - - // All buttons should have at least the standard size, unless the user - // explicitly wants them to be as small as possible and used wxBU_EXACTFIT - // style to indicate this. - const bool incToStdSize = !btn->HasFlag(wxBU_EXACTFIT); - if ( incToStdSize ) + // By default all buttons have at least the standard size. + if ( !btn->HasFlag(wxBU_EXACTFIT) ) { - if ( sizeBtn.x < sizeDef.x ) - sizeBtn.x = sizeDef.x; + // The 50x14 button size is documented in the "Recommended sizing and + // spacing" section of MSDN layout article. + // + // Note that we intentionally don't use GetDefaultSize() here, because + // it's inexact -- dialog units depend on this dialog's font. + const wxSize sizeDef = btn->ConvertDialogToPixels(wxSize(50, 14)); + + sizeBtn.IncTo(sizeDef); } - - // Notice that we really want to make all buttons with text label equally - // high, otherwise they look ugly and the existing code using wxBU_EXACTFIT - // only uses it to control width and not height. - if ( incToStdSize || !btn->GetLabel().empty() ) + else // wxBU_EXACTFIT case { - if ( sizeBtn.y < sizeDef.y ) - sizeBtn.y = sizeDef.y; + // Such buttons are typically used alongside a text control or similar, + // so make them as high as it. + sizeBtn.y = EDIT_HEIGHT_FROM_CHAR_HEIGHT(size.y); } btn->CacheBestSize(sizeBtn);