Merge branch 'master' of https://github.com/wxWidgets/wxWidgets
This commit is contained in:
commit
ca606fb3b6
103 changed files with 3992 additions and 4076 deletions
4
.gitattributes
vendored
4
.gitattributes
vendored
|
|
@ -27,8 +27,12 @@
|
|||
configure.in eol=lf
|
||||
Makefile.am eol=lf
|
||||
Makefile.in eol=lf
|
||||
makefile.unx eol=lf
|
||||
|
||||
config.guess eol=lf
|
||||
config.sub eol=lf
|
||||
configure eol=lf
|
||||
configure.in eol=lf
|
||||
|
||||
# Ignore changes in the generated files.
|
||||
build/upmake -diff
|
||||
|
|
|
|||
2422
.gitignore
vendored
2422
.gitignore
vendored
File diff suppressed because it is too large
Load diff
356
Makefile.in
356
Makefile.in
File diff suppressed because it is too large
Load diff
|
|
@ -30,6 +30,12 @@
|
|||
autoconf,borland,dmars_smake,dmars,mingw,msvc,msvc6prj,msevc4prj,msvs2003prj,msvs2005prj,msvs2008prj,watcom
|
||||
</add-formats>
|
||||
|
||||
<!-- MSVC projects for the library itself (but not the samples etc) are now
|
||||
kept up to date with upmake, not bakefile -->
|
||||
<del-formats files="wx.bkl">
|
||||
msvs2003prj,msvs2005prj,msvs2008prj
|
||||
</del-formats>
|
||||
|
||||
<del-formats files="../../samples/*.bkl">
|
||||
autoconf,msvc6prj,msevc4prj,msvs2003prj,msvs2005prj,msvs2008prj
|
||||
</del-formats>
|
||||
|
|
|
|||
|
|
@ -69,7 +69,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
src/unix/fdiounix.cpp
|
||||
src/unix/snglinst.cpp
|
||||
src/unix/stackwalk.cpp
|
||||
src/unix/stdpaths.cpp
|
||||
src/unix/timerunx.cpp
|
||||
src/unix/threadpsx.cpp
|
||||
src/unix/utilsunx.cpp
|
||||
|
|
@ -85,7 +84,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
wx/unix/evtloop.h
|
||||
wx/unix/evtloopsrc.h
|
||||
wx/unix/pipe.h
|
||||
wx/unix/stdpaths.h
|
||||
wx/unix/stackwalk.h
|
||||
wx/unix/tls.h
|
||||
wx/unix/fswatcher_kqueue.h
|
||||
|
|
@ -115,10 +113,12 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
<set var="BASE_UNIX_SRC" hints="files">
|
||||
$(BASE_UNIX_AND_DARWIN_NOTWXMAC_SRC)
|
||||
src/unix/fswatcher_inotify.cpp
|
||||
src/unix/stdpaths.cpp
|
||||
</set>
|
||||
<set var="BASE_UNIX_HDR" hints="files">
|
||||
$(BASE_UNIX_AND_DARWIN_NOTWXMAC_HDR)
|
||||
wx/unix/fswatcher_inotify.h
|
||||
wx/unix/stdpaths.h
|
||||
</set>
|
||||
|
||||
<!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
|
||||
|
|
@ -181,7 +181,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
<set var="BASE_COREFOUNDATION_SRC" hints="files">
|
||||
src/osx/core/cfstring.cpp
|
||||
src/osx/core/evtloop_cf.cpp
|
||||
src/osx/core/stdpaths_cf.cpp
|
||||
src/osx/core/strconv_cf.cpp
|
||||
src/osx/core/utilsexc_base.cpp
|
||||
</set>
|
||||
|
|
@ -212,11 +211,14 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
<set var="BASE_AND_GUI_OSX_CARBON_SRC" hints="files">
|
||||
src/osx/carbon/utils.cpp
|
||||
src/osx/carbon/uma.cpp
|
||||
src/unix/stdpaths.cpp
|
||||
src/osx/core/stdpaths_cf.cpp
|
||||
</set>
|
||||
|
||||
<set var="BASE_AND_GUI_OSX_COCOA_SRC" hints="files">
|
||||
src/osx/cocoa/utils.mm
|
||||
src/osx/cocoa/power.mm
|
||||
src/osx/cocoa/stdpaths.mm
|
||||
</set>
|
||||
|
||||
<set var="BASE_AND_GUI_OSX_IPHONE_SRC" hints="files">
|
||||
|
|
@ -2289,7 +2291,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
src/osx/carbon/overlay.cpp
|
||||
src/osx/carbon/popupwin.cpp
|
||||
src/osx/carbon/renderer.cpp
|
||||
src/osx/carbon/settings.cpp
|
||||
src/osx/carbon/statbrma.cpp
|
||||
src/osx/carbon/region.cpp
|
||||
<!-- cocoa bridge -->
|
||||
|
|
@ -2454,6 +2455,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
src/osx/carbon/toolbar.cpp
|
||||
src/osx/carbon/tooltip.cpp
|
||||
src/osx/carbon/window.cpp
|
||||
src/osx/carbon/settings.cpp
|
||||
</set>
|
||||
|
||||
<!-- wxMac Carbon header files -->
|
||||
|
|
@ -2510,6 +2512,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
src/osx/cocoa/toolbar.mm
|
||||
src/osx/cocoa/tooltip.mm
|
||||
src/osx/cocoa/window.mm
|
||||
src/osx/cocoa/settings.mm
|
||||
</set>
|
||||
<set var="OSX_COCOA_HDR" hints="files">
|
||||
wx/osx/cocoa/chkconf.h
|
||||
|
|
@ -3653,6 +3656,18 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
wx/aui/tabartgtk.h
|
||||
</if>
|
||||
</set>
|
||||
<set var="AUI_MSW_SRC" hints="files">
|
||||
src/aui/tabartmsw.cpp
|
||||
</set>
|
||||
<set var="AUI_MSW_HDR" hints="files">
|
||||
wx/aui/tabartmsw.h
|
||||
</set>
|
||||
<set var="AUI_PLATFORM_SRC" hints="files">
|
||||
<if cond="TOOLKIT=='MSW'">$(AUI_MSW_SRC)</if>
|
||||
</set>
|
||||
<set var="AUI_PLATFORM_HDR" hints="files">
|
||||
<if cond="TOOLKIT=='MSW'">$(AUI_MSW_HDR)</if>
|
||||
</set>
|
||||
<set var="AUI_CMN_SRC" hints="files">
|
||||
src/aui/framemanager.cpp
|
||||
src/aui/dockart.cpp
|
||||
|
|
@ -3667,6 +3682,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
<set var="AUI_SRC" hints="files">
|
||||
$(AUI_CMN_SRC)
|
||||
$(AUI_GTK_SRC)
|
||||
$(AUI_PLATFORM_SRC)
|
||||
</set>
|
||||
<set var="AUI_CMN_HDR" hints="files">
|
||||
wx/aui/framemanager.h
|
||||
|
|
@ -3683,6 +3699,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
<set var="AUI_HDR" hints="files">
|
||||
$(AUI_CMN_HDR)
|
||||
$(AUI_GTK_HDR)
|
||||
$(AUI_PLATFORM_HDR)
|
||||
</set>
|
||||
|
||||
<!-- ====================================================================== -->
|
||||
|
|
|
|||
16
build/files
16
build/files
|
|
@ -33,7 +33,6 @@ BASE_UNIX_AND_DARWIN_SRC =
|
|||
src/unix/fdiounix.cpp
|
||||
src/unix/snglinst.cpp
|
||||
src/unix/stackwalk.cpp
|
||||
src/unix/stdpaths.cpp
|
||||
src/unix/timerunx.cpp
|
||||
src/unix/threadpsx.cpp
|
||||
src/unix/utilsunx.cpp
|
||||
|
|
@ -48,7 +47,6 @@ BASE_UNIX_AND_DARWIN_HDR =
|
|||
wx/unix/evtloop.h
|
||||
wx/unix/evtloopsrc.h
|
||||
wx/unix/pipe.h
|
||||
wx/unix/stdpaths.h
|
||||
wx/unix/stackwalk.h
|
||||
wx/unix/tls.h
|
||||
wx/unix/fswatcher_kqueue.h
|
||||
|
|
@ -71,10 +69,12 @@ BASE_UNIX_AND_DARWIN_NOTWXMAC_HDR =
|
|||
BASE_UNIX_SRC =
|
||||
$(BASE_UNIX_AND_DARWIN_NOTWXMAC_SRC)
|
||||
src/unix/fswatcher_inotify.cpp
|
||||
src/unix/stdpaths.cpp
|
||||
|
||||
BASE_UNIX_HDR =
|
||||
$(BASE_UNIX_AND_DARWIN_NOTWXMAC_HDR)
|
||||
wx/unix/fswatcher_inotify.h
|
||||
wx/unix/stdpaths.h
|
||||
|
||||
|
||||
## Windows
|
||||
|
|
@ -134,7 +134,6 @@ BASE_WIN32_HDR =
|
|||
BASE_COREFOUNDATION_SRC =
|
||||
src/osx/core/cfstring.cpp
|
||||
src/osx/core/evtloop_cf.cpp
|
||||
src/osx/core/stdpaths_cf.cpp
|
||||
src/osx/core/strconv_cf.cpp
|
||||
src/osx/core/utilsexc_base.cpp
|
||||
|
||||
|
|
@ -164,10 +163,13 @@ BASE_OSX_SHARED_HDR =
|
|||
BASE_AND_GUI_OSX_CARBON_SRC =
|
||||
src/osx/carbon/utils.cpp
|
||||
src/osx/carbon/uma.cpp
|
||||
src/unix/stdpaths.cpp
|
||||
src/osx/core/stdpaths_cf.cpp
|
||||
|
||||
BASE_AND_GUI_OSX_COCOA_SRC =
|
||||
src/osx/cocoa/utils.mm
|
||||
src/osx/cocoa/power.mm
|
||||
src/osx/cocoa/stdpaths.mm
|
||||
|
||||
BASE_AND_GUI_OSX_IPHONE_SRC =
|
||||
src/osx/iphone/utils.mm
|
||||
|
|
@ -1934,7 +1936,6 @@ OSX_CARBON_COCOA_SRC =
|
|||
src/osx/carbon/overlay.cpp
|
||||
src/osx/carbon/popupwin.cpp
|
||||
src/osx/carbon/renderer.cpp
|
||||
src/osx/carbon/settings.cpp
|
||||
src/osx/carbon/statbrma.cpp
|
||||
src/osx/carbon/region.cpp
|
||||
# cocoa bridge
|
||||
|
|
@ -2083,6 +2084,7 @@ OSX_CARBON_SRC =
|
|||
src/osx/carbon/printdlg.cpp
|
||||
src/osx/carbon/radiobut.cpp
|
||||
src/osx/carbon/scrolbar.cpp
|
||||
src/osx/carbon/settings.cpp
|
||||
src/osx/carbon/slider.cpp
|
||||
src/osx/carbon/spinbutt.cpp
|
||||
src/osx/carbon/srchctrl.cpp
|
||||
|
|
@ -2136,6 +2138,7 @@ OSX_COCOA_SRC =
|
|||
src/osx/cocoa/preferences.mm
|
||||
src/osx/cocoa/printdlg.mm
|
||||
src/osx/cocoa/scrolbar.mm
|
||||
src/osx/cocoa/settings.mm
|
||||
src/osx/cocoa/slider.mm
|
||||
src/osx/cocoa/spinbutt.mm
|
||||
src/osx/cocoa/srchctrl.mm
|
||||
|
|
@ -3086,6 +3089,11 @@ AUI_CMN_HDR =
|
|||
wx/xrc/xh_auinotbk.h
|
||||
wx/xrc/xh_auitoolb.h
|
||||
|
||||
AUI_MSW_HDR =
|
||||
wx/aui/tabartmsw.h
|
||||
AUI_MSW_SRC =
|
||||
src/aui/tabartmsw.cpp
|
||||
|
||||
# wxRibbon
|
||||
|
||||
RIBBON_SRC =
|
||||
|
|
|
|||
|
|
@ -1354,7 +1354,8 @@ AUIDLL_OBJECTS = \
|
|||
$(OBJS)\auidll_tabmdi.obj \
|
||||
$(OBJS)\auidll_tabart.obj \
|
||||
$(OBJS)\auidll_xh_auinotbk.obj \
|
||||
$(OBJS)\auidll_xh_auitoolb.obj
|
||||
$(OBJS)\auidll_xh_auitoolb.obj \
|
||||
$(OBJS)\auidll_tabartmsw.obj
|
||||
AUILIB_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||
$(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
|
||||
|
|
@ -1373,7 +1374,8 @@ AUILIB_OBJECTS = \
|
|||
$(OBJS)\auilib_tabmdi.obj \
|
||||
$(OBJS)\auilib_tabart.obj \
|
||||
$(OBJS)\auilib_xh_auinotbk.obj \
|
||||
$(OBJS)\auilib_xh_auitoolb.obj
|
||||
$(OBJS)\auilib_xh_auitoolb.obj \
|
||||
$(OBJS)\auilib_tabartmsw.obj
|
||||
RIBBONDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||
$(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
|
||||
|
|
@ -1734,6 +1736,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \
|
|||
$(OBJS)\monodll_tabart.obj \
|
||||
$(OBJS)\monodll_xh_auinotbk.obj \
|
||||
$(OBJS)\monodll_xh_auitoolb.obj \
|
||||
$(OBJS)\monodll_tabartmsw.obj \
|
||||
$(OBJS)\monodll_advprops.obj \
|
||||
$(OBJS)\monodll_editors.obj \
|
||||
$(OBJS)\monodll_manager.obj \
|
||||
|
|
@ -2555,6 +2558,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \
|
|||
$(OBJS)\monolib_tabart.obj \
|
||||
$(OBJS)\monolib_xh_auinotbk.obj \
|
||||
$(OBJS)\monolib_xh_auitoolb.obj \
|
||||
$(OBJS)\monolib_tabartmsw.obj \
|
||||
$(OBJS)\monolib_advprops.obj \
|
||||
$(OBJS)\monolib_editors.obj \
|
||||
$(OBJS)\monolib_manager.obj \
|
||||
|
|
@ -7389,6 +7393,9 @@ $(OBJS)\monodll_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\monodll_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\monodll_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\monodll_advprops.obj: ..\..\src\propgrid\advprops.cpp
|
||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\advprops.cpp
|
||||
|
||||
|
|
@ -9896,6 +9903,9 @@ $(OBJS)\monolib_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\monolib_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\monolib_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\monolib_advprops.obj: ..\..\src\propgrid\advprops.cpp
|
||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\advprops.cpp
|
||||
|
||||
|
|
@ -16082,6 +16092,9 @@ $(OBJS)\auidll_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\auidll_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) -q -c -P -o$@ $(AUIDLL_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\auidll_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) -q -c -P -o$@ $(AUIDLL_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\auilib_dummy.obj: ..\..\src\common\dummy.cpp
|
||||
$(CXX) -q -c -P -o$@ $(AUILIB_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
||||
|
||||
|
|
@ -16112,6 +16125,9 @@ $(OBJS)\auilib_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\auilib_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) -q -c -P -o$@ $(AUILIB_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\auilib_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) -q -c -P -o$@ $(AUILIB_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\ribbondll_dummy.obj: ..\..\src\common\dummy.cpp
|
||||
$(CXX) -q -c -P -o$@ $(RIBBONDLL_CXXFLAGS) -H ..\..\src\common\dummy.cpp
|
||||
|
||||
|
|
|
|||
|
|
@ -1360,7 +1360,8 @@ AUIDLL_OBJECTS = \
|
|||
$(OBJS)\auidll_tabmdi.o \
|
||||
$(OBJS)\auidll_tabart.o \
|
||||
$(OBJS)\auidll_xh_auinotbk.o \
|
||||
$(OBJS)\auidll_xh_auitoolb.o
|
||||
$(OBJS)\auidll_xh_auitoolb.o \
|
||||
$(OBJS)\auidll_tabartmsw.o
|
||||
AUILIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) $(GCCFLAGS) \
|
||||
-DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
|
||||
$(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||
|
|
@ -1379,7 +1380,8 @@ AUILIB_OBJECTS = \
|
|||
$(OBJS)\auilib_tabmdi.o \
|
||||
$(OBJS)\auilib_tabart.o \
|
||||
$(OBJS)\auilib_xh_auinotbk.o \
|
||||
$(OBJS)\auilib_xh_auitoolb.o
|
||||
$(OBJS)\auilib_xh_auitoolb.o \
|
||||
$(OBJS)\auilib_tabartmsw.o
|
||||
RIBBONDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
||||
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||
$(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
|
||||
|
|
@ -1752,6 +1754,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \
|
|||
$(OBJS)\monodll_tabart.o \
|
||||
$(OBJS)\monodll_xh_auinotbk.o \
|
||||
$(OBJS)\monodll_xh_auitoolb.o \
|
||||
$(OBJS)\monodll_tabartmsw.o \
|
||||
$(OBJS)\monodll_advprops.o \
|
||||
$(OBJS)\monodll_editors.o \
|
||||
$(OBJS)\monodll_manager.o \
|
||||
|
|
@ -2579,6 +2582,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \
|
|||
$(OBJS)\monolib_tabart.o \
|
||||
$(OBJS)\monolib_xh_auinotbk.o \
|
||||
$(OBJS)\monolib_xh_auitoolb.o \
|
||||
$(OBJS)\monolib_tabartmsw.o \
|
||||
$(OBJS)\monolib_advprops.o \
|
||||
$(OBJS)\monolib_editors.o \
|
||||
$(OBJS)\monolib_manager.o \
|
||||
|
|
@ -7564,6 +7568,9 @@ $(OBJS)\monodll_xh_auinotbk.o: ../../src/xrc/xh_auinotbk.cpp
|
|||
$(OBJS)\monodll_xh_auitoolb.o: ../../src/xrc/xh_auitoolb.cpp
|
||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\monodll_tabartmsw.o: ../../src/aui/tabartmsw.cpp
|
||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\monodll_advprops.o: ../../src/propgrid/advprops.cpp
|
||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
|
|
@ -10071,6 +10078,9 @@ $(OBJS)\monolib_xh_auinotbk.o: ../../src/xrc/xh_auinotbk.cpp
|
|||
$(OBJS)\monolib_xh_auitoolb.o: ../../src/xrc/xh_auitoolb.cpp
|
||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\monolib_tabartmsw.o: ../../src/aui/tabartmsw.cpp
|
||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\monolib_advprops.o: ../../src/propgrid/advprops.cpp
|
||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
|
|
@ -16257,6 +16267,9 @@ $(OBJS)\auidll_xh_auinotbk.o: ../../src/xrc/xh_auinotbk.cpp
|
|||
$(OBJS)\auidll_xh_auitoolb.o: ../../src/xrc/xh_auitoolb.cpp
|
||||
$(CXX) -c -o $@ $(AUIDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\auidll_tabartmsw.o: ../../src/aui/tabartmsw.cpp
|
||||
$(CXX) -c -o $@ $(AUIDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\auilib_dummy.o: ../../src/common/dummy.cpp
|
||||
$(CXX) -c -o $@ $(AUILIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
|
|
@ -16287,6 +16300,9 @@ $(OBJS)\auilib_xh_auinotbk.o: ../../src/xrc/xh_auinotbk.cpp
|
|||
$(OBJS)\auilib_xh_auitoolb.o: ../../src/xrc/xh_auitoolb.cpp
|
||||
$(CXX) -c -o $@ $(AUILIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\auilib_tabartmsw.o: ../../src/aui/tabartmsw.cpp
|
||||
$(CXX) -c -o $@ $(AUILIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\ribbondll_dummy.o: ../../src/common/dummy.cpp
|
||||
$(CXX) -c -o $@ $(RIBBONDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
|
|
|
|||
|
|
@ -1498,7 +1498,8 @@ AUIDLL_OBJECTS = \
|
|||
$(OBJS)\auidll_tabmdi.obj \
|
||||
$(OBJS)\auidll_tabart.obj \
|
||||
$(OBJS)\auidll_xh_auinotbk.obj \
|
||||
$(OBJS)\auidll_xh_auitoolb.obj
|
||||
$(OBJS)\auidll_xh_auitoolb.obj \
|
||||
$(OBJS)\auidll_tabartmsw.obj
|
||||
AUIDLL_RESOURCES = \
|
||||
$(OBJS)\auidll_version.res
|
||||
AUILIB_CXXFLAGS = /M$(__RUNTIME_LIBS_472)$(__DEBUGRUNTIME) /DWIN32 \
|
||||
|
|
@ -1523,7 +1524,8 @@ AUILIB_OBJECTS = \
|
|||
$(OBJS)\auilib_tabmdi.obj \
|
||||
$(OBJS)\auilib_tabart.obj \
|
||||
$(OBJS)\auilib_xh_auinotbk.obj \
|
||||
$(OBJS)\auilib_xh_auitoolb.obj
|
||||
$(OBJS)\auilib_xh_auitoolb.obj \
|
||||
$(OBJS)\auilib_tabartmsw.obj
|
||||
RIBBONDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_488)$(__DEBUGRUNTIME) /DWIN32 \
|
||||
$(__DEBUGINFO) \
|
||||
/Fd$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_ribbon$(WXCOMPILER)$(VENDORTAG).pdb \
|
||||
|
|
@ -2034,6 +2036,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \
|
|||
$(OBJS)\monodll_tabart.obj \
|
||||
$(OBJS)\monodll_xh_auinotbk.obj \
|
||||
$(OBJS)\monodll_xh_auitoolb.obj \
|
||||
$(OBJS)\monodll_tabartmsw.obj \
|
||||
$(OBJS)\monodll_advprops.obj \
|
||||
$(OBJS)\monodll_editors.obj \
|
||||
$(OBJS)\monodll_manager.obj \
|
||||
|
|
@ -2861,6 +2864,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \
|
|||
$(OBJS)\monolib_tabart.obj \
|
||||
$(OBJS)\monolib_xh_auinotbk.obj \
|
||||
$(OBJS)\monolib_xh_auitoolb.obj \
|
||||
$(OBJS)\monolib_tabartmsw.obj \
|
||||
$(OBJS)\monolib_advprops.obj \
|
||||
$(OBJS)\monolib_editors.obj \
|
||||
$(OBJS)\monolib_manager.obj \
|
||||
|
|
@ -8081,6 +8085,9 @@ $(OBJS)\monodll_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\monodll_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\monodll_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\monodll_advprops.obj: ..\..\src\propgrid\advprops.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\propgrid\advprops.cpp
|
||||
|
||||
|
|
@ -10588,6 +10595,9 @@ $(OBJS)\monolib_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\monolib_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\monolib_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\monolib_advprops.obj: ..\..\src\propgrid\advprops.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\propgrid\advprops.cpp
|
||||
|
||||
|
|
@ -16774,6 +16784,9 @@ $(OBJS)\auidll_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\auidll_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(AUIDLL_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\auidll_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(AUIDLL_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\auilib_dummy.obj: ..\..\src\common\dummy.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(AUILIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
||||
|
||||
|
|
@ -16804,6 +16817,9 @@ $(OBJS)\auilib_xh_auinotbk.obj: ..\..\src\xrc\xh_auinotbk.cpp
|
|||
$(OBJS)\auilib_xh_auitoolb.obj: ..\..\src\xrc\xh_auitoolb.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(AUILIB_CXXFLAGS) ..\..\src\xrc\xh_auitoolb.cpp
|
||||
|
||||
$(OBJS)\auilib_tabartmsw.obj: ..\..\src\aui\tabartmsw.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(AUILIB_CXXFLAGS) ..\..\src\aui\tabartmsw.cpp
|
||||
|
||||
$(OBJS)\ribbondll_dummy.obj: ..\..\src\common\dummy.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(RIBBONDLL_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
|
||||
|
||||
|
|
|
|||
|
|
@ -465,6 +465,7 @@
|
|||
<ClCompile Include="..\..\src\aui\tabmdi.cpp" />
|
||||
<ClCompile Include="..\..\src\xrc\xh_auinotbk.cpp" />
|
||||
<ClCompile Include="..\..\src\xrc\xh_auitoolb.cpp" />
|
||||
<ClCompile Include="..\..\src\aui\tabartmsw.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\src\msw\version.rc">
|
||||
|
|
@ -505,6 +506,7 @@
|
|||
<ClInclude Include="..\..\include\wx\aui\tabmdi.h" />
|
||||
<ClInclude Include="..\..\include\wx\xrc\xh_auinotbk.h" />
|
||||
<ClInclude Include="..\..\include\wx\xrc\xh_auitoolb.h" />
|
||||
<ClInclude Include="..\..\include\wx\aui\tabartmsw.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
|
|
|||
|
|
@ -43,6 +43,9 @@
|
|||
<ClCompile Include="..\..\src\aui\tabart.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\aui\tabartmsw.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\aui\tabmdi.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -80,6 +83,9 @@
|
|||
<ClInclude Include="..\..\include\wx\aui\tabart.h">
|
||||
<Filter>Common Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\wx\aui\tabartmsw.h">
|
||||
<Filter>Common Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\include\wx\aui\tabmdi.h">
|
||||
<Filter>Common Headers</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -901,6 +901,7 @@
|
|||
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)msw_%(Filename).obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\msw\statusbar.cpp" />
|
||||
<ClCompile Include="..\..\src\msw\systhemectrl.cpp" />
|
||||
<ClCompile Include="..\..\src\msw\taskbarbutton.cpp" />
|
||||
<ClCompile Include="..\..\src\msw\textctrl.cpp">
|
||||
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(IntDir)msw_%(Filename).obj</ObjectFileName>
|
||||
|
|
@ -1004,7 +1005,6 @@
|
|||
<ClCompile Include="..\..\src\generic\vlbox.cpp" />
|
||||
<ClCompile Include="..\..\src\generic\vscroll.cpp" />
|
||||
<ClCompile Include="..\..\src\xrc\xmlreshandler.cpp" />
|
||||
<ClCompile Include="..\..\src\msw\systhemectrl.cpp" />
|
||||
<ClCompile Include="..\..\src\generic\collheaderctrlg.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
@ -1014,7 +1014,6 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ResourceCompile>
|
||||
<ClInclude Include="..\..\src\msw\systhemectrl.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\include\wx\msw\setup.h">
|
||||
|
|
@ -1335,6 +1334,7 @@
|
|||
<ClInclude Include="..\..\include\wx\statline.h" />
|
||||
<ClInclude Include="..\..\include\wx\stattext.h" />
|
||||
<ClInclude Include="..\..\include\wx\statusbr.h" />
|
||||
<ClInclude Include="..\..\include\wx\systhemectrl.h" />
|
||||
<ClInclude Include="..\..\include\wx\taskbarbutton.h" />
|
||||
<ClInclude Include="..\..\include\wx\tbarbase.h" />
|
||||
<ClInclude Include="..\..\include\wx\textcompleter.h" />
|
||||
|
|
@ -1375,7 +1375,6 @@
|
|||
<ClInclude Include="..\..\include\wx\preferences.h" />
|
||||
<ClInclude Include="..\..\include\wx\testing.h" />
|
||||
<ClInclude Include="..\..\include\wx\msw\ole\safearray.h" />
|
||||
<ClInclude Include="..\..\include\wx\systhemectrl.h" />
|
||||
<ClInclude Include="..\..\include\wx\collheaderctrl.h" />
|
||||
<ClInclude Include="..\..\include\wx\generic\collheaderctrl.h" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -482,6 +482,7 @@
|
|||
<ClCompile Include="..\..\src\html\m_tables.cpp" />
|
||||
<ClCompile Include="..\..\src\html\styleparams.cpp" />
|
||||
<ClCompile Include="..\..\src\html\winpars.cpp" />
|
||||
<ClCompile Include="..\..\src\html\chm.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\src\msw\version.rc">
|
||||
|
|
|
|||
|
|
@ -33,6 +33,9 @@
|
|||
<ClCompile Include="..\..\src\generic\htmllbox.cpp">
|
||||
<Filter>Generic Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\html\chm.cpp">
|
||||
<Filter>wxHTML Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\html\helpctrl.cpp">
|
||||
<Filter>wxHTML Sources</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
|||
|
|
@ -434,6 +434,9 @@
|
|||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabart.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabartmsw.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabmdi.h">
|
||||
</File>
|
||||
|
|
@ -466,6 +469,9 @@
|
|||
<File
|
||||
RelativePath="..\..\src\aui\tabart.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\src\aui\tabartmsw.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\src\aui\tabmdi.cpp">
|
||||
</File>
|
||||
|
|
|
|||
|
|
@ -2594,6 +2594,9 @@
|
|||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabart.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabartmsw.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabmdi.h">
|
||||
</File>
|
||||
|
|
|
|||
|
|
@ -1081,6 +1081,10 @@
|
|||
RelativePath="..\..\include\wx\aui\tabart.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabartmsw.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabmdi.h"
|
||||
>
|
||||
|
|
@ -1123,6 +1127,10 @@
|
|||
RelativePath="..\..\src\aui\tabart.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\src\aui\tabartmsw.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\src\aui\tabmdi.cpp"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -3960,6 +3960,10 @@
|
|||
RelativePath="..\..\include\wx\aui\tabart.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabartmsw.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabmdi.h"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1077,6 +1077,10 @@
|
|||
RelativePath="..\..\include\wx\aui\tabart.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabartmsw.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabmdi.h"
|
||||
>
|
||||
|
|
@ -1119,6 +1123,10 @@
|
|||
RelativePath="..\..\src\aui\tabart.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\src\aui\tabartmsw.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\src\aui\tabmdi.cpp"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -3956,6 +3956,10 @@
|
|||
RelativePath="..\..\include\wx\aui\tabart.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabartmsw.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\wx\aui\tabmdi.h"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -253,9 +253,6 @@
|
|||
131B879180AE3FB481F81CC8 /* fs_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9A305CEC03B3085B159B617 /* fs_mem.cpp */; };
|
||||
131B879180AE3FB481F81CC9 /* fs_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9A305CEC03B3085B159B617 /* fs_mem.cpp */; };
|
||||
131B879180AE3FB481F81CCA /* fs_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9A305CEC03B3085B159B617 /* fs_mem.cpp */; };
|
||||
13250B531B1B3F9998C59DA9 /* stdpaths_cf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B2DEE3EC7CE374DB0CE6EEA /* stdpaths_cf.cpp */; };
|
||||
13250B531B1B3F9998C59DAA /* stdpaths_cf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B2DEE3EC7CE374DB0CE6EEA /* stdpaths_cf.cpp */; };
|
||||
13250B531B1B3F9998C59DAB /* stdpaths_cf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B2DEE3EC7CE374DB0CE6EEA /* stdpaths_cf.cpp */; };
|
||||
135DFCE48FC03D8294D01A89 /* xmlrsall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29922DF1D0D63C33A186E783 /* xmlrsall.cpp */; };
|
||||
135DFCE48FC03D8294D01A8A /* xmlrsall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29922DF1D0D63C33A186E783 /* xmlrsall.cpp */; };
|
||||
135DFCE48FC03D8294D01A8B /* xmlrsall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29922DF1D0D63C33A186E783 /* xmlrsall.cpp */; };
|
||||
|
|
@ -532,6 +529,12 @@
|
|||
24A5A71C79733E9CB913C5B7 /* LexPB.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 8744F2C80ECF375999195935 /* LexPB.cxx */; };
|
||||
24A5A71C79733E9CB913C5B8 /* LexPB.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 8744F2C80ECF375999195935 /* LexPB.cxx */; };
|
||||
24A5A71C79733E9CB913C5B9 /* LexPB.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 8744F2C80ECF375999195935 /* LexPB.cxx */; };
|
||||
24D4E0F61BA05FC200586317 /* stdpaths.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24D4E0F51BA05FC200586317 /* stdpaths.mm */; };
|
||||
24D4E0F71BA05FC200586317 /* stdpaths.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24D4E0F51BA05FC200586317 /* stdpaths.mm */; };
|
||||
24D4E0F81BA05FC200586317 /* stdpaths.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24D4E0F51BA05FC200586317 /* stdpaths.mm */; };
|
||||
24AC00E71BA6C3900042A970 /* settings.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24AC00E61BA6C3900042A970 /* settings.mm */; };
|
||||
24AC00E81BA6C3900042A970 /* settings.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24AC00E61BA6C3900042A970 /* settings.mm */; };
|
||||
24AC00E91BA6C3900042A970 /* settings.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24AC00E61BA6C3900042A970 /* settings.mm */; };
|
||||
254028D56649374E8D3CC85C /* libwx_osx_cocoau_html.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D9F65758E0363AF9AEC59A47 /* libwx_osx_cocoau_html.dylib */; };
|
||||
254028D56649374E8D3CC85D /* libwx_osx_cocoau_html.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D9F65758E0363AF9AEC59A47 /* libwx_osx_cocoau_html.dylib */; };
|
||||
2563C775427E3D68BD384F2F /* richtextstyles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D30617843F33310089C1F77A /* richtextstyles.cpp */; };
|
||||
|
|
@ -844,9 +847,6 @@
|
|||
42ED9BAFD6E936849F1D36CB /* xtixml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4048A3523EC03409BD899BEF /* xtixml.cpp */; };
|
||||
42ED9BAFD6E936849F1D36CC /* xtixml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4048A3523EC03409BD899BEF /* xtixml.cpp */; };
|
||||
42ED9BAFD6E936849F1D36CD /* xtixml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4048A3523EC03409BD899BEF /* xtixml.cpp */; };
|
||||
437519A6002A3A0FB2C9A8FC /* settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6CC2B05353C3284B37B2DD7 /* settings.cpp */; };
|
||||
437519A6002A3A0FB2C9A8FD /* settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6CC2B05353C3284B37B2DD7 /* settings.cpp */; };
|
||||
437519A6002A3A0FB2C9A8FE /* settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6CC2B05353C3284B37B2DD7 /* settings.cpp */; };
|
||||
438EAEA4B30C325C827F6197 /* xh_fontpicker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 87E609641B583666AB9D1D58 /* xh_fontpicker.cpp */; };
|
||||
438EAEA4B30C325C827F6198 /* xh_fontpicker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 87E609641B583666AB9D1D58 /* xh_fontpicker.cpp */; };
|
||||
438EAEA4B30C325C827F6199 /* xh_fontpicker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 87E609641B583666AB9D1D58 /* xh_fontpicker.cpp */; };
|
||||
|
|
@ -2527,9 +2527,6 @@
|
|||
E8EE34F0A78C31B489B19FEE /* LexMSSQL.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1C71BF55495034FFBE653C80 /* LexMSSQL.cxx */; };
|
||||
E8EE34F0A78C31B489B19FEF /* LexMSSQL.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1C71BF55495034FFBE653C80 /* LexMSSQL.cxx */; };
|
||||
E8EE34F0A78C31B489B19FF0 /* LexMSSQL.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1C71BF55495034FFBE653C80 /* LexMSSQL.cxx */; };
|
||||
E8F0C87119C63E8E81423A7C /* stdpaths.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F8C1E6D73ABD3A219B2C0603 /* stdpaths.cpp */; };
|
||||
E8F0C87119C63E8E81423A7D /* stdpaths.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F8C1E6D73ABD3A219B2C0603 /* stdpaths.cpp */; };
|
||||
E8F0C87119C63E8E81423A7E /* stdpaths.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F8C1E6D73ABD3A219B2C0603 /* stdpaths.cpp */; };
|
||||
E92EB502F79638B0BE569EF4 /* CallTip.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 4F58B88D42A93BD0B74ADF75 /* CallTip.cxx */; };
|
||||
E92EB502F79638B0BE569EF5 /* CallTip.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 4F58B88D42A93BD0B74ADF75 /* CallTip.cxx */; };
|
||||
E92EB502F79638B0BE569EF6 /* CallTip.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 4F58B88D42A93BD0B74ADF75 /* CallTip.cxx */; };
|
||||
|
|
@ -3939,7 +3936,9 @@
|
|||
24396D584D053948A3FF0DCD /* imagpng.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = imagpng.cpp; path = ../../src/common/imagpng.cpp; sourceTree = "<group>"; };
|
||||
24720CD91BB03D77008E8A43 /* collheaderctrlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = collheaderctrlg.cpp; path = ../../src/generic/collheaderctrlg.cpp; sourceTree = "<group>"; };
|
||||
24930711031D35288D28B04B /* choiccmn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = choiccmn.cpp; path = ../../src/common/choiccmn.cpp; sourceTree = "<group>"; };
|
||||
24AC00E61BA6C3900042A970 /* settings.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = settings.mm; path = ../../src/osx/cocoa/settings.mm; sourceTree = "<group>"; };
|
||||
24BD2EF635673E819B8406CB /* LexRust.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LexRust.cxx; path = ../../src/stc/scintilla/lexers/LexRust.cxx; sourceTree = "<group>"; };
|
||||
24D4E0F51BA05FC200586317 /* stdpaths.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = stdpaths.mm; path = ../../src/osx/cocoa/stdpaths.mm; sourceTree = "<group>"; };
|
||||
24DF23D67E693D999B875101 /* toolbkg.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = toolbkg.cpp; path = ../../src/generic/toolbkg.cpp; sourceTree = "<group>"; };
|
||||
24E82A05E9A9323287CDB15B /* artstd.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = artstd.cpp; path = ../../src/common/artstd.cpp; sourceTree = "<group>"; };
|
||||
25A81E9028793C109D868068 /* xh_timectrl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = xh_timectrl.cpp; path = ../../src/xrc/xh_timectrl.cpp; sourceTree = "<group>"; };
|
||||
|
|
@ -4237,7 +4236,6 @@
|
|||
7A34C5BBBA543DC0A50DE1B6 /* event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = event.cpp; path = ../../src/common/event.cpp; sourceTree = "<group>"; };
|
||||
7A3F26F539473705AA82411D /* combobox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = combobox.cpp; path = ../../src/osx/carbon/combobox.cpp; sourceTree = "<group>"; };
|
||||
7AF8F8A78A5130DCB4D46729 /* LexCmake.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LexCmake.cxx; path = ../../src/stc/scintilla/lexers/LexCmake.cxx; sourceTree = "<group>"; };
|
||||
7B2DEE3EC7CE374DB0CE6EEA /* stdpaths_cf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = stdpaths_cf.cpp; path = ../../src/osx/core/stdpaths_cf.cpp; sourceTree = "<group>"; };
|
||||
7B389A14D6BF3AFD8CCE0807 /* protocol.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = protocol.cpp; path = ../../src/common/protocol.cpp; sourceTree = "<group>"; };
|
||||
7BA6ADD758693BD180D3275B /* treebase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = treebase.cpp; path = ../../src/common/treebase.cpp; sourceTree = "<group>"; };
|
||||
7C6CC76872BA32D2B61EB8AB /* libwx_baseu_xml.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libwx_baseu_xml.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
|
|
@ -4630,7 +4628,6 @@
|
|||
E5357E76650035639844D15B /* stringimpl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = stringimpl.cpp; path = ../../src/common/stringimpl.cpp; sourceTree = "<group>"; };
|
||||
E5A9B63746753EDFB2EC48D3 /* xh_frame.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = xh_frame.cpp; path = ../../src/xrc/xh_frame.cpp; sourceTree = "<group>"; };
|
||||
E6AB648BC5173104A96CAE66 /* xml.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = xml.cpp; path = ../../src/xml/xml.cpp; sourceTree = "<group>"; };
|
||||
E6CC2B05353C3284B37B2DD7 /* settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = settings.cpp; path = ../../src/osx/carbon/settings.cpp; sourceTree = "<group>"; };
|
||||
E72CF5F9C1E53BCFAA2BC253 /* KeyMap.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = KeyMap.cxx; path = ../../src/stc/scintilla/src/KeyMap.cxx; sourceTree = "<group>"; };
|
||||
E72F0A2EE3DB34E193D8CCA7 /* LexLaTeX.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LexLaTeX.cxx; path = ../../src/stc/scintilla/lexers/LexLaTeX.cxx; sourceTree = "<group>"; };
|
||||
E78CBF86AAE637CB982B2EC0 /* LexMarkdown.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LexMarkdown.cxx; path = ../../src/stc/scintilla/lexers/LexMarkdown.cxx; sourceTree = "<group>"; };
|
||||
|
|
@ -4697,7 +4694,6 @@
|
|||
F83172EE2DAE352FB969D4F2 /* jcapistd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = ../../src/jpeg/jcapistd.c; sourceTree = "<group>"; };
|
||||
F84F0DB790A23D92A193D2B4 /* http.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = http.cpp; path = ../../src/common/http.cpp; sourceTree = "<group>"; };
|
||||
F8638A6CCF773CCFB70DFC29 /* xh_collpane.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = xh_collpane.cpp; path = ../../src/xrc/xh_collpane.cpp; sourceTree = "<group>"; };
|
||||
F8C1E6D73ABD3A219B2C0603 /* stdpaths.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = stdpaths.cpp; path = ../../src/unix/stdpaths.cpp; sourceTree = "<group>"; };
|
||||
FA59091E3ED83FB781FB9659 /* glcanvas_osx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = glcanvas_osx.cpp; path = ../../src/osx/glcanvas_osx.cpp; sourceTree = "<group>"; };
|
||||
FA7029BB5751398AA02D8C24 /* imagtga.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = imagtga.cpp; path = ../../src/common/imagtga.cpp; sourceTree = "<group>"; };
|
||||
FADE850169F7347F83FE1499 /* xh_statbar.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = xh_statbar.cpp; path = ../../src/xrc/xh_statbar.cpp; sourceTree = "<group>"; };
|
||||
|
|
@ -5293,7 +5289,6 @@
|
|||
2128AD8BD12E3F33AD57478E /* overlay.cpp */,
|
||||
530DC2E26BF2313E8702AD43 /* popupwin.cpp */,
|
||||
425BFA3FDB7D3EA7ADCE1087 /* renderer.cpp */,
|
||||
E6CC2B05353C3284B37B2DD7 /* settings.cpp */,
|
||||
E1F2E9C9052D3E53BBD17DE3 /* statbrma.cpp */,
|
||||
00DA3D3EEF5E305CA73A1871 /* region.cpp */,
|
||||
2AFC4A1CDA473688A590D19F /* utilscocoa.mm */,
|
||||
|
|
@ -5335,6 +5330,7 @@
|
|||
835C22B71A0F3C469310E1E0 /* preferences.mm */,
|
||||
C9E32802E8ED3E729FF34CFC /* printdlg.mm */,
|
||||
CC2E24773D853A77B9FEFA4C /* scrolbar.mm */,
|
||||
24AC00E61BA6C3900042A970 /* settings.mm */,
|
||||
9B862D1027C4367BBF44420F /* slider.mm */,
|
||||
3C4A7A93CAFC3E22A2A5F7F3 /* spinbutt.mm */,
|
||||
14EF4B028AD63B4A885D29A1 /* srchctrl.mm */,
|
||||
|
|
@ -5954,7 +5950,6 @@
|
|||
7C97C1F26B5A38C49543060C /* mimetype.cpp */,
|
||||
5168ADF7BE39351F8F24E1E6 /* cfstring.cpp */,
|
||||
5BD6231188AB329CAA5E1171 /* evtloop_cf.cpp */,
|
||||
7B2DEE3EC7CE374DB0CE6EEA /* stdpaths_cf.cpp */,
|
||||
D5F9383D1CE931499F339D85 /* strconv_cf.cpp */,
|
||||
81390F96937631078EFCD891 /* utilsexc_base.cpp */,
|
||||
47F784C2BB5A3B5DAD276583 /* fdiodispatcher.cpp */,
|
||||
|
|
@ -5967,7 +5962,6 @@
|
|||
3B548B1FF2A238809315C8A9 /* fdiounix.cpp */,
|
||||
3D5D8B68EA743F6E97ADF612 /* snglinst.cpp */,
|
||||
EA2520F427493A22A70A5C09 /* stackwalk.cpp */,
|
||||
F8C1E6D73ABD3A219B2C0603 /* stdpaths.cpp */,
|
||||
0CB2CC8E60833A6993BEA321 /* timerunx.cpp */,
|
||||
AB466912FDA23F8B87A00A3C /* threadpsx.cpp */,
|
||||
DC75C7251C1732B0B07C7BD3 /* utilsunx.cpp */,
|
||||
|
|
@ -5980,6 +5974,7 @@
|
|||
4188821BBA833CCAA678B234 /* utilscmn.cpp */,
|
||||
789F45D14FF23E248FCFB5FA /* utils.mm */,
|
||||
60DFD5962DE3379F801AF78F /* power.mm */,
|
||||
24D4E0F51BA05FC200586317 /* stdpaths.mm */,
|
||||
);
|
||||
name = base;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -7358,7 +7353,6 @@
|
|||
4657E7382E9E3EDC8DE24020 /* mimetype.cpp in Sources */,
|
||||
1DBDF75500D73A3098015E81 /* cfstring.cpp in Sources */,
|
||||
9FBC642677C63D01AA2511BE /* evtloop_cf.cpp in Sources */,
|
||||
13250B531B1B3F9998C59DAB /* stdpaths_cf.cpp in Sources */,
|
||||
AAAB5DF8E60736D88273DD00 /* strconv_cf.cpp in Sources */,
|
||||
4E140367282F38C8A904A006 /* utilsexc_base.cpp in Sources */,
|
||||
D36E76A4CAF5352D9397E201 /* fdiodispatcher.cpp in Sources */,
|
||||
|
|
@ -7367,11 +7361,11 @@
|
|||
403FBA20CEFE3EAFB4E6B907 /* dir.cpp in Sources */,
|
||||
20BEEFFA08F3396791596872 /* dlunix.cpp in Sources */,
|
||||
CBBD7B32DB7B3E24AE745D7A /* epolldispatcher.cpp in Sources */,
|
||||
24D4E0F81BA05FC200586317 /* stdpaths.mm in Sources */,
|
||||
D18E2985C48733B2B7B3D444 /* evtloopunix.cpp in Sources */,
|
||||
3D22FC202D903007AEE3D166 /* fdiounix.cpp in Sources */,
|
||||
4B88254FF9963833A276A64E /* snglinst.cpp in Sources */,
|
||||
5F78DB0417BF3CE1B4E35C81 /* stackwalk.cpp in Sources */,
|
||||
E8F0C87119C63E8E81423A7E /* stdpaths.cpp in Sources */,
|
||||
2F35A207C3993DE08E4FE0B2 /* timerunx.cpp in Sources */,
|
||||
F5D2146C94E733FAAB6D286C /* threadpsx.cpp in Sources */,
|
||||
B5C7FD8C27F43F3289A77FCB /* utilsunx.cpp in Sources */,
|
||||
|
|
@ -7455,6 +7449,7 @@
|
|||
A3321FE2A87D3BD69E0BB00B /* notebook_osx.cpp in Sources */,
|
||||
0C9A379D97B133FA831175A9 /* printdlg_osx.cpp in Sources */,
|
||||
B1775EF7C72233408044034D /* radiobox_osx.cpp in Sources */,
|
||||
24AC00E91BA6C3900042A970 /* settings.mm in Sources */,
|
||||
6A081BF19747385CB4C18781 /* radiobut_osx.cpp in Sources */,
|
||||
DF8CE011EAC23F73BDA1C44F /* scrolbar_osx.cpp in Sources */,
|
||||
27E73CA5C35A30CE89946ECC /* slider_osx.cpp in Sources */,
|
||||
|
|
@ -7491,7 +7486,6 @@
|
|||
CD2A9111B8A83AFA8B5B97E7 /* overlay.cpp in Sources */,
|
||||
805CCAE64D023561AD334B55 /* popupwin.cpp in Sources */,
|
||||
6832385DDBB33D1B90C73CBC /* renderer.cpp in Sources */,
|
||||
437519A6002A3A0FB2C9A8FE /* settings.cpp in Sources */,
|
||||
F6A1AC5CF84E32C19F91A616 /* statbrma.cpp in Sources */,
|
||||
D070C3BE95483FE38BABA1C0 /* region.cpp in Sources */,
|
||||
07158EBC05A637ECA9DC7B51 /* utilscocoa.mm in Sources */,
|
||||
|
|
@ -8063,7 +8057,6 @@
|
|||
4657E7382E9E3EDC8DE2401F /* mimetype.cpp in Sources */,
|
||||
1DBDF75500D73A3098015E80 /* cfstring.cpp in Sources */,
|
||||
9FBC642677C63D01AA2511BD /* evtloop_cf.cpp in Sources */,
|
||||
13250B531B1B3F9998C59DAA /* stdpaths_cf.cpp in Sources */,
|
||||
AAAB5DF8E60736D88273DCFF /* strconv_cf.cpp in Sources */,
|
||||
4E140367282F38C8A904A005 /* utilsexc_base.cpp in Sources */,
|
||||
D36E76A4CAF5352D9397E200 /* fdiodispatcher.cpp in Sources */,
|
||||
|
|
@ -8076,7 +8069,6 @@
|
|||
3D22FC202D903007AEE3D165 /* fdiounix.cpp in Sources */,
|
||||
4B88254FF9963833A276A64D /* snglinst.cpp in Sources */,
|
||||
5F78DB0417BF3CE1B4E35C80 /* stackwalk.cpp in Sources */,
|
||||
E8F0C87119C63E8E81423A7D /* stdpaths.cpp in Sources */,
|
||||
2F35A207C3993DE08E4FE0B1 /* timerunx.cpp in Sources */,
|
||||
F5D2146C94E733FAAB6D286B /* threadpsx.cpp in Sources */,
|
||||
B5C7FD8C27F43F3289A77FCA /* utilsunx.cpp in Sources */,
|
||||
|
|
@ -8163,7 +8155,6 @@
|
|||
CD2A9111B8A83AFA8B5B97E6 /* overlay.cpp in Sources */,
|
||||
805CCAE64D023561AD334B54 /* popupwin.cpp in Sources */,
|
||||
6832385DDBB33D1B90C73CBB /* renderer.cpp in Sources */,
|
||||
437519A6002A3A0FB2C9A8FD /* settings.cpp in Sources */,
|
||||
F6A1AC5CF84E32C19F91A615 /* statbrma.cpp in Sources */,
|
||||
D070C3BE95483FE38BABA1BF /* region.cpp in Sources */,
|
||||
07158EBC05A637ECA9DC7B50 /* utilscocoa.mm in Sources */,
|
||||
|
|
@ -8203,6 +8194,7 @@
|
|||
9241AAE354C53190BF3D5BA4 /* radiobut.mm in Sources */,
|
||||
8EE5A2467401365C8217AF30 /* preferences.mm in Sources */,
|
||||
22E90F33B5C9308EBF37A701 /* printdlg.mm in Sources */,
|
||||
24D4E0F71BA05FC200586317 /* stdpaths.mm in Sources */,
|
||||
5303FA25D0773FAEB963D8E4 /* scrolbar.mm in Sources */,
|
||||
30AEDF41EC5C374DBF96EFFC /* slider.mm in Sources */,
|
||||
5DA146A9F7653F53BF5299E9 /* spinbutt.mm in Sources */,
|
||||
|
|
@ -8385,6 +8377,7 @@
|
|||
B84642DA949638A189032CE7 /* http.cpp in Sources */,
|
||||
6CA1BAEBBDB4336E9E201F96 /* protocol.cpp in Sources */,
|
||||
E39021D3CDCD33BAA646B007 /* sckaddr.cpp in Sources */,
|
||||
24AC00E81BA6C3900042A970 /* settings.mm in Sources */,
|
||||
9F608A33D52D327FAA295625 /* sckfile.cpp in Sources */,
|
||||
BCD81FD3D1EC305F801E1C1C /* sckipc.cpp in Sources */,
|
||||
A3A898DA3114311EB7F02228 /* sckstrm.cpp in Sources */,
|
||||
|
|
@ -9255,7 +9248,6 @@
|
|||
4657E7382E9E3EDC8DE2401E /* mimetype.cpp in Sources */,
|
||||
1DBDF75500D73A3098015E7F /* cfstring.cpp in Sources */,
|
||||
9FBC642677C63D01AA2511BC /* evtloop_cf.cpp in Sources */,
|
||||
13250B531B1B3F9998C59DA9 /* stdpaths_cf.cpp in Sources */,
|
||||
AAAB5DF8E60736D88273DCFE /* strconv_cf.cpp in Sources */,
|
||||
4E140367282F38C8A904A004 /* utilsexc_base.cpp in Sources */,
|
||||
D36E76A4CAF5352D9397E1FF /* fdiodispatcher.cpp in Sources */,
|
||||
|
|
@ -9268,7 +9260,6 @@
|
|||
3D22FC202D903007AEE3D164 /* fdiounix.cpp in Sources */,
|
||||
4B88254FF9963833A276A64C /* snglinst.cpp in Sources */,
|
||||
5F78DB0417BF3CE1B4E35C7F /* stackwalk.cpp in Sources */,
|
||||
E8F0C87119C63E8E81423A7C /* stdpaths.cpp in Sources */,
|
||||
2F35A207C3993DE08E4FE0B0 /* timerunx.cpp in Sources */,
|
||||
F5D2146C94E733FAAB6D286A /* threadpsx.cpp in Sources */,
|
||||
B5C7FD8C27F43F3289A77FC9 /* utilsunx.cpp in Sources */,
|
||||
|
|
@ -9355,7 +9346,6 @@
|
|||
CD2A9111B8A83AFA8B5B97E5 /* overlay.cpp in Sources */,
|
||||
805CCAE64D023561AD334B53 /* popupwin.cpp in Sources */,
|
||||
6832385DDBB33D1B90C73CBA /* renderer.cpp in Sources */,
|
||||
437519A6002A3A0FB2C9A8FC /* settings.cpp in Sources */,
|
||||
F6A1AC5CF84E32C19F91A614 /* statbrma.cpp in Sources */,
|
||||
D070C3BE95483FE38BABA1BE /* region.cpp in Sources */,
|
||||
07158EBC05A637ECA9DC7B4F /* utilscocoa.mm in Sources */,
|
||||
|
|
@ -9395,6 +9385,7 @@
|
|||
9241AAE354C53190BF3D5BA3 /* radiobut.mm in Sources */,
|
||||
8EE5A2467401365C8217AF2F /* preferences.mm in Sources */,
|
||||
22E90F33B5C9308EBF37A700 /* printdlg.mm in Sources */,
|
||||
24D4E0F61BA05FC200586317 /* stdpaths.mm in Sources */,
|
||||
5303FA25D0773FAEB963D8E3 /* scrolbar.mm in Sources */,
|
||||
30AEDF41EC5C374DBF96EFFB /* slider.mm in Sources */,
|
||||
5DA146A9F7653F53BF5299E8 /* spinbutt.mm in Sources */,
|
||||
|
|
@ -9577,6 +9568,7 @@
|
|||
B84642DA949638A189032CE6 /* http.cpp in Sources */,
|
||||
6CA1BAEBBDB4336E9E201F95 /* protocol.cpp in Sources */,
|
||||
E39021D3CDCD33BAA646B006 /* sckaddr.cpp in Sources */,
|
||||
24AC00E71BA6C3900042A970 /* settings.mm in Sources */,
|
||||
9F608A33D52D327FAA295624 /* sckfile.cpp in Sources */,
|
||||
BCD81FD3D1EC305F801E1C1B /* sckipc.cpp in Sources */,
|
||||
A3A898DA3114311EB7F02227 /* sckstrm.cpp in Sources */,
|
||||
|
|
|
|||
|
|
@ -1,78 +0,0 @@
|
|||
package Text::Upmake;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use autodie;
|
||||
|
||||
use Exporter qw(import);
|
||||
|
||||
our @EXPORT = qw(read_files_list upmake);
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Text::Upmake - Update make files.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Vadim Zeitlin
|
||||
|
||||
=cut
|
||||
|
||||
# Reads the file containing the file lists definitions and returns a hash ref
|
||||
# with variable names as keys and refs to arrays of the file names as values.
|
||||
#
|
||||
# Takes an (open) file handle as argument.
|
||||
sub read_files_list
|
||||
{
|
||||
my ($fh) = @_;
|
||||
|
||||
my ($var, %vars);
|
||||
while (<$fh>) {
|
||||
chomp;
|
||||
s/#.*$//;
|
||||
s/^\s+//;
|
||||
s/\s+$//;
|
||||
next if !$_;
|
||||
|
||||
if (/^(\w+)\s*=$/) {
|
||||
$var = $1;
|
||||
} else {
|
||||
die "Unexpected contents outside variable definition at line $.\n"
|
||||
unless defined $var;
|
||||
push @{$vars{$var}}, $_;
|
||||
}
|
||||
}
|
||||
|
||||
return \%vars;
|
||||
}
|
||||
|
||||
# Update the file with the given name in place using the specified function and
|
||||
# passing it the rest of the arguments.
|
||||
#
|
||||
# This is meant to be used with update_xxx() below.
|
||||
sub upmake
|
||||
{
|
||||
my ($fname, $updater, @args) = @_;
|
||||
|
||||
my $fname_new = "$fname.upmake.new"; # TODO make it more unique
|
||||
|
||||
open my $in, '<', $fname;
|
||||
open my $out, '>', $fname_new;
|
||||
|
||||
my $changed = $updater->($in, $out, @args);
|
||||
|
||||
close $in;
|
||||
close $out;
|
||||
|
||||
if ($changed) {
|
||||
rename $fname_new, $fname;
|
||||
} else {
|
||||
unlink $fname_new;
|
||||
}
|
||||
|
||||
$changed
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
package Text::Upmake::Bakefile0;
|
||||
|
||||
use Exporter qw(import);
|
||||
our @EXPORT = qw(update_bakefile_0);
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Text::Upmake::Bakefile0 - Update bakefile-0.x files list.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
This is used exclusively to update wxWidgets C<files.bkl> and is probably not
|
||||
useful outside of wxWidgets project.
|
||||
|
||||
use Text::Upmake::Bakefile0;
|
||||
Text::Upmake::upmake('bakefiles/files.bkl', \&update_bakefile_0, $vars);
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
Text::Upmake
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Vadim Zeitlin
|
||||
|
||||
=cut
|
||||
|
||||
# Update file with variable definitions in bakefile-0 format with the data
|
||||
# from the hash ref containing all the file lists.
|
||||
#
|
||||
# Takes the (open) file handles of the files to read and to write and the file
|
||||
# lists hash ref as arguments.
|
||||
#
|
||||
# Returns 1 if any changes were made.
|
||||
#
|
||||
# The caller must take care of actually renaming the second file to the first
|
||||
# one.
|
||||
sub update_bakefile_0
|
||||
{
|
||||
my ($in, $out, $vars) = @_;
|
||||
|
||||
# Variable whose contents is being currently replaced.
|
||||
my $var;
|
||||
|
||||
# Hash with files defined for the specified variable as keys and 0 or 1
|
||||
# depending on whether we have seen them in the input file as values.
|
||||
my %files;
|
||||
|
||||
# Set to 1 if we made any changes.
|
||||
my $changed = 0;
|
||||
while (<$in>) {
|
||||
chomp;
|
||||
|
||||
if (/<set var="(\w+)" hints="files">/ && exists $vars->{$1}) {
|
||||
$var = $1;
|
||||
%files = map { $_ => 0 } @{$vars->{$var}};
|
||||
} elsif (defined $var) {
|
||||
local $_ = $_;
|
||||
s/<!-- .* -->//;
|
||||
s/^\s+//;
|
||||
s/\s+$//;
|
||||
if (m{</set>}) {
|
||||
# Check if we have any new files.
|
||||
#
|
||||
# TODO Insert them in alphabetical order.
|
||||
while (my ($file, $seen) = each(%files)) {
|
||||
if (!$seen) {
|
||||
# This file was wasn't present in the input, add it.
|
||||
# TODO Use proper indentation.
|
||||
print $out " $file\n";
|
||||
|
||||
$changed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
undef $var;
|
||||
} elsif ($_) {
|
||||
if (not exists $files{$_}) {
|
||||
# This file was removed.
|
||||
$changed = 1;
|
||||
next;
|
||||
}
|
||||
|
||||
if ($files{$_}) {
|
||||
warn qq{Duplicate file "$_" in the definition of the } .
|
||||
qq{variable "$var" at line $.\n}
|
||||
} else {
|
||||
$files{$_} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $out "$_\n";
|
||||
}
|
||||
|
||||
$changed
|
||||
}
|
||||
|
|
@ -1,252 +0,0 @@
|
|||
package Text::Upmake::MSBuild;
|
||||
|
||||
use Exporter qw(import);
|
||||
our @EXPORT = qw(update_msbuild update_msbuild_filters);
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Text::Upmake::MSBuild - Update list of sources and headers in MSBuild projects.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
Given an MSBuild project C<project.vcxproj> and its associated filters file
|
||||
C<projects.vcxproj.filters>, the functions in this module can be used to update
|
||||
the list of files in them to correspond to the given ones.
|
||||
|
||||
use Text::Upmake::Bakefile0;
|
||||
Text::Upmake::upmake('projects.vcxproj', \&update_msbuild, \@sources, \@headers);
|
||||
Text::Upmake::upmake('projects.vcxproj.filters', \&update_msbuild_filters, \@sources, \@headers);
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
Text::Upmake
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Vadim Zeitlin
|
||||
|
||||
=cut
|
||||
|
||||
# Update sources and headers in an MSBuild project.
|
||||
#
|
||||
# Parameters: input and output file handles and array references to the sources
|
||||
# and the headers to be used in this project.
|
||||
#
|
||||
# Returns 1 if any changes were made.
|
||||
sub update_msbuild
|
||||
{
|
||||
my ($in, $out, $sources, $headers) = @_;
|
||||
|
||||
# Hashes mapping the sources/headers names to 1 if they have been seen in
|
||||
# the project or 0 otherwise.
|
||||
my %sources = map { $_ => 0 } @$sources;
|
||||
my %headers = map { $_ => 0 } @$headers;
|
||||
|
||||
# Reference to the hash corresponding to the files currently being
|
||||
# processed.
|
||||
my $files;
|
||||
|
||||
# Set to 1 when we are inside any <ItemGroup> tag.
|
||||
my $in_group = 0;
|
||||
|
||||
# Set to 1 when we are inside an item group containing sources or headers
|
||||
# respectively.
|
||||
my ($in_sources, $in_headers) = 0;
|
||||
|
||||
# Set to 1 if we made any changes.
|
||||
my $changed = 0;
|
||||
while (my $line_with_eol = <$in>) {
|
||||
(my $line = $line_with_eol) =~ s/\r?\n?$//;
|
||||
|
||||
if ($line =~ /^\s*<ItemGroup>$/) {
|
||||
$in_group = 1;
|
||||
} elsif ($line =~ m{^\s*</ItemGroup>$}) {
|
||||
if (defined $files) {
|
||||
my $kind = $in_sources ? 'Compile' : 'Include';
|
||||
|
||||
# Check if we have any new files.
|
||||
#
|
||||
# TODO Insert them in alphabetical order.
|
||||
while (my ($file, $seen) = each(%$files)) {
|
||||
if (!$seen) {
|
||||
# Convert path separator to the one used by MSBuild.
|
||||
$file =~ s@/@\\@g;
|
||||
|
||||
print $out qq{ <Cl$kind Include="$file" />\n};
|
||||
|
||||
$changed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$in_sources = $in_headers = 0;
|
||||
}
|
||||
|
||||
$in_group = 0;
|
||||
} elsif ($in_group) {
|
||||
if ($line =~ m{^\s*<Cl(?<kind>Compile|Include) Include="(?<file>[^"]+)"\s*(?<slash>/)?>$}) {
|
||||
if ($+{kind} eq 'Compile') {
|
||||
warn "Mix of sources and headers at line $.\n" if $in_headers;
|
||||
$in_sources = 1;
|
||||
$files = \%sources;
|
||||
} else {
|
||||
warn "Mix of headers and sources at line $.\n" if $in_sources;
|
||||
$in_headers = 1;
|
||||
$files = \%headers;
|
||||
}
|
||||
|
||||
my $closed_tag = defined $+{slash};
|
||||
|
||||
# Normalize the path separator, we always use Unix ones but the
|
||||
# project files use Windows one.
|
||||
my $file = $+{file};
|
||||
$file =~ s@\\@/@g;
|
||||
|
||||
if (not exists $files->{$file}) {
|
||||
# This file was removed.
|
||||
$changed = 1;
|
||||
|
||||
if (!$closed_tag) {
|
||||
# We have just the opening <ClCompile> tag, ignore
|
||||
# everything until the next </ClCompile>
|
||||
while (<$in>) {
|
||||
last if m{^\s*</ClCompile>$};
|
||||
}
|
||||
}
|
||||
|
||||
# In any case skip either this line containing the full
|
||||
# <ClCompile/> tag or the line with the closing tag.
|
||||
next;
|
||||
} else {
|
||||
if ($files->{$file}) {
|
||||
warn qq{Duplicate file "$file" in the project at line $.\n};
|
||||
} else {
|
||||
$files->{$file} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $out $line_with_eol;
|
||||
}
|
||||
|
||||
$changed
|
||||
}
|
||||
|
||||
# Update sources and headers in an MSBuild filters file.
|
||||
#
|
||||
# Parameters: input and output file handles, array references to the sources
|
||||
# and the headers to be used in this project and a callback used to determine
|
||||
# the filter for the new files.
|
||||
#
|
||||
# Returns 1 if any changes were made.
|
||||
sub update_msbuild_filters
|
||||
{
|
||||
my ($in, $out, $sources, $headers, $filter_cb) = @_;
|
||||
|
||||
# Hashes mapping the sources/headers names to the text representing them in
|
||||
# the input file if they have been seen in it or nothing otherwise.
|
||||
my %sources = map { $_ => undef } @$sources;
|
||||
my %headers = map { $_ => undef } @$headers;
|
||||
|
||||
# Reference to the hash corresponding to the files currently being
|
||||
# processed.
|
||||
my $files;
|
||||
|
||||
# Set to 1 when we are inside any <ItemGroup> tag.
|
||||
my $in_group = 0;
|
||||
|
||||
# Set to 1 when we are inside an item group containing sources or headers
|
||||
# respectively.
|
||||
my ($in_sources, $in_headers) = 0;
|
||||
|
||||
# Set to 1 if we made any changes.
|
||||
my $changed = 0;
|
||||
while (my $line_with_eol = <$in>) {
|
||||
(my $line = $line_with_eol) =~ s/\r?\n?$//;
|
||||
|
||||
if ($line =~ /^\s*<ItemGroup>?$/) {
|
||||
$in_group = 1;
|
||||
} elsif ($line =~ m{^\s*</ItemGroup>?$}) {
|
||||
if (defined $files) {
|
||||
# Output the group contents now, all at once, inserting any new
|
||||
# files: we must do it like this to ensure that they are
|
||||
# inserted in alphabetical order.
|
||||
my $kind = $in_sources ? 'Compile' : 'Include';
|
||||
|
||||
foreach my $file (sort keys %$files) {
|
||||
if (defined $files->{$file}) {
|
||||
print $out $files->{$file};
|
||||
} else {
|
||||
my $filter = defined $filter_cb ? $filter_cb->($file) : undef;
|
||||
|
||||
# Convert path separator to the one used by MSBuild.
|
||||
$file =~ s@/@\\@g;
|
||||
|
||||
my $indent = ' ' x 2;
|
||||
|
||||
print $out qq{$indent$indent<Cl$kind Include="$file"};
|
||||
if (defined $filter) {
|
||||
print $out ">\n$indent$indent$indent<Filter>$filter</Filter>\n$indent$indent</Cl$kind>\n";
|
||||
} else {
|
||||
print $out " />\n";
|
||||
}
|
||||
|
||||
$changed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$in_sources = $in_headers = 0;
|
||||
$files = undef;
|
||||
}
|
||||
|
||||
$in_group = 0;
|
||||
} elsif ($in_group &&
|
||||
$line =~ m{^\s*<Cl(?<kind>Compile|Include) Include="(?<file>[^"]+)"\s*(?<slash>/)?>?$}) {
|
||||
my $kind = $+{kind};
|
||||
if ($kind eq 'Compile') {
|
||||
warn "Mix of sources and headers at line $.\n" if $in_headers;
|
||||
$in_sources = 1;
|
||||
$files = \%sources;
|
||||
} else {
|
||||
warn "Mix of headers and sources at line $.\n" if $in_sources;
|
||||
$in_headers = 1;
|
||||
$files = \%headers;
|
||||
}
|
||||
|
||||
my $closed_tag = defined $+{slash};
|
||||
|
||||
# Normalize the path separator, we always use Unix ones but the
|
||||
# project files use Windows one.
|
||||
my $file = $+{file};
|
||||
$file =~ s@\\@/@g;
|
||||
|
||||
my $text = $line_with_eol;
|
||||
if (!$closed_tag) {
|
||||
# We have just the opening <ClCompile> tag, get everything
|
||||
# until the next </ClCompile>.
|
||||
while (<$in>) {
|
||||
$text .= $_;
|
||||
last if m{^\s*</Cl$kind>\r?\n?$};
|
||||
}
|
||||
}
|
||||
|
||||
if (not exists $files->{$file}) {
|
||||
# This file was removed.
|
||||
$changed = 1;
|
||||
} else {
|
||||
if ($files->{$file}) {
|
||||
warn qq{Duplicate file "$file" in the project at line $.\n};
|
||||
} else {
|
||||
$files->{$file} = $text;
|
||||
}
|
||||
}
|
||||
|
||||
# Don't output this line yet, wait until the end of the group.
|
||||
next
|
||||
}
|
||||
|
||||
print $out $line_with_eol;
|
||||
}
|
||||
|
||||
$changed
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use autodie;
|
||||
use Test::More;
|
||||
|
||||
BEGIN { use_ok('Text::Upmake'); }
|
||||
|
||||
my $vars = read_files_list(*DATA);
|
||||
is_deeply($vars->{VAR1}, [qw(file1 file2)], 'VAR1 has expected value');
|
||||
is_deeply($vars->{VAR2}, [qw(file3 file4)], 'VAR2 has expected value');
|
||||
|
||||
done_testing()
|
||||
|
||||
__DATA__
|
||||
# Some comments
|
||||
|
||||
VAR1 =
|
||||
file1
|
||||
# comment between the files
|
||||
file2
|
||||
VAR2 =
|
||||
file3
|
||||
file4 # comment
|
||||
# another comment
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use autodie;
|
||||
use Test::More;
|
||||
|
||||
BEGIN { use_ok('Text::Upmake::Bakefile0'); }
|
||||
|
||||
my $vars = {
|
||||
VAR1 => [qw(file1 file2 fileNew)],
|
||||
VAR2 => [qw(file3 file4 file5 fileNew2)],
|
||||
};
|
||||
|
||||
open my $out, '>', \my $outstr;
|
||||
update_bakefile_0(*DATA, $out, $vars);
|
||||
|
||||
note("Result: $outstr");
|
||||
|
||||
like($outstr, qr/file1/, 'existing file was preserved');
|
||||
like($outstr, qr/fileNew$/m, 'new file was added');
|
||||
unlike($outstr, qr/fileOld/, 'old file was removed');
|
||||
like($outstr, qr/fileNew2/, 'another new file was added');
|
||||
like($outstr, qr/file3\s+file4/s, 'files remain in correct order');
|
||||
|
||||
done_testing()
|
||||
|
||||
__DATA__
|
||||
<?xml version="1.0" ?>
|
||||
<makefile>
|
||||
|
||||
<!--
|
||||
Some comment
|
||||
-->
|
||||
|
||||
<set var="VAR1" hints="files">
|
||||
file1
|
||||
<!-- comment between the files -->
|
||||
file2
|
||||
</set>
|
||||
|
||||
<set var="VAR2" hints="files">
|
||||
file3
|
||||
file4 <!-- comment after the file -->
|
||||
file5
|
||||
fileOld
|
||||
</set>
|
||||
|
||||
</makefile>
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use autodie;
|
||||
use Test::More;
|
||||
|
||||
use Text::Upmake;
|
||||
BEGIN { use_ok('Text::Upmake::MSBuild'); }
|
||||
|
||||
my $sources = [qw(file1.cpp file2.cpp fileNew.cpp)];
|
||||
my $headers = [qw(file1.h file2.h fileNew.h)];
|
||||
|
||||
open my $out, '>', \my $outstr;
|
||||
update_msbuild(*DATA, $out, $sources, $headers);
|
||||
|
||||
note("Result: $outstr");
|
||||
|
||||
like($outstr, qr/file1\.cpp/, 'existing source file was preserved');
|
||||
like($outstr, qr/fileNew\.cpp/m, 'new source file was added');
|
||||
unlike($outstr, qr/fileOld\.cpp/, 'old source file was removed');
|
||||
unlike($outstr, qr/file3\.h/, 'old header was removed');
|
||||
like($outstr, qr/fileNew\.h/, 'new header was added');
|
||||
|
||||
done_testing()
|
||||
|
||||
__DATA__
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="file1.cpp" />
|
||||
<ClCompile Include="file2.cpp" />
|
||||
<ClCompile Include="fileOld.cpp" />
|
||||
<ClCompile Include="file3.cpp" >
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="file1.h" />
|
||||
<ClInclude Include="file2.h" />
|
||||
<ClInclude Include="file3.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use autodie;
|
||||
use Test::More;
|
||||
|
||||
use Text::Upmake;
|
||||
BEGIN { use_ok('Text::Upmake::MSBuild'); }
|
||||
|
||||
my $sources = [qw(file1.cpp file2.cpp file4.cpp fileNew.cpp)];
|
||||
my $headers = [qw(file1.h file2.h fileNew.h)];
|
||||
|
||||
sub filter_cb
|
||||
{
|
||||
my ($file) = @_;
|
||||
|
||||
return 'New Sources' if $file =~ /New\./;
|
||||
|
||||
undef
|
||||
}
|
||||
|
||||
open my $out, '>', \my $outstr;
|
||||
update_msbuild_filters(*DATA, $out, $sources, $headers, \&filter_cb);
|
||||
|
||||
note("Result: $outstr");
|
||||
|
||||
like($outstr, qr/file1\.cpp/, 'existing source file was preserved');
|
||||
like($outstr, qr/fileNew\.cpp/m, 'new source file was added');
|
||||
unlike($outstr, qr/fileOld\.cpp/, 'old source file was removed');
|
||||
unlike($outstr, qr/file3\.cpp/, 'another old source file was removed');
|
||||
unlike($outstr, qr/file3\.h/, 'old header was removed');
|
||||
like($outstr, qr/fileNew\.h/, 'new header was added');
|
||||
|
||||
done_testing()
|
||||
|
||||
__DATA__
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Common Sources">
|
||||
<UniqueIdentifier>{...}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Common Headers">
|
||||
<UniqueIdentifier>{...}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="fileOld.cpp">
|
||||
<Filter>Common Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="file1.cpp">
|
||||
<Filter>Common Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="file2.cpp" />
|
||||
<ClCompile Include="file3.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="file1.h">
|
||||
<Filter>Common Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="file2.h">
|
||||
<Filter>Common Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="file3.h">
|
||||
<Filter>Common Headers</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
1424
build/upmake
1424
build/upmake
File diff suppressed because it is too large
Load diff
185
build/upmake_script.pl
Executable file
185
build/upmake_script.pl
Executable file
|
|
@ -0,0 +1,185 @@
|
|||
#!/usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use autodie;
|
||||
|
||||
use Getopt::Long;
|
||||
|
||||
use FindBin qw($Bin);
|
||||
|
||||
use Makefile::Update;
|
||||
use Makefile::Update::Bakefile0;
|
||||
use Makefile::Update::MSBuild;
|
||||
use Makefile::Update::VCProj;
|
||||
|
||||
my $verbose = 0;
|
||||
my $quiet = 0;
|
||||
my ($only_bkl, $only_msvs, $only_project, $only_version);
|
||||
|
||||
GetOptions(
|
||||
'verbose|v' => \$verbose,
|
||||
'quiet|q' => \$quiet,
|
||||
'only-bkl' => \$only_bkl,
|
||||
'only-project=s' => sub { $only_msvs = 1; $only_project = $_[1] },
|
||||
'only-version=i' => sub { $only_msvs = 1; $only_version = $_[1] },
|
||||
) or die <<EOF
|
||||
Usage: $0 [--verbose] [--quiet] [--only-bkl] [--only-project=<name>] [--only-version=<ver>]
|
||||
|
||||
Update the files used by bakefile and MSVC projects from the master list
|
||||
of files in build/files.
|
||||
|
||||
If --no-xxx option is specified, the corresponding outputs are not updated.
|
||||
By default everything is.
|
||||
|
||||
The version argument of --only-version can be 7, 8, 9 or 10 with the latter
|
||||
selecting the MSBuild projects.
|
||||
EOF
|
||||
;
|
||||
|
||||
if ($only_bkl && $only_msvs) {
|
||||
die qq{Options --only-bkl and --only-project or --only-version can't be used together.\n}
|
||||
}
|
||||
|
||||
sub call_upmake
|
||||
{
|
||||
my ($fname, @args) = @_;
|
||||
|
||||
upmake({file => $fname, quiet => $quiet, verbose => $verbose}, @args)
|
||||
}
|
||||
|
||||
open my $files, '<', "$Bin/files";
|
||||
my $vars = read_files_list($files);
|
||||
|
||||
if (!$only_msvs) {
|
||||
if (call_upmake("$Bin/bakefiles/files.bkl", \&update_bakefile_0, $vars)) {
|
||||
print qq{Don't forget to run "bakefile_gen -b wx.bkl".} if $verbose;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$only_bkl) {
|
||||
# Path to the project root directory from the directory containing the
|
||||
# projects.
|
||||
my $top_srcdir = '../../';
|
||||
|
||||
# The base names of all our projects with the list of variables
|
||||
# containing the files that should appear in them.
|
||||
my %projects_vars = (
|
||||
adv => [qw(ADVANCED_CMN ADVANCED_MSW ADVANCED_MSW_DESKTOP ADVANCED_MSW_NATIVE)],
|
||||
aui => [qw(AUI_CMN)],
|
||||
base => [qw(BASE_CMN BASE_AND_GUI_CMN BASE_WIN32 BASE_AND_GUI_WIN32)],
|
||||
core => [qw(BASE_AND_GUI_CMN BASE_AND_GUI_WIN32 MSW_LOWLEVEL MSW_DESKTOP_LOWLEVEL MSW MSW_DESKTOP GUI_CMN)],
|
||||
gl => [qw(OPENGL_CMN OPENGL_MSW)],
|
||||
html => [qw(HTML_CMN HTML_MSW)],
|
||||
media => [qw(MEDIA_CMN MEDIA_MSW MEDIA_MSW_DESKTOP)],
|
||||
net => [qw(NET_CMN NET_WIN32)],
|
||||
propgrid => [qw(PROPGRID)],
|
||||
qa => [qw(QA)],
|
||||
ribbon => [qw(RIBBON)],
|
||||
richtext => [qw(RICHTEXT)],
|
||||
stc => [qw(STC)],
|
||||
webview => [qw(WEBVIEW_CMN WEBVIEW_MSW)],
|
||||
xml => [qw(XML)],
|
||||
xrc => [qw(XRC)],
|
||||
);
|
||||
|
||||
# The versions of non-MSBuild projects (MSBuild ones all use version "10").
|
||||
my @vcproj_versions = qw(7 8 9);
|
||||
|
||||
# Return the "filter" to use for the given file.
|
||||
sub filter_cb
|
||||
{
|
||||
my ($file) = @_;
|
||||
|
||||
my %filters = (
|
||||
'src/common/.*' => 'Common Sources',
|
||||
'src/gtk/.*' => 'GTK+ Sources',
|
||||
'src/msw/.*' => 'MSW Sources',
|
||||
'src/generic/.*' => 'Generic Sources',
|
||||
'src/univ/.*' => 'wxUniv Sources',
|
||||
'src/html/.*' => 'wxHTML Sources',
|
||||
'include/.*/setup.h' => 'Setup Headers',
|
||||
'include/wx/gtk/.*' => 'GTK+ Headers',
|
||||
'include/wx/msw/.*' => 'MSW Headers',
|
||||
'include/wx/generic/.*' => 'Generic Headers',
|
||||
'include/wx/univ/.*' => 'wxUniv Headers',
|
||||
'include/wx/html/.*' => 'wxHTML Headers',
|
||||
);
|
||||
|
||||
foreach (keys %filters) {
|
||||
return $filters{$_} if $file =~ qr{^${top_srcdir}$_$};
|
||||
}
|
||||
|
||||
# Two fall backs which can't be used in the hash as they must be
|
||||
# checked after the other patterns.
|
||||
return 'Source Files' if $file =~ q{src/.*};
|
||||
return 'Common Headers' if $file =~ q{include/wx/.*};
|
||||
|
||||
warn qq{No filter defined for the file "$file".\n};
|
||||
|
||||
undef
|
||||
}
|
||||
|
||||
foreach my $proj (sort keys %projects_vars) {
|
||||
next if defined $only_project && $proj ne $only_project;
|
||||
|
||||
my (@sources, @headers);
|
||||
|
||||
# All our projects use the special dummy file for PCH creation, but it's
|
||||
# not included in the file lists.
|
||||
push @sources, "${top_srcdir}src/common/dummy.cpp";
|
||||
|
||||
foreach my $var (@{$projects_vars{$proj}}) {
|
||||
# The paths in the files lists are relative to the project root,
|
||||
# so add relative path to it from the projects directory.
|
||||
push @sources, "${top_srcdir}$_" for @{$vars->{"${var}_SRC"}};
|
||||
|
||||
# It is possible that we don't have any headers of some kind at all.
|
||||
if (exists $vars->{"${var}_HDR"}) {
|
||||
# Our files lists don't use the full path for the headers, the
|
||||
# common "include/" prefix is omitted, add it back here.
|
||||
push @headers, "${top_srcdir}include/$_" for @{$vars->{"${var}_HDR"}};
|
||||
}
|
||||
}
|
||||
|
||||
my @args = (\@sources, \@headers, \&filter_cb);
|
||||
|
||||
# First deal with MSBuild project, it's the simplest case.
|
||||
if (!defined $only_version || $only_version == 10) {
|
||||
call_upmake("$Bin/msw/wx_${proj}.vcxproj", \&update_msbuild, @args);
|
||||
call_upmake("$Bin/msw/wx_${proj}.vcxproj.filters", \&update_msbuild_filters, @args);
|
||||
}
|
||||
|
||||
# Pre-MSBuild projects also put this header together with all the other
|
||||
# ones, so it needs to be added (with MSBuild it's a <CustomBuild>
|
||||
# element and so is completely separate from the real headers that use
|
||||
# <ClInclude>).
|
||||
push @headers, "${top_srcdir}include/wx/msw/genrcdefs.h";
|
||||
|
||||
# And core project also includes all GUI headers instead of just those
|
||||
# it really uses.
|
||||
if ($proj eq 'core') {
|
||||
foreach my $gui_proj (grep { $_ ne 'base' &&
|
||||
$_ ne 'core' &&
|
||||
$_ ne 'net' &&
|
||||
$_ ne 'xml' } keys %projects_vars) {
|
||||
foreach my $var (@{$projects_vars{$gui_proj}}) {
|
||||
push @headers, "${top_srcdir}include/$_" for @{$vars->{"${var}_HDR"}};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# For compatibility with the existing bakefile-generated projects,
|
||||
# don't include *.cpp files in the list of headers -- even these files
|
||||
# are actually used as headers (i.e. they are #include'd).
|
||||
if ($proj eq 'base') {
|
||||
@headers = grep { $_ !~ /\.cpp$/ } @headers;
|
||||
}
|
||||
|
||||
foreach my $ver (@vcproj_versions) {
|
||||
next if defined $only_version && $ver != $only_version;
|
||||
|
||||
call_upmake("$Bin/msw/wx_vc${ver}_${proj}.vcproj", \&update_vcproj, @args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -50,6 +50,7 @@ Changes in behaviour which may result in build errors
|
|||
All:
|
||||
|
||||
- Add UTF-8 and ZIP 64 support to wxZip{Input,Output}Stream (Tobias Taschner).
|
||||
- Add wxStandardPaths::GetUserDir() (Tobias Taschner).
|
||||
- Allow calling wxItemContainer::Add() and similar with std::vector<> argument.
|
||||
- Add "%z" support to printf()-like functions like wxString::Format() (RIVDSL).
|
||||
- Add DOCTYPE support to wxXmlDocument (Nick Matthews).
|
||||
|
|
@ -140,6 +141,7 @@ wxGTK:
|
|||
wxMSW:
|
||||
|
||||
- Make default wxSizer border DPI-aware.
|
||||
- Implement native tab art for wxAUI (Tobias Taschner).
|
||||
- Improve wxMimeTypesManager open command detection (Eric Jensen).
|
||||
- Make wxFILTER_INCLUDE_LIST in wxTextValidator actually usable.
|
||||
- Fix handling crashes in wxEVT_PAINT event handlers.
|
||||
|
|
@ -184,3 +186,4 @@ wxOSX/Cocoa:
|
|||
- Add support for wxEVT_COMBOBOX_DROPDOWN and wxEVT_COMBOBOX_CLOSEUP
|
||||
events (Igor Korot).
|
||||
- Implement strike-through support in wxFont (Igor Korot).
|
||||
- Provide native implementation of wxStandardPaths (Tobias Taschner).
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ public:
|
|||
wxBitmap bitmap; // tab's bitmap
|
||||
wxRect rect; // tab's hit rectangle
|
||||
bool active; // true if the page is currently active
|
||||
bool hover; // true if mouse hovering over tab
|
||||
};
|
||||
|
||||
class WXDLLIMPEXP_AUI wxAuiTabContainerButton
|
||||
|
|
@ -234,6 +235,8 @@ protected:
|
|||
wxAuiTabContainerButton* m_hoverButton;
|
||||
wxAuiTabContainerButton* m_pressedButton;
|
||||
|
||||
void SetHoverTab(wxWindow* wnd);
|
||||
|
||||
#ifndef SWIG
|
||||
wxDECLARE_CLASS(wxAuiTabCtrl);
|
||||
wxDECLARE_EVENT_TABLE();
|
||||
|
|
|
|||
|
|
@ -312,6 +312,10 @@ protected:
|
|||
#define wxHAS_NATIVE_TABART
|
||||
#include "wx/aui/tabartgtk.h"
|
||||
#define wxAuiDefaultTabArt wxAuiGtkTabArt
|
||||
#elif defined(__WXMSW__)
|
||||
#define wxHAS_NATIVE_TABART
|
||||
#include "wx/aui/tabartmsw.h"
|
||||
#define wxAuiDefaultTabArt wxAuiMSWTabArt
|
||||
#endif
|
||||
#endif // !__WXUNIVERSAL__
|
||||
|
||||
|
|
|
|||
90
include/wx/aui/tabartmsw.h
Normal file
90
include/wx/aui/tabartmsw.h
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/aui/tabartmsw.h
|
||||
// Purpose: wxAuiMSWTabArt declaration
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2015-09-26
|
||||
// Copyright: (c) 2015 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_AUI_TABARTMSW_H_
|
||||
#define _WX_AUI_TABARTMSW_H_
|
||||
|
||||
class WXDLLIMPEXP_AUI wxAuiMSWTabArt : public wxAuiGenericTabArt
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
wxAuiMSWTabArt();
|
||||
virtual ~wxAuiMSWTabArt();
|
||||
|
||||
wxAuiTabArt* Clone() wxOVERRIDE;
|
||||
void SetSizingInfo(const wxSize& tabCtrlSize,
|
||||
size_t tabCount) wxOVERRIDE;
|
||||
|
||||
void DrawBorder(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) wxOVERRIDE;
|
||||
|
||||
void DrawBackground(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) wxOVERRIDE;
|
||||
|
||||
void DrawTab(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& pane,
|
||||
const wxRect& inRect,
|
||||
int closeButtonState,
|
||||
wxRect* outTabRect,
|
||||
wxRect* outButtonRect,
|
||||
int* xExtent) wxOVERRIDE;
|
||||
|
||||
void DrawButton(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& inRect,
|
||||
int bitmapId,
|
||||
int buttonState,
|
||||
int orientation,
|
||||
wxRect* outRect) wxOVERRIDE;
|
||||
|
||||
int GetIndentSize() wxOVERRIDE;
|
||||
|
||||
int GetBorderWidth(
|
||||
wxWindow* wnd) wxOVERRIDE;
|
||||
|
||||
int GetAdditionalBorderSpace(
|
||||
wxWindow* wnd) wxOVERRIDE;
|
||||
|
||||
wxSize GetTabSize(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxString& caption,
|
||||
const wxBitmap& bitmap,
|
||||
bool active,
|
||||
int closeButtonState,
|
||||
int* xExtent) wxOVERRIDE;
|
||||
|
||||
int ShowDropDown(
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& items,
|
||||
int activeIdx) wxOVERRIDE;
|
||||
|
||||
int GetBestTabCtrlSize(wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& requiredBmpSize) wxOVERRIDE;
|
||||
|
||||
private:
|
||||
bool m_themed;
|
||||
wxSize m_closeBtnSize;
|
||||
wxSize m_tabSize;
|
||||
int m_maxTabHeight;
|
||||
|
||||
void InitSizes(wxWindow* wnd, wxDC& dc);
|
||||
|
||||
bool IsThemed() const;
|
||||
};
|
||||
|
||||
#endif // _WX_AUI_TABARTMSW_H_
|
||||
|
|
@ -20,34 +20,11 @@
|
|||
#if wxUSE_CONTROLS
|
||||
|
||||
#include "wx/window.h" // base class
|
||||
#include "wx/gdicmn.h" // wxEllipsize...
|
||||
|
||||
extern WXDLLIMPEXP_DATA_CORE(const char) wxControlNameStr[];
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Ellipsize() constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
enum wxEllipsizeFlags
|
||||
{
|
||||
wxELLIPSIZE_FLAGS_NONE = 0,
|
||||
wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS = 1,
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS = 2,
|
||||
|
||||
wxELLIPSIZE_FLAGS_DEFAULT = wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS |
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS
|
||||
};
|
||||
|
||||
// NB: Don't change the order of these values, they're the same as in
|
||||
// PangoEllipsizeMode enum.
|
||||
enum wxEllipsizeMode
|
||||
{
|
||||
wxELLIPSIZE_NONE,
|
||||
wxELLIPSIZE_START,
|
||||
wxELLIPSIZE_MIDDLE,
|
||||
wxELLIPSIZE_END
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxControl is the base class for all controls
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -155,6 +155,30 @@ enum wxStockCursor
|
|||
#define wxCURSOR_CLOSED_HAND wxCURSOR_HAND
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Ellipsize() constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
enum wxEllipsizeFlags
|
||||
{
|
||||
wxELLIPSIZE_FLAGS_NONE = 0,
|
||||
wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS = 1,
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS = 2,
|
||||
|
||||
wxELLIPSIZE_FLAGS_DEFAULT = wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS |
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS
|
||||
};
|
||||
|
||||
// NB: Don't change the order of these values, they're the same as in
|
||||
// PangoEllipsizeMode enum.
|
||||
enum wxEllipsizeMode
|
||||
{
|
||||
wxELLIPSIZE_NONE,
|
||||
wxELLIPSIZE_START,
|
||||
wxELLIPSIZE_MIDDLE,
|
||||
wxELLIPSIZE_END
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// macros
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -102,10 +102,6 @@ public:
|
|||
// wasn't found at all
|
||||
static int GetComCtl32Version();
|
||||
|
||||
// the same for shell32.dll: returns 400, 471, 500, 600, ... (4.70 not
|
||||
// currently detected)
|
||||
static int GetShell32Version();
|
||||
|
||||
// the SW_XXX value to be used for the frames opened by the application
|
||||
// (currently seems unused which is a bug -- TODO)
|
||||
static int m_nCmdShow;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@
|
|||
#ifndef _WX_MSW_STDPATHS_H_
|
||||
#define _WX_MSW_STDPATHS_H_
|
||||
|
||||
struct _GUID;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxStandardPaths
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
@ -26,7 +28,7 @@ public:
|
|||
virtual wxString GetUserDataDir() const;
|
||||
virtual wxString GetUserLocalDataDir() const;
|
||||
virtual wxString GetPluginsDir() const;
|
||||
virtual wxString GetDocumentsDir() const;
|
||||
virtual wxString GetUserDir(Dir userDir) const wxOVERRIDE;
|
||||
|
||||
|
||||
// MSW-specific methods
|
||||
|
|
@ -72,6 +74,8 @@ protected:
|
|||
// get the path corresponding to the given standard CSIDL_XXX constant
|
||||
static wxString DoGetDirectory(int csidl);
|
||||
|
||||
static wxString DoGetKnownFolder(const _GUID& rfid);
|
||||
|
||||
// return the directory of the application itself
|
||||
wxString GetAppDir() const;
|
||||
|
||||
|
|
|
|||
43
include/wx/osx/cocoa/stdpaths.h
Normal file
43
include/wx/osx/cocoa/stdpaths.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/osx/cocoa/stdpaths.h
|
||||
// Purpose: wxStandardPaths for Cocoa
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2015-09-09
|
||||
// Copyright: (c) 2015 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_COCOA_STDPATHS_H_
|
||||
#define _WX_COCOA_STDPATHS_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxStandardPaths
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_BASE wxStandardPaths : public wxStandardPathsBase
|
||||
{
|
||||
public:
|
||||
virtual ~wxStandardPaths();
|
||||
|
||||
// implement base class pure virtuals
|
||||
virtual wxString GetExecutablePath() const wxOVERRIDE;
|
||||
virtual wxString GetConfigDir() const wxOVERRIDE;
|
||||
virtual wxString GetUserConfigDir() const wxOVERRIDE;
|
||||
virtual wxString GetDataDir() const wxOVERRIDE;
|
||||
virtual wxString GetLocalDataDir() const wxOVERRIDE;
|
||||
virtual wxString GetUserDataDir() const wxOVERRIDE;
|
||||
virtual wxString GetPluginsDir() const wxOVERRIDE;
|
||||
virtual wxString GetResourcesDir() const wxOVERRIDE;
|
||||
virtual wxString
|
||||
GetLocalizedResourcesDir(const wxString& lang,
|
||||
ResourceCat category = ResourceCat_None) const wxOVERRIDE;
|
||||
virtual wxString GetUserDir(Dir userDir) const wxOVERRIDE;
|
||||
|
||||
protected:
|
||||
// Ctor is protected, use wxStandardPaths::Get() instead of instantiating
|
||||
// objects of this class directly.
|
||||
wxStandardPaths();
|
||||
};
|
||||
|
||||
|
||||
#endif // _WX_COCOA_STDPATHS_H_
|
||||
|
|
@ -52,7 +52,7 @@ public:
|
|||
virtual wxString
|
||||
GetLocalizedResourcesDir(const wxString& lang,
|
||||
ResourceCat category = ResourceCat_None) const;
|
||||
virtual wxString GetDocumentsDir() const;
|
||||
virtual wxString GetUserDir(Dir userDir) const wxOVERRIDE;
|
||||
|
||||
protected:
|
||||
// Ctor is protected, use wxStandardPaths::Get() instead of instantiating
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ enum
|
|||
wxCONTROL_EXPANDED = wxCONTROL_SPECIAL, // only for the tree items
|
||||
wxCONTROL_SIZEGRIP = wxCONTROL_SPECIAL, // only for the status bar panes
|
||||
wxCONTROL_FLAT = wxCONTROL_SPECIAL, // checkboxes only: flat border
|
||||
wxCONTROL_CELL = wxCONTROL_SPECIAL, // only for item selection rect
|
||||
wxCONTROL_CURRENT = 0x00000010, // mouse is currently over the control
|
||||
wxCONTROL_SELECTED = 0x00000020, // selected item in e.g. listbox
|
||||
wxCONTROL_CHECKED = 0x00000040, // (check/radio button) is checked
|
||||
|
|
@ -346,7 +347,8 @@ public:
|
|||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
int align = wxALIGN_LEFT | wxALIGN_TOP,
|
||||
int flags = 0) = 0;
|
||||
int flags = 0,
|
||||
wxEllipsizeMode ellipsizeMode = wxELLIPSIZE_END) = 0;
|
||||
|
||||
// geometry functions
|
||||
// ------------------
|
||||
|
|
@ -548,8 +550,9 @@ public:
|
|||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
int align = wxALIGN_LEFT | wxALIGN_TOP,
|
||||
int flags = 0)
|
||||
{ m_rendererNative.DrawItemText(win, dc, text, rect, align, flags); }
|
||||
int flags = 0,
|
||||
wxEllipsizeMode ellipsizeMode = wxELLIPSIZE_END)
|
||||
{ m_rendererNative.DrawItemText(win, dc, text, rect, align, flags, ellipsizeMode); }
|
||||
|
||||
virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
|
||||
{ return m_rendererNative.GetSplitterParams(win); }
|
||||
|
|
|
|||
|
|
@ -49,6 +49,15 @@ public:
|
|||
AppInfo_VendorName = 2 // the vendor name
|
||||
};
|
||||
|
||||
enum Dir
|
||||
{
|
||||
Dir_Documents,
|
||||
Dir_Desktop,
|
||||
Dir_Downloads,
|
||||
Dir_Music,
|
||||
Dir_Pictures,
|
||||
Dir_Videos
|
||||
};
|
||||
|
||||
// return the global standard paths object
|
||||
static wxStandardPaths& Get();
|
||||
|
|
@ -130,7 +139,10 @@ public:
|
|||
//
|
||||
// C:\Documents and Settings\username\My Documents under Windows,
|
||||
// $HOME under Unix and ~/Documents under Mac
|
||||
virtual wxString GetDocumentsDir() const;
|
||||
virtual wxString GetDocumentsDir() const
|
||||
{
|
||||
return GetUserDir(Dir_Documents);
|
||||
}
|
||||
|
||||
// return the directory for the documents files used by this application:
|
||||
// it's a subdirectory of GetDocumentsDir() constructed using the
|
||||
|
|
@ -140,6 +152,7 @@ public:
|
|||
// return the temporary directory for the current user
|
||||
virtual wxString GetTempDir() const;
|
||||
|
||||
virtual wxString GetUserDir(Dir userDir) const;
|
||||
|
||||
// virtual dtor for the base class
|
||||
virtual ~wxStandardPathsBase();
|
||||
|
|
@ -174,6 +187,9 @@ protected:
|
|||
#if defined(__WINDOWS__)
|
||||
#include "wx/msw/stdpaths.h"
|
||||
#define wxHAS_NATIVE_STDPATHS
|
||||
#elif defined(__WXOSX_COCOA__) || defined(__WXOSX_IPHONE__)
|
||||
#include "wx/osx/cocoa/stdpaths.h"
|
||||
#define wxHAS_NATIVE_STDPATHS
|
||||
// We want CoreFoundation paths on both CarbonLib and Darwin (for all ports)
|
||||
#elif defined(__WXMAC__) || defined(__DARWIN__)
|
||||
#include "wx/osx/core/stdpaths.h"
|
||||
|
|
@ -205,7 +221,7 @@ public:
|
|||
virtual wxString GetLocalDataDir() const { return m_prefix; }
|
||||
virtual wxString GetUserDataDir() const { return m_prefix; }
|
||||
virtual wxString GetPluginsDir() const { return m_prefix; }
|
||||
virtual wxString GetDocumentsDir() const { return m_prefix; }
|
||||
virtual wxString GetUserDir(Dir WXUNUSED(userDir)) const { return m_prefix; }
|
||||
|
||||
protected:
|
||||
// Ctor is protected because wxStandardPaths::Get() should always be used
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public:
|
|||
virtual wxString GetLocalizedResourcesDir(const wxString& lang,
|
||||
ResourceCat category) const wxOVERRIDE;
|
||||
#ifndef __VMS
|
||||
virtual wxString GetDocumentsDir() const wxOVERRIDE;
|
||||
virtual wxString GetUserDir(Dir userDir) const wxOVERRIDE;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ wxEventType wxEVT_CHOICEBOOK_PAGE_CHANGING;
|
|||
@beginStyleTable
|
||||
@style{wxCHB_DEFAULT}
|
||||
Choose the default location for the labels depending on the current
|
||||
platform (left everywhere except Mac where it is top).
|
||||
platform (but currently it's the same everywhere, namely wxCHB_TOP).
|
||||
@style{wxCHB_TOP}
|
||||
Place labels above the page area.
|
||||
@style{wxCHB_LEFT}
|
||||
|
|
|
|||
|
|
@ -5,60 +5,6 @@
|
|||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
Flags used by wxControl::Ellipsize function.
|
||||
*/
|
||||
enum wxEllipsizeFlags
|
||||
{
|
||||
/// No special flags.
|
||||
wxELLIPSIZE_FLAGS_NONE = 0,
|
||||
|
||||
/**
|
||||
Take mnemonics into account when calculating the text width.
|
||||
|
||||
With this flag when calculating the size of the passed string,
|
||||
mnemonics characters (see wxControl::SetLabel) will be automatically
|
||||
reduced to a single character. This leads to correct calculations only
|
||||
if the string passed to Ellipsize() will be used with
|
||||
wxControl::SetLabel. If you don't want ampersand to be interpreted as
|
||||
mnemonics (e.g. because you use wxControl::SetLabelText) then don't use
|
||||
this flag.
|
||||
*/
|
||||
wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS = 1,
|
||||
|
||||
/**
|
||||
Expand tabs in spaces when calculating the text width.
|
||||
|
||||
This flag tells wxControl::Ellipsize() to calculate the width of tab
|
||||
characters @c '\\t' as 6 spaces.
|
||||
*/
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS = 2,
|
||||
|
||||
/// The default flags for wxControl::Ellipsize.
|
||||
wxELLIPSIZE_FLAGS_DEFAULT = wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS|
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
The different ellipsization modes supported by the
|
||||
wxControl::Ellipsize function.
|
||||
*/
|
||||
enum wxEllipsizeMode
|
||||
{
|
||||
/// Don't ellipsize the text at all. @since 2.9.1
|
||||
wxELLIPSIZE_NONE,
|
||||
|
||||
/// Put the ellipsis at the start of the string, if the string needs ellipsization.
|
||||
wxELLIPSIZE_START,
|
||||
|
||||
/// Put the ellipsis in the middle of the string, if the string needs ellipsization.
|
||||
wxELLIPSIZE_MIDDLE,
|
||||
|
||||
/// Put the ellipsis at the end of the string, if the string needs ellipsization.
|
||||
wxELLIPSIZE_END
|
||||
};
|
||||
|
||||
/**
|
||||
@class wxControl
|
||||
|
||||
|
|
|
|||
|
|
@ -164,9 +164,8 @@ struct wxFontMetrics
|
|||
|
||||
@section Support for Transformation Matrix
|
||||
|
||||
On some platforms (currently only under MSW and only on Windows NT, i.e.
|
||||
not Windows 9x/ME, systems) wxDC has support for applying an arbitrary
|
||||
affine transformation matrix to its coordinate system. Call
|
||||
On some platforms (currently only under MSW) wxDC has support for applying
|
||||
an arbitrary affine transformation matrix to its coordinate system. Call
|
||||
CanUseTransformMatrix() to check if this support is available and then call
|
||||
SetTransformMatrix() if it is. If the transformation matrix is not
|
||||
supported, SetTransformMatrix() always simply returns false and doesn't do
|
||||
|
|
@ -1516,10 +1515,7 @@ public:
|
|||
Check if the use of transformation matrix is supported by the current
|
||||
system.
|
||||
|
||||
Currently this function always returns @false for non-MSW platforms and
|
||||
may return @false for old (Windows 9x/ME) Windows systems. Normally
|
||||
support for the transformation matrix is always available in any
|
||||
relatively recent Windows versions.
|
||||
Currently this function always returns @false for non-MSW platforms.
|
||||
|
||||
@since 2.9.2
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -107,6 +107,60 @@ enum wxStockCursor
|
|||
wxCURSOR_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
Flags used by wxControl::Ellipsize function.
|
||||
*/
|
||||
enum wxEllipsizeFlags
|
||||
{
|
||||
/// No special flags.
|
||||
wxELLIPSIZE_FLAGS_NONE = 0,
|
||||
|
||||
/**
|
||||
Take mnemonics into account when calculating the text width.
|
||||
|
||||
With this flag when calculating the size of the passed string,
|
||||
mnemonics characters (see wxControl::SetLabel) will be automatically
|
||||
reduced to a single character. This leads to correct calculations only
|
||||
if the string passed to Ellipsize() will be used with
|
||||
wxControl::SetLabel. If you don't want ampersand to be interpreted as
|
||||
mnemonics (e.g. because you use wxControl::SetLabelText) then don't use
|
||||
this flag.
|
||||
*/
|
||||
wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS = 1,
|
||||
|
||||
/**
|
||||
Expand tabs in spaces when calculating the text width.
|
||||
|
||||
This flag tells wxControl::Ellipsize() to calculate the width of tab
|
||||
characters @c '\\t' as 6 spaces.
|
||||
*/
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS = 2,
|
||||
|
||||
/// The default flags for wxControl::Ellipsize.
|
||||
wxELLIPSIZE_FLAGS_DEFAULT = wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS|
|
||||
wxELLIPSIZE_FLAGS_EXPAND_TABS
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
The different ellipsization modes supported by the
|
||||
wxControl::Ellipsize and wxRendererNative::DrawItemText() functions.
|
||||
*/
|
||||
enum wxEllipsizeMode
|
||||
{
|
||||
/// Don't ellipsize the text at all. @since 2.9.1
|
||||
wxELLIPSIZE_NONE,
|
||||
|
||||
/// Put the ellipsis at the start of the string, if the string needs ellipsization.
|
||||
wxELLIPSIZE_START,
|
||||
|
||||
/// Put the ellipsis in the middle of the string, if the string needs ellipsization.
|
||||
wxELLIPSIZE_MIDDLE,
|
||||
|
||||
/// Put the ellipsis at the end of the string, if the string needs ellipsization.
|
||||
wxELLIPSIZE_END
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ public:
|
|||
|
||||
/**
|
||||
Check whether the operating system and/or C run time environment supports
|
||||
this locale. For example in Windows 2000 and Windows XP, support for many
|
||||
this locale. For example in Windows, support for many
|
||||
locales is not installed by default. Returns @true if the locale is
|
||||
supported.
|
||||
|
||||
|
|
|
|||
|
|
@ -110,9 +110,9 @@ public:
|
|||
HKCU, ///< HKEY_CURRENT_USER
|
||||
HKLM, ///< HKEY_LOCAL_MACHINE
|
||||
HKUSR, ///< HKEY_USERS
|
||||
HKPD, ///< HKEY_PERFORMANCE_DATA (Windows NT and 2K only)
|
||||
HKPD, ///< HKEY_PERFORMANCE_DATA
|
||||
HKCC, ///< HKEY_CURRENT_CONFIG
|
||||
HKDD, ///< HKEY_DYN_DATA (Windows 95 and 98 only)
|
||||
HKDD, ///< HKEY_DYN_DATA (Obsolete: Windows 9x only)
|
||||
HKMAX
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ wxEventType wxEVT_NOTEBOOK_PAGE_CHANGING;
|
|||
@endStyleTable
|
||||
|
||||
The styles wxNB_LEFT, RIGHT and BOTTOM are not supported under
|
||||
Microsoft Windows XP when using visual themes.
|
||||
Microsoft Windows when using visual themes.
|
||||
|
||||
@beginEventEmissionTable{wxBookCtrlEvent}
|
||||
@event{EVT_NOTEBOOK_PAGE_CHANGED(id, func)}
|
||||
|
|
@ -78,7 +78,7 @@ wxEventType wxEVT_NOTEBOOK_PAGE_CHANGING;
|
|||
|
||||
@section notebook_bg Page backgrounds
|
||||
|
||||
On Windows XP, the default theme paints a gradient on the notebook's pages.
|
||||
On Windows, the default theme paints a background on the notebook's pages.
|
||||
If you wish to suppress this theme, for aesthetic or performance reasons,
|
||||
there are three ways of doing it.
|
||||
You can use @c wxNB_NOPAGETHEME to disable themed drawing for a particular
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ enum wxOperatingSystemId
|
|||
wxOS_MAC = wxOS_MAC_OS|wxOS_MAC_OSX_DARWIN,
|
||||
|
||||
wxOS_WINDOWS_9X = 1 << 2, //!< Windows 9x family (95/98/ME)
|
||||
wxOS_WINDOWS_NT = 1 << 3, //!< Windows NT family (NT/2000/XP/Vista/7)
|
||||
wxOS_WINDOWS_NT = 1 << 3, //!< Windows NT family (XP/Vista/7/8/10)
|
||||
wxOS_WINDOWS_MICRO = 1 << 4, //!< MicroWindows
|
||||
wxOS_WINDOWS_CE = 1 << 5, //!< Windows CE (Windows Mobile)
|
||||
|
||||
|
|
|
|||
|
|
@ -526,8 +526,8 @@ public:
|
|||
/**
|
||||
Invokes the print setup dialog.
|
||||
|
||||
@remarks
|
||||
The setup dialog is obsolete from Windows 95, though retained
|
||||
@deprecated
|
||||
The setup dialog is obsolete, though retained
|
||||
for backward compatibility.
|
||||
*/
|
||||
virtual bool Setup(wxWindow* parent);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,9 @@ enum
|
|||
/** Checkboxes only: flat border. */
|
||||
wxCONTROL_FLAT = wxCONTROL_SPECIAL,
|
||||
|
||||
/** Item selection rect only: cell inside selection. */
|
||||
wxCONTROL_CELL = wxCONTROL_SPECIAL,
|
||||
|
||||
/** Mouse is currently over the control. */
|
||||
wxCONTROL_CURRENT = 0x00000010,
|
||||
|
||||
|
|
@ -404,7 +407,8 @@ public:
|
|||
@c wxCONTROL_FOCUSED may be used to indicate if the control has the focus
|
||||
(otherwise the selection rectangle is e.g. often grey and not blue).
|
||||
This may be ignored by the renderer or deduced by the code directly from
|
||||
the @a win.
|
||||
the @a win. Additionally @c wxCONTROL_CELL may be used to draw a cell inside
|
||||
a bigger selection area.
|
||||
|
||||
@see DrawItemText()
|
||||
*/
|
||||
|
|
@ -430,7 +434,8 @@ public:
|
|||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
int align = wxALIGN_LEFT | wxALIGN_TOP,
|
||||
int flags = 0) = 0;
|
||||
int flags = 0,
|
||||
wxEllipsizeMode ellipsizeMode = wxELLIPSIZE_END) = 0;
|
||||
|
||||
/**
|
||||
Draw a blank push button that looks very similar to wxButton.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ enum wxSystemFont
|
|||
/// dialog box controls, and text.
|
||||
wxSYS_SYSTEM_FONT,
|
||||
|
||||
/// Device-dependent font (Windows NT and later only).
|
||||
/// Device-dependent font.
|
||||
wxSYS_DEVICE_DEFAULT_FONT,
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@ enum
|
|||
@style{wxSP_NOBORDER}
|
||||
No border (default).
|
||||
@style{wxSP_NO_XP_THEME}
|
||||
Under Windows XP, switches off the attempt to draw the splitter
|
||||
using Windows XP theming, so the borders and sash will take on the
|
||||
Under Windows, switches off the attempt to draw the splitter
|
||||
using Windows theming, so the borders and sash will take on the
|
||||
pre-XP look.
|
||||
@style{wxSP_PERMIT_UNSPLIT}
|
||||
Always allow to unsplit, even with the minimum pane size other than zero.
|
||||
|
|
|
|||
|
|
@ -10,8 +10,7 @@
|
|||
|
||||
A static bitmap control displays a bitmap. Native implementations on some
|
||||
platforms are only meant for display of the small icons in the dialog
|
||||
boxes. In particular, under Windows 9x the size of bitmap is limited
|
||||
to 64*64 pixels.
|
||||
boxes.
|
||||
|
||||
If you want to display larger images portably, you may use generic
|
||||
implementation wxGenericStaticBitmap declared in \<wx/generic/statbmpg.h\>.
|
||||
|
|
|
|||
|
|
@ -66,6 +66,64 @@ public:
|
|||
ResourceCat_Messages
|
||||
};
|
||||
|
||||
/// Possible values for userDir parameter of GetUserDir().
|
||||
enum Dir
|
||||
{
|
||||
/**
|
||||
Directory containing user documents.
|
||||
|
||||
Example return values:
|
||||
- Unix/Mac: @c ~/Documents
|
||||
- Windows: @c "C:\Users\username\Documents"
|
||||
*/
|
||||
Dir_Documents,
|
||||
|
||||
/**
|
||||
Directory containing files on the users desktop.
|
||||
|
||||
Example return values:
|
||||
- Unix/Mac: @c ~/Desktop
|
||||
- Windows: @c "C:\Users\username\Desktop"
|
||||
*/
|
||||
Dir_Desktop,
|
||||
|
||||
/**
|
||||
Directory for downloaded files
|
||||
|
||||
Example return values:
|
||||
- Unix/Mac: @c ~/Downloads
|
||||
- Windows: @c "C:\Users\username\Downloads" (Only available on Vista and newer)
|
||||
*/
|
||||
Dir_Downloads,
|
||||
|
||||
/**
|
||||
Directory containing music files.
|
||||
|
||||
Example return values:
|
||||
- Unix/Mac: @c ~/Music
|
||||
- Windows: @c "C:\Users\username\Music"
|
||||
*/
|
||||
Dir_Music,
|
||||
|
||||
/**
|
||||
Directory containing picture files.
|
||||
|
||||
Example return values:
|
||||
- Unix/Mac: @c ~/Pictures
|
||||
- Windows: @c "C:\Users\username\Pictures"
|
||||
*/
|
||||
Dir_Pictures,
|
||||
|
||||
/**
|
||||
Directory containing video files.
|
||||
|
||||
Example return values:
|
||||
- Unix: @c ~/Videos
|
||||
- Windows: @c "C:\Users\username\Videos"
|
||||
- Mac: @c ~/Movies
|
||||
*/
|
||||
Dir_Videos
|
||||
};
|
||||
|
||||
/**
|
||||
MSW-specific function undoing the effect of IgnoreAppSubDir() calls.
|
||||
|
|
@ -138,17 +196,11 @@ public:
|
|||
virtual wxString GetDataDir() const;
|
||||
|
||||
/**
|
||||
Return the directory containing the current user's documents.
|
||||
|
||||
Example return values:
|
||||
- Unix: @c ~ (the home directory)
|
||||
- Windows: @c "C:\Users\username\Documents" or
|
||||
@c "C:\Documents and Settings\username\My Documents"
|
||||
- Mac: @c ~/Documents
|
||||
Same as calling GetUserDir() with Dir_Documents parameter.
|
||||
|
||||
@since 2.7.0
|
||||
|
||||
@see GetAppDocumentsDir()
|
||||
@see GetAppDocumentsDir(), GetUserDir()
|
||||
*/
|
||||
virtual wxString GetDocumentsDir() const;
|
||||
|
||||
|
|
@ -259,6 +311,17 @@ public:
|
|||
*/
|
||||
virtual wxString GetUserDataDir() const;
|
||||
|
||||
/**
|
||||
Return the path of the specified user data directory.
|
||||
|
||||
If the value could not be determined the users home directory is returned.
|
||||
|
||||
@note On Unix this supports the xdg user dirs specification.
|
||||
|
||||
@since 3.1.0
|
||||
*/
|
||||
virtual wxString GetUserDir(Dir userDir) const;
|
||||
|
||||
/**
|
||||
Return the directory for user data files which shouldn't be shared with
|
||||
the other machines.
|
||||
|
|
|
|||
|
|
@ -1076,7 +1076,7 @@ public:
|
|||
See @ref thread_deletion for a broader explanation of this routine.
|
||||
*/
|
||||
wxThreadError Delete(ExitCode *rc = NULL,
|
||||
wxThreadWait waitMode = wxTHREAD_WAIT_BLOCK);
|
||||
wxThreadWait waitMode = wxTHREAD_WAIT_DEFAULT);
|
||||
|
||||
/**
|
||||
Returns the number of system CPUs or -1 if the value is unknown.
|
||||
|
|
|
|||
|
|
@ -1005,8 +1005,7 @@ enum
|
|||
Under Unix, if the process is the group leader then passing
|
||||
wxKILL_CHILDREN to wxKill() kills all children as well as pid.
|
||||
|
||||
Under MSW, applies only to console applications and is only supported
|
||||
under NT family (i.e. not under Windows 9x). It corresponds to the
|
||||
Under MSW, applies only to console applications. It corresponds to the
|
||||
native @c CREATE_NEW_PROCESS_GROUP and, in particular, ensures that
|
||||
Ctrl-Break signals will be sent to all children of this process as well
|
||||
to the process itself. Support for this flag under MSW was added in
|
||||
|
|
@ -1341,7 +1340,7 @@ bool wxShell(const wxString& command = wxEmptyString);
|
|||
the @a flags.
|
||||
|
||||
@note Note that performing the shutdown requires the corresponding access
|
||||
rights (superuser under Unix, SE_SHUTDOWN privilege under Windows NT)
|
||||
rights (superuser under Unix, SE_SHUTDOWN privilege under Windows)
|
||||
and that this function is only implemented under Unix and MSW.
|
||||
|
||||
@param flags
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ enum wxWindowVariant
|
|||
is the old name for this style. Windows only.
|
||||
@style{wxBORDER_THEME}
|
||||
Displays a native border suitable for a control, on the current
|
||||
platform. On Windows XP or Vista, this will be a themed border; on
|
||||
platform. On Windows, this will be a themed border; on
|
||||
most other platforms a sunken border will be used. For more
|
||||
information for themed borders on Windows, please see Themed
|
||||
borders on Windows.
|
||||
|
|
|
|||
|
|
@ -186,6 +186,7 @@ bool wxAuiTabContainer::AddPage(wxWindow* page,
|
|||
wxAuiNotebookPage page_info;
|
||||
page_info = info;
|
||||
page_info.window = page;
|
||||
page_info.hover = false;
|
||||
|
||||
m_pages.Add(page_info);
|
||||
|
||||
|
|
@ -205,6 +206,7 @@ bool wxAuiTabContainer::InsertPage(wxWindow* page,
|
|||
wxAuiNotebookPage page_info;
|
||||
page_info = info;
|
||||
page_info.window = page;
|
||||
page_info.hover = false;
|
||||
|
||||
if (idx >= m_pages.GetCount())
|
||||
m_pages.Add(page_info);
|
||||
|
|
@ -1233,20 +1235,28 @@ void wxAuiTabCtrl::OnMotion(wxMouseEvent& evt)
|
|||
}
|
||||
}
|
||||
|
||||
#if wxUSE_TOOLTIPS
|
||||
wxWindow* wnd = NULL;
|
||||
if (evt.Moving() && TabHitTest(evt.m_x, evt.m_y, &wnd))
|
||||
{
|
||||
SetHoverTab(wnd);
|
||||
|
||||
#if wxUSE_TOOLTIPS
|
||||
wxString tooltip(m_pages[GetIdxFromWindow(wnd)].tooltip);
|
||||
|
||||
// If the text changes, set it else, keep old, to avoid
|
||||
// 'moving tooltip' effect
|
||||
if (GetToolTipText() != tooltip)
|
||||
SetToolTip(tooltip);
|
||||
#endif // wxUSE_TOOLTIPS
|
||||
}
|
||||
else
|
||||
{
|
||||
SetHoverTab(NULL);
|
||||
|
||||
#if wxUSE_TOOLTIPS
|
||||
UnsetToolTip();
|
||||
#endif // wxUSE_TOOLTIPS
|
||||
}
|
||||
|
||||
if (!evt.LeftIsDown() || m_clickPt == wxDefaultPosition)
|
||||
return;
|
||||
|
|
@ -1287,6 +1297,8 @@ void wxAuiTabCtrl::OnLeaveWindow(wxMouseEvent& WXUNUSED(event))
|
|||
Refresh();
|
||||
Update();
|
||||
}
|
||||
|
||||
SetHoverTab(NULL);
|
||||
}
|
||||
|
||||
void wxAuiTabCtrl::OnButton(wxAuiNotebookEvent& event)
|
||||
|
|
@ -3450,5 +3462,26 @@ int wxAuiNotebook::DoModifySelection(size_t n, bool events)
|
|||
return m_curPage;
|
||||
}
|
||||
|
||||
void wxAuiTabCtrl::SetHoverTab(wxWindow* wnd)
|
||||
{
|
||||
bool hoverChanged = false;
|
||||
|
||||
const size_t page_count = m_pages.GetCount();
|
||||
for ( size_t i = 0; i < page_count; ++i )
|
||||
{
|
||||
wxAuiNotebookPage& page = m_pages.Item(i);
|
||||
bool oldHover = page.hover;
|
||||
page.hover = (page.window == wnd);
|
||||
if ( oldHover != page.hover )
|
||||
hoverChanged = true;
|
||||
}
|
||||
|
||||
if ( hoverChanged )
|
||||
{
|
||||
Refresh();
|
||||
Update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif // wxUSE_AUI
|
||||
|
|
|
|||
501
src/aui/tabartmsw.cpp
Normal file
501
src/aui/tabartmsw.cpp
Normal file
|
|
@ -0,0 +1,501 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/aui/tabartmsw.h
|
||||
// Purpose: wxAuiMSWTabArt declaration
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2015-09-26
|
||||
// Copyright: (c) 2015 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/dc.h"
|
||||
#endif
|
||||
|
||||
#include "wx/aui/tabart.h"
|
||||
#include "wx/aui/auibook.h"
|
||||
#include "wx/msw/uxtheme.h"
|
||||
#include "wx/msw/private.h"
|
||||
#include "wx/renderer.h"
|
||||
|
||||
#if wxUSE_AUI
|
||||
|
||||
#ifndef CP_DROPDOWNBUTTON
|
||||
|
||||
#define TABP_TABITEM 1
|
||||
#define TABP_TABITEMLEFTEDGE 2
|
||||
#define TABP_TABITEMRIGHTEDGE 3
|
||||
#define TABP_TABITEMBOTHEDGE 4
|
||||
#define TABP_TOPTABITEM 5
|
||||
#define TABP_TOPTABITEMLEFTEDGE 6
|
||||
#define TABP_TOPTABITEMRIGHTEDGE 7
|
||||
#define TABP_TOPTABITEMBOTHEDGE 8
|
||||
#define TABP_PANE 9
|
||||
#define TABP_BODY 10
|
||||
#define TABP_AEROWIZARDBODY 11
|
||||
|
||||
#define TIS_NORMAL 1
|
||||
#define TIS_HOT 2
|
||||
#define TIS_SELECTED 3
|
||||
#define TIS_DISABLED 4
|
||||
#define TIS_FOCUSED 5
|
||||
|
||||
#define TTP_CLOSE 5
|
||||
|
||||
#define TTCS_NORMAL 1
|
||||
#define TTCS_HOT 2
|
||||
#define TTCS_PRESSED 3
|
||||
|
||||
#define SPNP_UPHORZ 3
|
||||
#define SPNP_DOWNHORZ 4
|
||||
|
||||
#define CP_DROPDOWNBUTTON1 1
|
||||
|
||||
#define WP_CLOSEBUTTON 18
|
||||
#endif
|
||||
|
||||
wxAuiMSWTabArt::wxAuiMSWTabArt()
|
||||
{
|
||||
m_closeBtnSize = wxDefaultSize;
|
||||
m_maxTabHeight = 0;
|
||||
|
||||
wxUxThemeEngine* te = wxUxThemeEngine::GetIfActive();
|
||||
if ( te && te->IsAppThemed() )
|
||||
{
|
||||
m_themed = true;
|
||||
}
|
||||
else
|
||||
m_themed = false;
|
||||
}
|
||||
|
||||
wxAuiMSWTabArt::~wxAuiMSWTabArt()
|
||||
{
|
||||
}
|
||||
|
||||
wxAuiTabArt* wxAuiMSWTabArt::Clone()
|
||||
{
|
||||
return new wxAuiMSWTabArt(*this);
|
||||
}
|
||||
|
||||
void wxAuiMSWTabArt::SetSizingInfo(const wxSize& tab_ctrl_size,
|
||||
size_t tab_count)
|
||||
{
|
||||
wxAuiGenericTabArt::SetSizingInfo(tab_ctrl_size, tab_count);
|
||||
}
|
||||
|
||||
|
||||
void wxAuiMSWTabArt::DrawBorder(wxDC& dc, wxWindow* wnd, const wxRect& rect)
|
||||
{
|
||||
if ( !IsThemed() )
|
||||
{
|
||||
wxAuiGenericTabArt::DrawBorder(dc, wnd, rect);
|
||||
return;
|
||||
}
|
||||
|
||||
wxRect drawRect(rect);
|
||||
|
||||
drawRect.y += m_maxTabHeight + wnd->FromDIP(1);
|
||||
drawRect.height -= m_maxTabHeight;
|
||||
|
||||
// Mask border not covered by native theme
|
||||
wxRect topDrawRect(rect);
|
||||
topDrawRect.height = drawRect.height;
|
||||
dc.SetPen(wxPen(wnd->GetBackgroundColour(), GetBorderWidth(wnd)));
|
||||
dc.DrawRectangle(topDrawRect);
|
||||
|
||||
RECT r;
|
||||
wxCopyRectToRECT(drawRect, r);
|
||||
|
||||
wxUxThemeHandle hTheme(wnd, L"TAB");
|
||||
|
||||
wxUxThemeEngine::Get()->DrawThemeBackground(
|
||||
hTheme,
|
||||
GetHdcOf(dc.GetTempHDC()),
|
||||
TABP_PANE,
|
||||
0,
|
||||
&r,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void wxAuiMSWTabArt::DrawBackground(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect)
|
||||
{
|
||||
if ( !IsThemed() )
|
||||
{
|
||||
wxAuiGenericTabArt::DrawBackground(dc, wnd, rect);
|
||||
return;
|
||||
}
|
||||
|
||||
int borderHeight = 2;
|
||||
|
||||
wxRect drawRect = rect;
|
||||
drawRect.height -= borderHeight;
|
||||
|
||||
// Draw background
|
||||
dc.SetBrush(wxBrush(wnd->GetBackgroundColour()));
|
||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||
dc.DrawRectangle(drawRect);
|
||||
|
||||
// Draw top border
|
||||
drawRect.y = drawRect.height;
|
||||
drawRect.height = borderHeight + 2;
|
||||
|
||||
drawRect.Inflate(1, 0);
|
||||
|
||||
RECT r;
|
||||
wxCopyRectToRECT(drawRect, r);
|
||||
|
||||
wxUxThemeHandle hTheme(wnd, L"TAB");
|
||||
|
||||
wxUxThemeEngine::Get()->DrawThemeBackground(
|
||||
hTheme,
|
||||
GetHdcOf(dc.GetTempHDC()),
|
||||
TABP_PANE,
|
||||
0,
|
||||
&r,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void wxAuiMSWTabArt::DrawTab(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& page,
|
||||
const wxRect& in_rect,
|
||||
int close_button_state,
|
||||
wxRect* out_tab_rect,
|
||||
wxRect* out_button_rect,
|
||||
int* x_extent)
|
||||
{
|
||||
if ( !IsThemed() )
|
||||
{
|
||||
wxAuiGenericTabArt::DrawTab(dc, wnd, page, in_rect, close_button_state, out_tab_rect, out_button_rect, x_extent);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !m_closeBtnSize.IsFullySpecified() )
|
||||
InitSizes(wnd, dc);
|
||||
|
||||
// figure out the size of the tab
|
||||
wxSize tabSize = GetTabSize(dc,
|
||||
wnd,
|
||||
page.caption,
|
||||
page.bitmap,
|
||||
page.active,
|
||||
close_button_state,
|
||||
x_extent);
|
||||
|
||||
wxCoord tabHeight = tabSize.y;
|
||||
wxCoord tabWidth = tabSize.x;
|
||||
wxCoord tabX = in_rect.x;
|
||||
wxCoord tabY = 0;
|
||||
|
||||
if (!page.active)
|
||||
{
|
||||
tabY += wnd->FromDIP(2);
|
||||
tabHeight -= wnd->FromDIP(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
tabX -= wnd->FromDIP(2);
|
||||
tabWidth += wnd->FromDIP(4);
|
||||
tabHeight += 2;
|
||||
}
|
||||
|
||||
int clipWidth = tabWidth;
|
||||
if ( tabX + clipWidth > in_rect.x + in_rect.width )
|
||||
clipWidth = (in_rect.x + in_rect.width) - tabX;
|
||||
dc.SetClippingRegion(tabX - wnd->FromDIP(2), tabY, clipWidth + wnd->FromDIP(4), tabHeight);
|
||||
|
||||
|
||||
// draw tab
|
||||
wxRect tabRect(tabX, tabY, tabWidth, tabHeight);
|
||||
|
||||
int tabState;
|
||||
if ( page.active )
|
||||
tabState = TIS_SELECTED;
|
||||
else if ( page.hover )
|
||||
tabState = TIS_HOT;
|
||||
else
|
||||
tabState = TIS_NORMAL;
|
||||
|
||||
wxUxThemeEngine* te = wxUxThemeEngine::Get();
|
||||
|
||||
wxUxThemeHandle hTabTheme(wnd, L"Tab");
|
||||
RECT tabR;
|
||||
wxCopyRectToRECT(tabRect, tabR);
|
||||
te->DrawThemeBackground(hTabTheme, GetHdcOf(dc.GetTempHDC()), TABP_TABITEM,
|
||||
tabState,
|
||||
&tabR, NULL);
|
||||
|
||||
wxRect textRect = tabRect;
|
||||
if ( !page.active )
|
||||
textRect.Offset(0, wnd->FromDIP(1));
|
||||
if ( close_button_state != wxAUI_BUTTON_STATE_HIDDEN )
|
||||
textRect.width -= m_closeBtnSize.x + wnd->FromDIP(3);
|
||||
|
||||
dc.SetFont(wnd->GetFont());
|
||||
dc.DrawLabel(page.caption, page.bitmap, textRect, wxALIGN_CENTRE);
|
||||
|
||||
// draw focus rectangle
|
||||
if ( page.active && (wnd->FindFocus() == wnd) )
|
||||
{
|
||||
wxRect focusRect = tabRect;
|
||||
focusRect.Deflate(wnd->FromDIP(2));
|
||||
|
||||
wxRendererNative::Get().DrawFocusRect(wnd, dc, focusRect, 0);
|
||||
}
|
||||
|
||||
// draw close button
|
||||
if ( close_button_state != wxAUI_BUTTON_STATE_HIDDEN )
|
||||
{
|
||||
wxUxThemeHandle hToolTipTheme(wnd, L"TOOLTIP");
|
||||
|
||||
int btnState;
|
||||
if ( close_button_state == wxAUI_BUTTON_STATE_HOVER )
|
||||
btnState = TTCS_HOT;
|
||||
else if ( close_button_state == wxAUI_BUTTON_STATE_PRESSED )
|
||||
btnState = TTCS_PRESSED;
|
||||
else
|
||||
btnState = TTCS_NORMAL;
|
||||
|
||||
int offsetY = tabY;
|
||||
if ( wxGetWinVersion() < wxWinVersion_Vista )
|
||||
offsetY++; // WinXP theme needs a little more padding
|
||||
|
||||
wxRect rect(tabX + tabWidth - m_closeBtnSize.x - wnd->FromDIP(4),
|
||||
offsetY + (tabHeight / 2) - (m_closeBtnSize.y / 2),
|
||||
m_closeBtnSize.x,
|
||||
m_closeBtnSize.y);
|
||||
|
||||
RECT btnR;
|
||||
wxCopyRectToRECT(rect, btnR);
|
||||
te->DrawThemeBackground(hToolTipTheme, GetHdcOf(dc.GetTempHDC()), TTP_CLOSE, btnState, &btnR, NULL);
|
||||
|
||||
if ( out_button_rect )
|
||||
*out_button_rect = rect;
|
||||
}
|
||||
|
||||
*out_tab_rect = wxRect(tabX, tabY, tabWidth, tabHeight);
|
||||
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
|
||||
int wxAuiMSWTabArt::GetIndentSize()
|
||||
{
|
||||
if ( IsThemed() )
|
||||
return 3; // This should be 1 but we can't draw into the border from DrawTab
|
||||
else
|
||||
return wxAuiGenericTabArt::GetIndentSize();
|
||||
}
|
||||
|
||||
int wxAuiMSWTabArt::GetBorderWidth(wxWindow* wnd)
|
||||
{
|
||||
return wxAuiGenericTabArt::GetBorderWidth(wnd);
|
||||
}
|
||||
|
||||
int wxAuiMSWTabArt::GetAdditionalBorderSpace(wxWindow* wnd)
|
||||
{
|
||||
if ( IsThemed() )
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
else
|
||||
return wxAuiGenericTabArt::GetAdditionalBorderSpace(wnd);
|
||||
}
|
||||
|
||||
wxSize wxAuiMSWTabArt::GetTabSize(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxString& caption,
|
||||
const wxBitmap& bitmap,
|
||||
bool active,
|
||||
int close_button_state,
|
||||
int* x_extent)
|
||||
{
|
||||
if ( !IsThemed() )
|
||||
return wxAuiGenericTabArt::GetTabSize(dc, wnd, caption, bitmap, active, close_button_state, x_extent);
|
||||
|
||||
if ( !m_closeBtnSize.IsFullySpecified() )
|
||||
InitSizes(wnd, dc);
|
||||
|
||||
wxCoord textWidth, textHeight, tmp;
|
||||
|
||||
dc.SetFont(wnd->GetFont());
|
||||
dc.GetTextExtent(caption, &textWidth, &tmp);
|
||||
dc.GetTextExtent("ABCDEFXj", &tmp, &textHeight);
|
||||
|
||||
wxCoord tabWidth = wxMax(m_tabSize.x, textWidth);
|
||||
wxCoord tabHeight = wxMax(m_tabSize.y, textHeight);
|
||||
|
||||
// if the close button is showing, add space for it
|
||||
if ( close_button_state != wxAUI_BUTTON_STATE_HIDDEN )
|
||||
{
|
||||
tabWidth += m_closeBtnSize.x;
|
||||
tabHeight = wxMax(tabHeight, m_closeBtnSize.y);
|
||||
}
|
||||
|
||||
// if there's a bitmap, add space for it
|
||||
if ( bitmap.IsOk() )
|
||||
{
|
||||
tabWidth += bitmap.GetWidth() + wnd->FromDIP(3); // bitmap padding
|
||||
tabHeight = wxMax(tabHeight, bitmap.GetHeight() + wnd->FromDIP(2));
|
||||
}
|
||||
|
||||
// add padding
|
||||
tabWidth += wnd->FromDIP(12);
|
||||
tabHeight += wnd->FromDIP(3);
|
||||
|
||||
if ( m_flags & wxAUI_NB_TAB_FIXED_WIDTH )
|
||||
{
|
||||
tabWidth = m_fixedTabWidth;
|
||||
}
|
||||
else
|
||||
{
|
||||
int minTabWidth = wnd->FromDIP(46);
|
||||
if (tabWidth < minTabWidth)
|
||||
tabWidth = minTabWidth;
|
||||
}
|
||||
|
||||
*x_extent = tabWidth;
|
||||
|
||||
if (tabHeight > m_maxTabHeight)
|
||||
m_maxTabHeight = tabHeight;
|
||||
|
||||
return wxSize(tabWidth, tabHeight);
|
||||
}
|
||||
|
||||
|
||||
void wxAuiMSWTabArt::DrawButton(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& in_rect,
|
||||
int bitmap_id,
|
||||
int button_state,
|
||||
int orientation,
|
||||
wxRect* out_rect)
|
||||
{
|
||||
if ( !IsThemed() )
|
||||
{
|
||||
wxAuiGenericTabArt::DrawButton(dc, wnd, in_rect, bitmap_id, button_state, orientation, out_rect);
|
||||
return;
|
||||
}
|
||||
|
||||
wxUxThemeEngine* te = wxUxThemeEngine::Get();
|
||||
|
||||
const wchar_t* themeId = NULL;
|
||||
int part = 0;
|
||||
|
||||
switch (bitmap_id)
|
||||
{
|
||||
case wxAUI_BUTTON_CLOSE:
|
||||
themeId = L"Window";
|
||||
part = WP_CLOSEBUTTON;
|
||||
break;
|
||||
case wxAUI_BUTTON_LEFT:
|
||||
themeId = L"Spin";
|
||||
part = SPNP_DOWNHORZ;
|
||||
break;
|
||||
case wxAUI_BUTTON_RIGHT:
|
||||
themeId = L"Spin";
|
||||
part = SPNP_UPHORZ;
|
||||
break;
|
||||
case wxAUI_BUTTON_WINDOWLIST:
|
||||
themeId = L"Combobox";
|
||||
part = CP_DROPDOWNBUTTON1;
|
||||
break;
|
||||
}
|
||||
|
||||
wxRect rect = in_rect;
|
||||
|
||||
if ( orientation == wxLEFT )
|
||||
{
|
||||
rect.SetX(in_rect.x);
|
||||
rect.SetY(((in_rect.y + in_rect.height) / 2) - (m_closeBtnSize.GetHeight() / 2));
|
||||
rect.SetWidth(m_closeBtnSize.GetWidth());
|
||||
rect.SetHeight(m_closeBtnSize.GetHeight());
|
||||
}
|
||||
else
|
||||
{
|
||||
rect = wxRect(in_rect.x + in_rect.width - m_closeBtnSize.GetWidth(),
|
||||
((in_rect.y + in_rect.height) / 2) - (m_closeBtnSize.GetHeight() / 2),
|
||||
m_closeBtnSize.GetWidth(), m_closeBtnSize.GetHeight());
|
||||
}
|
||||
|
||||
if ( bitmap_id == wxAUI_BUTTON_LEFT ||
|
||||
bitmap_id == wxAUI_BUTTON_RIGHT )
|
||||
{
|
||||
rect.y = in_rect.y;
|
||||
rect.height = in_rect.height - 7;
|
||||
}
|
||||
|
||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||
dc.SetBrush(wxBrush(m_baseColour));
|
||||
dc.DrawRectangle(rect);
|
||||
|
||||
int btnState;
|
||||
if ( button_state == wxAUI_BUTTON_STATE_DISABLED )
|
||||
btnState = TTCS_PRESSED + 1;
|
||||
else if ( button_state == wxAUI_BUTTON_STATE_HOVER )
|
||||
btnState = TTCS_HOT;
|
||||
else if ( button_state == wxAUI_BUTTON_STATE_PRESSED )
|
||||
btnState = TTCS_PRESSED;
|
||||
else
|
||||
btnState = TTCS_NORMAL;
|
||||
|
||||
wxUxThemeHandle hTheme(wnd, themeId);
|
||||
|
||||
wxRect btnRect(rect);
|
||||
btnRect.width -= wnd->FromDIP(1);
|
||||
|
||||
RECT btnR;
|
||||
wxCopyRectToRECT(btnRect, btnR);
|
||||
te->DrawThemeBackground(hTheme, GetHdcOf(dc.GetTempHDC()), part, btnState, &btnR, NULL);
|
||||
|
||||
if ( out_rect )
|
||||
*out_rect = rect;
|
||||
}
|
||||
|
||||
int wxAuiMSWTabArt::ShowDropDown(wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
int active_idx)
|
||||
{
|
||||
return wxAuiGenericTabArt::ShowDropDown(wnd, pages, active_idx);
|
||||
}
|
||||
|
||||
int wxAuiMSWTabArt::GetBestTabCtrlSize(wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& requiredBmp_size)
|
||||
{
|
||||
return wxAuiGenericTabArt::GetBestTabCtrlSize(wnd, pages, requiredBmp_size);
|
||||
}
|
||||
|
||||
void wxAuiMSWTabArt::InitSizes(wxWindow* wnd, wxDC& dc)
|
||||
{
|
||||
wxUxThemeEngine* te = wxUxThemeEngine::Get();
|
||||
SIZE uxSize;
|
||||
|
||||
// Borrow close button from tooltip (best fit on various backgrounds)
|
||||
wxUxThemeHandle hTooltipTheme(wnd, L"Tooltip");
|
||||
|
||||
te->GetThemePartSize(hTooltipTheme, GetHdcOf(dc.GetTempHDC()),
|
||||
TTP_CLOSE, 0, NULL, TS_TRUE, &uxSize);
|
||||
m_closeBtnSize.Set(uxSize.cx, uxSize.cy);
|
||||
|
||||
wxUxThemeHandle hTabTheme(wnd, L"Tab");
|
||||
te->GetThemePartSize(hTabTheme, GetHdcOf(dc.GetTempHDC()),
|
||||
TABP_TABITEM, 0, NULL, TS_TRUE, &uxSize);
|
||||
m_tabSize.Set(uxSize.cx, uxSize.cy);
|
||||
}
|
||||
|
||||
bool wxAuiMSWTabArt::IsThemed() const
|
||||
{
|
||||
return
|
||||
m_themed &&
|
||||
!(m_flags & wxAUI_NB_BOTTOM); // Native theme does not support bottom tabs
|
||||
}
|
||||
|
||||
|
||||
#endif // wxUSE_AUI
|
||||
|
|
@ -981,34 +981,20 @@ wxDataViewCustomRendererBase::RenderText(const wxString& text,
|
|||
rectText.x += xoffset;
|
||||
rectText.width -= xoffset;
|
||||
|
||||
// check if we want to ellipsize the text if it doesn't fit
|
||||
wxString ellipsizedText;
|
||||
if ( GetEllipsizeMode() != wxELLIPSIZE_NONE )
|
||||
{
|
||||
ellipsizedText = wxControl::Ellipsize
|
||||
(
|
||||
text,
|
||||
*dc,
|
||||
GetEllipsizeMode(),
|
||||
rectText.width,
|
||||
wxELLIPSIZE_FLAGS_NONE
|
||||
);
|
||||
}
|
||||
|
||||
int flags = 0;
|
||||
if ( state & wxDATAVIEW_CELL_SELECTED )
|
||||
flags |= wxCONTROL_SELECTED | wxCONTROL_FOCUSED;
|
||||
if ( !GetOwner()->GetOwner()->IsEnabled() )
|
||||
flags |= wxCONTROL_DISABLED;
|
||||
|
||||
// get the alignment to use
|
||||
wxRendererNative::Get().DrawItemText(
|
||||
GetOwner()->GetOwner(),
|
||||
*dc,
|
||||
ellipsizedText.empty() ? text : ellipsizedText,
|
||||
text,
|
||||
rectText,
|
||||
GetEffectiveAlignment(),
|
||||
flags);
|
||||
flags,
|
||||
GetEllipsizeMode());
|
||||
}
|
||||
|
||||
void wxDataViewCustomRendererBase::SetEnabled(bool enabled)
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
// This file exists so that it can be compiled into an object so the linker
|
||||
// will have something to chew on so that builds don't break when a platform
|
||||
// lacks any objects in a particular multilib.
|
||||
|
|
@ -148,11 +148,26 @@ CPP_METHODDEF(void) wx_term_source ( j_decompress_ptr cinfo )
|
|||
|
||||
// JPEG error manager:
|
||||
|
||||
#ifdef __VISUALC__
|
||||
// We don't care about the size of this struct, but we still get an
|
||||
// annoying warning C4324 here:
|
||||
//
|
||||
// 'wx_error_mgr' : structure was padded due to __declspec(align())
|
||||
//
|
||||
// and suppressing it seems to be the only way to avoid it.
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4324)
|
||||
#endif
|
||||
|
||||
struct wx_error_mgr : public jpeg_error_mgr
|
||||
{
|
||||
jmp_buf setjmp_buffer; /* for return to caller */
|
||||
};
|
||||
|
||||
#ifdef __VISUALC__
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Here's the routine that will replace the standard error_exit method:
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -114,11 +114,6 @@ wxString wxStandardPathsBase::GetUserLocalDataDir() const
|
|||
return GetUserDataDir();
|
||||
}
|
||||
|
||||
wxString wxStandardPathsBase::GetDocumentsDir() const
|
||||
{
|
||||
return wxFileName::GetHomeDir();
|
||||
}
|
||||
|
||||
wxString wxStandardPathsBase::GetAppDocumentsDir() const
|
||||
{
|
||||
const wxString docsDir = GetDocumentsDir();
|
||||
|
|
@ -133,6 +128,11 @@ wxString wxStandardPathsBase::GetTempDir() const
|
|||
return wxFileName::GetTempDir();
|
||||
}
|
||||
|
||||
wxString wxStandardPathsBase::GetUserDir(Dir WXUNUSED(userDir)) const
|
||||
{
|
||||
return wxFileName::GetHomeDir();
|
||||
}
|
||||
|
||||
/* static */
|
||||
wxString
|
||||
wxStandardPathsBase::AppendPathComponent(const wxString& dir,
|
||||
|
|
|
|||
|
|
@ -63,7 +63,11 @@ void wxBusyInfo::Init(const wxBusyInfoFlags& flags)
|
|||
wxDefaultSize,
|
||||
wxALIGN_CENTRE);
|
||||
title->SetFont(title->GetFont().Scaled(2));
|
||||
#if wxUSE_MARKUP
|
||||
title->SetLabelMarkup(flags.m_title);
|
||||
#else
|
||||
title->SetLabelText(flags.m_title);
|
||||
#endif
|
||||
|
||||
sizer->Add(title, wxSizerFlags().DoubleBorder().Expand());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1801,44 +1801,6 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent )
|
|||
|
||||
#endif // wxUSE_DRAG_AND_DROP
|
||||
|
||||
|
||||
// Draw focus rect for individual cell. Unlike native focus rect, we render
|
||||
// this in foreground text color (typically white) to enhance contrast and
|
||||
// make it visible.
|
||||
static void DrawSelectedCellFocusRect(wxDC& dc, const wxRect& rect)
|
||||
{
|
||||
// (This code is based on wxRendererGeneric::DrawFocusRect and modified.)
|
||||
|
||||
// draw the pixels manually because the "dots" in wxPen with wxDOT style
|
||||
// may be short traits and not really dots
|
||||
//
|
||||
// note that to behave in the same manner as DrawRect(), we must exclude
|
||||
// the bottom and right borders from the rectangle
|
||||
wxCoord x1 = rect.GetLeft(),
|
||||
y1 = rect.GetTop(),
|
||||
x2 = rect.GetRight(),
|
||||
y2 = rect.GetBottom();
|
||||
|
||||
wxDCPenChanger pen(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT));
|
||||
|
||||
wxCoord z;
|
||||
for ( z = x1 + 1; z < x2; z += 2 )
|
||||
dc.DrawPoint(z, rect.GetTop());
|
||||
|
||||
wxCoord shift = z == x2 ? 0 : 1;
|
||||
for ( z = y1 + shift; z < y2; z += 2 )
|
||||
dc.DrawPoint(x2, z);
|
||||
|
||||
shift = z == y2 ? 0 : 1;
|
||||
for ( z = x2 - shift; z > x1; z -= 2 )
|
||||
dc.DrawPoint(z, y2);
|
||||
|
||||
shift = z == x1 ? 0 : 1;
|
||||
for ( z = y2 - shift; z > y1; z -= 2 )
|
||||
dc.DrawPoint(x1, z);
|
||||
}
|
||||
|
||||
|
||||
void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
||||
{
|
||||
wxDataViewModel *model = GetModel();
|
||||
|
|
@ -1994,29 +1956,18 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||
|
||||
if (selected || item == m_currentRow)
|
||||
{
|
||||
wxRect rect( x_start, GetLineStart( item ),
|
||||
wxRect rowRect( x_start, GetLineStart( item ),
|
||||
x_last - x_start, GetLineHeight( item ) );
|
||||
|
||||
// draw selection and whole-item focus:
|
||||
if ( selected )
|
||||
{
|
||||
int flags = wxCONTROL_SELECTED;
|
||||
if (m_hasFocus)
|
||||
flags |= wxCONTROL_FOCUSED;
|
||||
bool renderColumnFocus = false;
|
||||
|
||||
wxRendererNative::Get().DrawItemSelectionRect
|
||||
(
|
||||
this,
|
||||
dc,
|
||||
rect,
|
||||
flags
|
||||
);
|
||||
}
|
||||
int flags = wxCONTROL_SELECTED;
|
||||
if ( m_hasFocus )
|
||||
flags |= wxCONTROL_FOCUSED;
|
||||
|
||||
// draw keyboard focus rect if applicable
|
||||
if ( item == m_currentRow && m_hasFocus )
|
||||
{
|
||||
bool renderColumnFocus = false;
|
||||
|
||||
if ( m_useCellFocus && m_currentCol && m_currentColSetByKeyboard )
|
||||
{
|
||||
|
|
@ -2033,54 +1984,76 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||
|
||||
if ( renderColumnFocus )
|
||||
{
|
||||
wxRect colRect(rowRect);
|
||||
|
||||
for ( unsigned int i = col_start; i < col_last; i++ )
|
||||
{
|
||||
wxDataViewColumn *col = GetOwner()->GetColumnAt(i);
|
||||
if ( col->IsHidden() )
|
||||
continue;
|
||||
|
||||
rect.width = col->GetWidth();
|
||||
colRect.width = col->GetWidth();
|
||||
|
||||
if ( col == m_currentCol )
|
||||
{
|
||||
// make the rect more visible by adding a small
|
||||
// margin around it:
|
||||
rect.Deflate(1, 1);
|
||||
// Draw selection rect left of column
|
||||
{
|
||||
wxRect clipRect(rowRect);
|
||||
clipRect.width = colRect.x;
|
||||
|
||||
if ( selected )
|
||||
{
|
||||
// DrawFocusRect() uses XOR and is all but
|
||||
// invisible against dark-blue background. Use
|
||||
// the same color used for selected text.
|
||||
DrawSelectedCellFocusRect(dc, rect);
|
||||
wxDCClipper clip(dc, clipRect);
|
||||
wxRendererNative::Get().DrawItemSelectionRect
|
||||
(
|
||||
this,
|
||||
dc,
|
||||
rowRect,
|
||||
flags
|
||||
);
|
||||
}
|
||||
else
|
||||
|
||||
// Draw selection rect right of column
|
||||
{
|
||||
wxRendererNative::Get().DrawFocusRect
|
||||
(
|
||||
this,
|
||||
dc,
|
||||
rect,
|
||||
0
|
||||
);
|
||||
wxRect clipRect(rowRect);
|
||||
clipRect.x = colRect.x + colRect.width;
|
||||
clipRect.width = rowRect.width - clipRect.x;
|
||||
|
||||
wxDCClipper clip(dc, clipRect);
|
||||
wxRendererNative::Get().DrawItemSelectionRect
|
||||
(
|
||||
this,
|
||||
dc,
|
||||
rowRect,
|
||||
flags
|
||||
);
|
||||
}
|
||||
|
||||
// Draw column selection rect
|
||||
wxRendererNative::Get().DrawItemSelectionRect
|
||||
(
|
||||
this,
|
||||
dc,
|
||||
colRect,
|
||||
flags | wxCONTROL_CURRENT | wxCONTROL_CELL
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
rect.x += rect.width;
|
||||
colRect.x += colRect.width;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// render focus rectangle for the whole row
|
||||
wxRendererNative::Get().DrawFocusRect
|
||||
(
|
||||
this,
|
||||
dc,
|
||||
rect,
|
||||
selected ? (int)wxCONTROL_SELECTED : 0
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// draw selection and whole-item focus:
|
||||
if ( selected && !renderColumnFocus )
|
||||
{
|
||||
wxRendererNative::Get().DrawItemSelectionRect
|
||||
(
|
||||
this,
|
||||
dc,
|
||||
rowRect,
|
||||
flags | wxCONTROL_CURRENT
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,7 +150,8 @@ public:
|
|||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
int align = wxALIGN_LEFT | wxALIGN_TOP,
|
||||
int flags = 0) wxOVERRIDE;
|
||||
int flags = 0,
|
||||
wxEllipsizeMode ellipsizeMode = wxELLIPSIZE_END) wxOVERRIDE;
|
||||
|
||||
virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win) wxOVERRIDE;
|
||||
|
||||
|
|
@ -182,6 +183,46 @@ protected:
|
|||
static wxRendererGeneric* sm_rendererGeneric;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// misc. drawing functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Draw focus rect for individual cell. Unlike native focus rect, we render
|
||||
// this in foreground text color (typically white) to enhance contrast and
|
||||
// make it visible.
|
||||
static void DrawSelectedCellFocusRect(wxDC& dc, const wxRect& rect)
|
||||
{
|
||||
// (This code is based on wxRendererGeneric::DrawFocusRect and modified.)
|
||||
|
||||
// draw the pixels manually because the "dots" in wxPen with wxDOT style
|
||||
// may be short traits and not really dots
|
||||
//
|
||||
// note that to behave in the same manner as DrawRect(), we must exclude
|
||||
// the bottom and right borders from the rectangle
|
||||
wxCoord x1 = rect.GetLeft(),
|
||||
y1 = rect.GetTop(),
|
||||
x2 = rect.GetRight(),
|
||||
y2 = rect.GetBottom();
|
||||
|
||||
wxDCPenChanger pen(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT));
|
||||
|
||||
wxCoord z;
|
||||
for (z = x1 + 1; z < x2; z += 2)
|
||||
dc.DrawPoint(z, rect.GetTop());
|
||||
|
||||
wxCoord shift = z == x2 ? 0 : 1;
|
||||
for (z = y1 + shift; z < y2; z += 2)
|
||||
dc.DrawPoint(x2, z);
|
||||
|
||||
shift = z == y2 ? 0 : 1;
|
||||
for (z = x2 - shift; z > x1; z -= 2)
|
||||
dc.DrawPoint(z, y2);
|
||||
|
||||
shift = z == x1 ? 0 : 1;
|
||||
for (z = y2 - shift; z > y1; z -= 2)
|
||||
dc.DrawPoint(x1, z);
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// wxRendererGeneric implementation
|
||||
// ============================================================================
|
||||
|
|
@ -753,17 +794,27 @@ wxRendererGeneric::DrawItemSelectionRect(wxWindow * win,
|
|||
}
|
||||
|
||||
dc.SetBrush(brush);
|
||||
if ((flags & wxCONTROL_CURRENT) && (flags & wxCONTROL_FOCUSED)
|
||||
bool drawFocusRect = (flags & wxCONTROL_CURRENT) && (flags & wxCONTROL_FOCUSED)
|
||||
#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON
|
||||
&& IsControlActive( (ControlRef)win->GetHandle() )
|
||||
#endif
|
||||
)
|
||||
;
|
||||
|
||||
if ( drawFocusRect && !(flags & wxCONTROL_CELL) )
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
else
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
|
||||
dc.DrawRectangle( rect );
|
||||
|
||||
if ( drawFocusRect && (flags & wxCONTROL_CELL) )
|
||||
{
|
||||
wxRect focusRect(rect);
|
||||
focusRect.Deflate(1);
|
||||
|
||||
DrawSelectedCellFocusRect(dc, focusRect);
|
||||
}
|
||||
|
||||
// it's unused everywhere except in wxOSX/Carbon
|
||||
wxUnusedVar(win);
|
||||
}
|
||||
|
|
@ -883,12 +934,13 @@ void wxRendererGeneric::DrawGauge(wxWindow* win,
|
|||
}
|
||||
|
||||
void
|
||||
wxRendererGeneric::DrawItemText(wxWindow* win,
|
||||
wxRendererGeneric::DrawItemText(wxWindow* WXUNUSED(win),
|
||||
wxDC& dc,
|
||||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
int align,
|
||||
int flags)
|
||||
int flags,
|
||||
wxEllipsizeMode ellipsizeMode)
|
||||
{
|
||||
// Determine text color
|
||||
wxColour textColour;
|
||||
|
|
@ -907,17 +959,15 @@ wxRendererGeneric::DrawItemText(wxWindow* win,
|
|||
{
|
||||
textColour = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT);
|
||||
}
|
||||
else // enabled but not selected
|
||||
{
|
||||
textColour = win->GetForegroundColour();
|
||||
}
|
||||
|
||||
const wxString paintText = wxControl::Ellipsize(text, dc,
|
||||
wxELLIPSIZE_END,
|
||||
ellipsizeMode,
|
||||
rect.GetWidth());
|
||||
|
||||
// Draw text
|
||||
dc.SetTextForeground(textColour);
|
||||
// Draw text taking care not to change its colour if it had been set by the
|
||||
// caller for a normal item to allow having items in non-default colours.
|
||||
if ( textColour.IsOk() )
|
||||
dc.SetTextForeground(textColour);
|
||||
dc.SetTextBackground(wxTransparentColour);
|
||||
dc.DrawLabel(paintText, rect, align);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ wxTextDataObject::GetAllFormats(wxDataFormat *formats,
|
|||
|
||||
bool wxFileDataObject::GetDataHere(void *buf) const
|
||||
{
|
||||
char* out = reinterpret_cast<char*>(buf);
|
||||
char* out = static_cast<char*>(buf);
|
||||
|
||||
for (size_t i = 0; i < m_filenames.GetCount(); i++)
|
||||
{
|
||||
|
|
@ -243,10 +243,11 @@ bool wxFileDataObject::GetDataHere(void *buf) const
|
|||
if (uri)
|
||||
{
|
||||
size_t const len = strlen(uri);
|
||||
strcpy(out, uri);
|
||||
memcpy(out, uri, len);
|
||||
out += len;
|
||||
*(out++) = '\r';
|
||||
*(out++) = '\n';
|
||||
g_free(uri);
|
||||
}
|
||||
}
|
||||
*out = 0;
|
||||
|
|
|
|||
|
|
@ -4458,9 +4458,6 @@ void wxWindowGTK::GTKApplyWidgetStyle(bool forceStyle)
|
|||
g_object_unref(style);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Style change may affect GTK+'s size calculation:
|
||||
InvalidateBestSize();
|
||||
}
|
||||
|
||||
void wxWindowGTK::DoApplyWidgetStyle(GtkRcStyle *style)
|
||||
|
|
@ -4768,6 +4765,7 @@ bool wxWindowGTK::SetFont( const wxFont &font )
|
|||
// apply style change (forceStyle=true so that new style is applied
|
||||
// even if the font changed from valid to wxNullFont):
|
||||
GTKApplyWidgetStyle(true);
|
||||
InvalidateBestSize();
|
||||
}
|
||||
|
||||
#ifdef __WXGTK3__
|
||||
|
|
|
|||
|
|
@ -377,10 +377,7 @@ bool wxConsoleStderr::DoInit()
|
|||
if ( !m_dllKernel32.Load(wxT("kernel32.dll")) )
|
||||
return false;
|
||||
|
||||
typedef BOOL (WINAPI *AttachConsole_t)(DWORD dwProcessId);
|
||||
AttachConsole_t wxDL_INIT_FUNC(pfn, AttachConsole, m_dllKernel32);
|
||||
|
||||
if ( !pfnAttachConsole || !pfnAttachConsole(ATTACH_PARENT_PROCESS) )
|
||||
if ( !::AttachConsole(ATTACH_PARENT_PROCESS) )
|
||||
return false;
|
||||
|
||||
// console attached, set m_hStderr now to ensure that we free it in the
|
||||
|
|
@ -892,37 +889,6 @@ int wxApp::GetComCtl32Version()
|
|||
return s_verComCtl32;
|
||||
}
|
||||
|
||||
/* static */
|
||||
int wxApp::GetShell32Version()
|
||||
{
|
||||
static int s_verShell32 = -1;
|
||||
if ( s_verShell32 == -1 )
|
||||
{
|
||||
// we're prepared to handle the errors
|
||||
wxLogNull noLog;
|
||||
|
||||
wxDynamicLibrary dllShell32(wxT("shell32.dll"), wxDL_VERBATIM);
|
||||
if ( dllShell32.IsLoaded() )
|
||||
{
|
||||
s_verShell32 = CallDllGetVersion(dllShell32);
|
||||
|
||||
if ( !s_verShell32 )
|
||||
{
|
||||
// there doesn't seem to be any way to distinguish between 4.00
|
||||
// and 4.70 (starting from 4.71 we have DllGetVersion()) so
|
||||
// just assume it is 4.0
|
||||
s_verShell32 = 400;
|
||||
}
|
||||
}
|
||||
else // failed load the DLL?
|
||||
{
|
||||
s_verShell32 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return s_verShell32;
|
||||
}
|
||||
|
||||
#else // !wxUSE_DYNLIB_CLASS
|
||||
|
||||
/* static */
|
||||
|
|
@ -931,12 +897,6 @@ int wxApp::GetComCtl32Version()
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* static */
|
||||
int wxApp::GetShell32Version()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif // wxUSE_DYNLIB_CLASS/!wxUSE_DYNLIB_CLASS
|
||||
|
||||
#if wxUSE_EXCEPTIONS
|
||||
|
|
|
|||
|
|
@ -54,13 +54,6 @@ bool wxMSWDateControls::CheckInitialization()
|
|||
// it's enough to give the error only once
|
||||
s_initResult = false;
|
||||
|
||||
if ( wxApp::GetComCtl32Version() < 470 )
|
||||
{
|
||||
wxLogError(_("This system doesn't support date controls, please upgrade your version of comctl32.dll"));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
INITCOMMONCONTROLSEX icex;
|
||||
icex.dwSize = sizeof(icex);
|
||||
|
|
|
|||
|
|
@ -70,9 +70,7 @@ WXDWORD wxDatePickerCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
|
|||
{
|
||||
WXDWORD styleMSW = wxDatePickerCtrlBase::MSWGetStyle(style, exstyle);
|
||||
|
||||
// although MSDN doesn't mention it, DTS_UPDOWN doesn't work with
|
||||
// comctl32.dll 4.72
|
||||
if ( wxApp::GetComCtl32Version() > 472 && (style & wxDP_SPIN) )
|
||||
if ( style & wxDP_SPIN )
|
||||
styleMSW |= DTS_UPDOWN;
|
||||
//else: drop down by default
|
||||
|
||||
|
|
|
|||
|
|
@ -267,19 +267,14 @@ int wxDirDialog::ShowSHBrowseForFolder(WXHWND owner)
|
|||
|
||||
static const int verComCtl32 = wxApp::GetComCtl32Version();
|
||||
|
||||
// we always add the edit box (it doesn't hurt anybody, does it?) if it is
|
||||
// supported by the system
|
||||
if ( verComCtl32 >= 471 )
|
||||
{
|
||||
bi.ulFlags |= BIF_EDITBOX;
|
||||
}
|
||||
// we always add the edit box (it doesn't hurt anybody, does it?)
|
||||
bi.ulFlags |= BIF_EDITBOX;
|
||||
|
||||
// to have the "New Folder" button we must use the "new" dialog style which
|
||||
// is also the only way to have a resizable dialog
|
||||
//
|
||||
// "new" style is only available in the version 5.0+ of comctl32.dll
|
||||
const bool needNewDir = !HasFlag(wxDD_DIR_MUST_EXIST);
|
||||
if ( (needNewDir || HasFlag(wxRESIZE_BORDER)) && (verComCtl32 >= 500) )
|
||||
if ( needNewDir || HasFlag(wxRESIZE_BORDER) )
|
||||
{
|
||||
if (needNewDir)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -70,32 +70,6 @@
|
|||
|
||||
static const wxChar displayDllName[] = wxT("user32.dll");
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// typedefs for dynamically loaded Windows functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
typedef LONG (WINAPI *ChangeDisplaySettingsEx_t)(LPCTSTR lpszDeviceName,
|
||||
LPDEVMODE lpDevMode,
|
||||
HWND hwnd,
|
||||
DWORD dwFlags,
|
||||
LPVOID lParam);
|
||||
|
||||
typedef BOOL (WINAPI *EnumDisplayMonitors_t)(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
|
||||
typedef HMONITOR (WINAPI *MonitorFromPoint_t)(POINT,DWORD);
|
||||
typedef HMONITOR (WINAPI *MonitorFromWindow_t)(HWND,DWORD);
|
||||
typedef BOOL (WINAPI *GetMonitorInfo_t)(HMONITOR,LPMONITORINFO);
|
||||
|
||||
// emulation of ChangeDisplaySettingsEx() for Win95
|
||||
LONG WINAPI ChangeDisplaySettingsExForWin95(LPCTSTR WXUNUSED(lpszDeviceName),
|
||||
LPDEVMODE lpDevMode,
|
||||
HWND WXUNUSED(hwnd),
|
||||
DWORD dwFlags,
|
||||
LPVOID WXUNUSED(lParam))
|
||||
{
|
||||
return ::ChangeDisplaySettings(lpDevMode, dwFlags);
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDisplayMSW declaration
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
@ -148,12 +122,6 @@ private:
|
|||
|
||||
WX_DEFINE_ARRAY(HMONITOR, wxMonitorHandleArray);
|
||||
|
||||
// functions dynamically bound by wxDisplayFactoryMSW ctor.
|
||||
static MonitorFromPoint_t gs_MonitorFromPoint = NULL;
|
||||
static MonitorFromWindow_t gs_MonitorFromWindow = NULL;
|
||||
static GetMonitorInfo_t gs_GetMonitorInfo = NULL;
|
||||
static EnumDisplayMonitors_t gs_EnumDisplayMonitors = NULL;
|
||||
|
||||
class wxDisplayFactoryMSW : public wxDisplayFactory
|
||||
{
|
||||
public:
|
||||
|
|
@ -236,7 +204,7 @@ wxDisplayFactoryMSW* wxDisplayFactoryMSW::ms_factory = NULL;
|
|||
|
||||
bool wxDisplayMSW::GetMonInfo(MONITORINFOEX& monInfo) const
|
||||
{
|
||||
if ( !gs_GetMonitorInfo(m_hmon, &monInfo) )
|
||||
if ( !::GetMonitorInfo(m_hmon, &monInfo) )
|
||||
{
|
||||
wxLogLastError(wxT("GetMonitorInfo"));
|
||||
return false;
|
||||
|
|
@ -390,30 +358,8 @@ bool wxDisplayMSW::ChangeMode(const wxVideoMode& mode)
|
|||
}
|
||||
|
||||
|
||||
// get pointer to the function dynamically
|
||||
//
|
||||
// we're only called from the main thread, so it's ok to use static
|
||||
// variable
|
||||
static ChangeDisplaySettingsEx_t pfnChangeDisplaySettingsEx = NULL;
|
||||
if ( !pfnChangeDisplaySettingsEx )
|
||||
{
|
||||
wxDynamicLibrary dllDisplay(displayDllName, wxDL_VERBATIM | wxDL_QUIET);
|
||||
if ( dllDisplay.IsLoaded() )
|
||||
{
|
||||
wxDL_INIT_FUNC_AW(pfn, ChangeDisplaySettingsEx, dllDisplay);
|
||||
}
|
||||
//else: huh, no this DLL must always be present, what's going on??
|
||||
|
||||
if ( !pfnChangeDisplaySettingsEx )
|
||||
{
|
||||
// we must be under Win95 and so there is no multiple monitors
|
||||
// support anyhow
|
||||
pfnChangeDisplaySettingsEx = ChangeDisplaySettingsExForWin95;
|
||||
}
|
||||
}
|
||||
|
||||
// do change the mode
|
||||
switch ( pfnChangeDisplaySettingsEx
|
||||
switch ( ::ChangeDisplaySettingsEx
|
||||
(
|
||||
GetName().t_str(), // display name
|
||||
pDevMode, // dev mode or NULL to reset
|
||||
|
|
@ -478,25 +424,6 @@ wxDisplayFactoryMSW::wxDisplayFactoryMSW()
|
|||
m_hiddenHwnd = NULL;
|
||||
m_hiddenClass = NULL;
|
||||
|
||||
if ( gs_MonitorFromPoint==NULL || gs_MonitorFromWindow==NULL
|
||||
|| gs_GetMonitorInfo==NULL || gs_EnumDisplayMonitors==NULL )
|
||||
{
|
||||
// First initialization, or last initialization failed.
|
||||
wxDynamicLibrary dllDisplay(displayDllName, wxDL_VERBATIM | wxDL_QUIET);
|
||||
|
||||
wxDL_INIT_FUNC(gs_, MonitorFromPoint, dllDisplay);
|
||||
wxDL_INIT_FUNC(gs_, MonitorFromWindow, dllDisplay);
|
||||
wxDL_INIT_FUNC_AW(gs_, GetMonitorInfo, dllDisplay);
|
||||
wxDL_INIT_FUNC(gs_, EnumDisplayMonitors, dllDisplay);
|
||||
|
||||
// we can safely let dllDisplay go out of scope, the DLL itself will
|
||||
// still remain loaded as all programs link to it statically anyhow
|
||||
}
|
||||
|
||||
if ( gs_MonitorFromPoint==NULL || gs_MonitorFromWindow==NULL
|
||||
|| gs_GetMonitorInfo==NULL || gs_EnumDisplayMonitors==NULL )
|
||||
return;
|
||||
|
||||
DoRefreshMonitors();
|
||||
|
||||
// Also create a hidden window to listen for WM_SETTINGCHANGE that we
|
||||
|
|
@ -535,7 +462,7 @@ void wxDisplayFactoryMSW::DoRefreshMonitors()
|
|||
{
|
||||
m_displays.Clear();
|
||||
|
||||
if ( !gs_EnumDisplayMonitors(NULL, NULL, MultimonEnumProc, (LPARAM)this) )
|
||||
if ( !::EnumDisplayMonitors(NULL, NULL, MultimonEnumProc, (LPARAM)this) )
|
||||
{
|
||||
wxLogLastError(wxT("EnumDisplayMonitors"));
|
||||
}
|
||||
|
|
@ -586,14 +513,14 @@ int wxDisplayFactoryMSW::GetFromPoint(const wxPoint& pt)
|
|||
pt2.x = pt.x;
|
||||
pt2.y = pt.y;
|
||||
|
||||
return FindDisplayFromHMONITOR(gs_MonitorFromPoint(pt2,
|
||||
return FindDisplayFromHMONITOR(::MonitorFromPoint(pt2,
|
||||
MONITOR_DEFAULTTONULL));
|
||||
}
|
||||
|
||||
int wxDisplayFactoryMSW::GetFromWindow(const wxWindow *window)
|
||||
{
|
||||
#ifdef __WXMSW__
|
||||
return FindDisplayFromHMONITOR(gs_MonitorFromWindow(GetHwndOf(window),
|
||||
return FindDisplayFromHMONITOR(::MonitorFromWindow(GetHwndOf(window),
|
||||
MONITOR_DEFAULTTONULL));
|
||||
#else
|
||||
const wxSize halfsize = window->GetSize() / 2;
|
||||
|
|
|
|||
|
|
@ -32,40 +32,6 @@
|
|||
// private classes
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// wrap some functions from version.dll: load them dynamically and provide a
|
||||
// clean interface
|
||||
class wxVersionDLL
|
||||
{
|
||||
public:
|
||||
// load version.dll and bind to its functions
|
||||
wxVersionDLL();
|
||||
|
||||
// return the file version as string, e.g. "x.y.z.w"
|
||||
wxString GetFileVersion(const wxString& filename) const;
|
||||
|
||||
private:
|
||||
typedef DWORD (APIENTRY *GetFileVersionInfoSize_t)(PTSTR, PDWORD);
|
||||
typedef BOOL (APIENTRY *GetFileVersionInfo_t)(PTSTR, DWORD, DWORD, PVOID);
|
||||
typedef BOOL (APIENTRY *VerQueryValue_t)(const PVOID, PTSTR, PVOID *, PUINT);
|
||||
|
||||
#define DO_FOR_ALL_VER_FUNCS(what) \
|
||||
what(GetFileVersionInfoSize); \
|
||||
what(GetFileVersionInfo); \
|
||||
what(VerQueryValue)
|
||||
|
||||
#define DECLARE_VER_FUNCTION(func) func ## _t m_pfn ## func
|
||||
|
||||
DO_FOR_ALL_VER_FUNCS(DECLARE_VER_FUNCTION);
|
||||
|
||||
#undef DECLARE_VER_FUNCTION
|
||||
|
||||
|
||||
wxDynamicLibrary m_dll;
|
||||
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxVersionDLL);
|
||||
};
|
||||
|
||||
// class used to create wxDynamicLibraryDetails objects
|
||||
class WXDLLIMPEXP_BASE wxDynamicLibraryDetailsCreator
|
||||
{
|
||||
|
|
@ -74,87 +40,44 @@ public:
|
|||
struct EnumModulesProcParams
|
||||
{
|
||||
wxDynamicLibraryDetailsArray *dlls;
|
||||
wxVersionDLL *verDLL;
|
||||
};
|
||||
|
||||
static BOOL CALLBACK
|
||||
EnumModulesProc(const wxChar* name, DWORD64 base, ULONG size, PVOID data);
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
// wxVersionDLL implementation
|
||||
// ============================================================================
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// loading
|
||||
// DLL version operations
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxVersionDLL::wxVersionDLL()
|
||||
{
|
||||
// don't give errors if DLL can't be loaded or used, we're prepared to
|
||||
// handle it
|
||||
wxLogNull noLog;
|
||||
|
||||
if ( m_dll.Load(wxT("version.dll"), wxDL_VERBATIM) )
|
||||
{
|
||||
// the functions we load have either 'A' or 'W' suffix depending on
|
||||
// whether we're in ANSI or Unicode build
|
||||
#ifdef UNICODE
|
||||
#define SUFFIX L"W"
|
||||
#else // ANSI
|
||||
#define SUFFIX "A"
|
||||
#endif // UNICODE/ANSI
|
||||
|
||||
#define LOAD_VER_FUNCTION(name) \
|
||||
m_pfn ## name = (name ## _t)m_dll.GetSymbol(wxT(#name SUFFIX)); \
|
||||
if ( !m_pfn ## name ) \
|
||||
{ \
|
||||
m_dll.Unload(); \
|
||||
return; \
|
||||
}
|
||||
|
||||
DO_FOR_ALL_VER_FUNCS(LOAD_VER_FUNCTION);
|
||||
|
||||
#undef LOAD_VER_FUNCTION
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxVersionDLL operations
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxString wxVersionDLL::GetFileVersion(const wxString& filename) const
|
||||
static wxString GetFileVersion(const wxString& filename)
|
||||
{
|
||||
wxString ver;
|
||||
if ( m_dll.IsLoaded() )
|
||||
{
|
||||
wxChar *pc = const_cast<wxChar *>((const wxChar*) filename.t_str());
|
||||
wxChar *pc = const_cast<wxChar *>((const wxChar*) filename.t_str());
|
||||
|
||||
DWORD dummy;
|
||||
DWORD sizeVerInfo = m_pfnGetFileVersionInfoSize(pc, &dummy);
|
||||
if ( sizeVerInfo )
|
||||
DWORD dummy;
|
||||
DWORD sizeVerInfo = ::GetFileVersionInfoSize(pc, &dummy);
|
||||
if ( sizeVerInfo )
|
||||
{
|
||||
wxCharBuffer buf(sizeVerInfo);
|
||||
if ( ::GetFileVersionInfo(pc, 0, sizeVerInfo, buf.data()) )
|
||||
{
|
||||
wxCharBuffer buf(sizeVerInfo);
|
||||
if ( m_pfnGetFileVersionInfo(pc, 0, sizeVerInfo, buf.data()) )
|
||||
void *pVer;
|
||||
UINT sizeInfo;
|
||||
if ( ::VerQueryValue(buf.data(),
|
||||
const_cast<wxChar *>(wxT("\\")),
|
||||
&pVer,
|
||||
&sizeInfo) )
|
||||
{
|
||||
void *pVer;
|
||||
UINT sizeInfo;
|
||||
if ( m_pfnVerQueryValue(buf.data(),
|
||||
const_cast<wxChar *>(wxT("\\")),
|
||||
&pVer,
|
||||
&sizeInfo) )
|
||||
{
|
||||
VS_FIXEDFILEINFO *info = (VS_FIXEDFILEINFO *)pVer;
|
||||
ver.Printf(wxT("%d.%d.%d.%d"),
|
||||
HIWORD(info->dwFileVersionMS),
|
||||
LOWORD(info->dwFileVersionMS),
|
||||
HIWORD(info->dwFileVersionLS),
|
||||
LOWORD(info->dwFileVersionLS));
|
||||
}
|
||||
VS_FIXEDFILEINFO *info = (VS_FIXEDFILEINFO *)pVer;
|
||||
ver.Printf(wxT("%d.%d.%d.%d"),
|
||||
HIWORD(info->dwFileVersionMS),
|
||||
LOWORD(info->dwFileVersionMS),
|
||||
HIWORD(info->dwFileVersionLS),
|
||||
LOWORD(info->dwFileVersionLS));
|
||||
}
|
||||
}
|
||||
}
|
||||
//else: we failed to load DLL, can't retrieve version info
|
||||
|
||||
return ver;
|
||||
}
|
||||
|
|
@ -191,7 +114,7 @@ wxDynamicLibraryDetailsCreator::EnumModulesProc(const wxChar* name,
|
|||
if ( !fullname.empty() )
|
||||
{
|
||||
details->m_path = fullname;
|
||||
details->m_version = params->verDLL->GetFileVersion(fullname);
|
||||
details->m_version = GetFileVersion(fullname);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -258,12 +181,8 @@ wxDynamicLibraryDetailsArray wxDynamicLibrary::ListLoaded()
|
|||
#if wxUSE_DBGHELP
|
||||
if ( wxDbgHelpDLL::Init() )
|
||||
{
|
||||
// prepare to use functions for version info extraction
|
||||
wxVersionDLL verDLL;
|
||||
|
||||
wxDynamicLibraryDetailsCreator::EnumModulesProcParams params;
|
||||
params.dlls = &dlls;
|
||||
params.verDLL = &verDLL;
|
||||
|
||||
if ( !wxDbgHelpDLL::CallEnumerateLoadedModules
|
||||
(
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@
|
|||
|
||||
#include "wx/graphics.h"
|
||||
#include "wx/dc.h"
|
||||
#include "wx/dcclient.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#include "wx/dynlib.h"
|
||||
#include "wx/image.h"
|
||||
#include "wx/module.h"
|
||||
|
|
@ -53,6 +55,7 @@
|
|||
#include "wx/private/graphics.h"
|
||||
#include "wx/stack.h"
|
||||
#include "wx/sharedptr.h"
|
||||
#include "wx/window.h"
|
||||
|
||||
// This must be the last header included to only affect the DEFINE_GUID()
|
||||
// occurrences below but not any GUIDs declared in the standard files included
|
||||
|
|
@ -311,10 +314,10 @@ class wxD2DResourceManager;
|
|||
class wxD2DManagedObject
|
||||
{
|
||||
public:
|
||||
virtual void Bind(wxD2DResourceManager* manager) = NULL;
|
||||
virtual void UnBind() = NULL;
|
||||
virtual bool IsBound() = NULL;
|
||||
virtual wxD2DResourceManager* GetManager() = NULL;
|
||||
virtual void Bind(wxD2DResourceManager* manager) = 0;
|
||||
virtual void UnBind() = 0;
|
||||
virtual bool IsBound() = 0;
|
||||
virtual wxD2DResourceManager* GetManager() = 0;
|
||||
|
||||
virtual ~wxD2DManagedObject() {};
|
||||
};
|
||||
|
|
@ -1352,6 +1355,8 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
virtual ~wxHatchBitmapSource() {}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE GetSize(__RPC__out UINT *width, __RPC__out UINT *height) wxOVERRIDE
|
||||
{
|
||||
if (width != NULL) *width = 8;
|
||||
|
|
@ -1372,10 +1377,9 @@ public:
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CopyPalette(__RPC__in_opt IWICPalette *palette) wxOVERRIDE
|
||||
HRESULT STDMETHODCALLTYPE CopyPalette(__RPC__in_opt IWICPalette* WXUNUSED(palette)) wxOVERRIDE
|
||||
{
|
||||
palette = NULL;
|
||||
return S_OK;
|
||||
return WINCODEC_ERR_PALETTEUNAVAILABLE;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CopyPixels(
|
||||
|
|
@ -1449,7 +1453,7 @@ public:
|
|||
|
||||
ULONG STDMETHODCALLTYPE Release(void) wxOVERRIDE
|
||||
{
|
||||
wxCHECK2_MSG(m_refCount > 0, 0, "Unbalanced number of calls to Release");
|
||||
wxCHECK_MSG(m_refCount > 0, 0, "Unbalanced number of calls to Release");
|
||||
|
||||
ULONG refCount = InterlockedDecrement(&m_refCount);
|
||||
if (m_refCount == 0)
|
||||
|
|
@ -2794,7 +2798,7 @@ private:
|
|||
// A ID2D1DrawingStateBlock represents the drawing state of a render target:
|
||||
// the anti aliasing mode, transform, tags, and text-rendering options.
|
||||
// The context owns these pointers and is responsible for releasing them.
|
||||
wxStack<wxCOMPtr<ID2D1DrawingStateBlock>> m_stateStack;
|
||||
wxStack<wxCOMPtr<ID2D1DrawingStateBlock> > m_stateStack;
|
||||
|
||||
ClipMode m_clipMode;
|
||||
|
||||
|
|
@ -2803,7 +2807,7 @@ private:
|
|||
// A direct2d layer is a device-dependent resource.
|
||||
wxCOMPtr<ID2D1Layer> m_clipLayer;
|
||||
|
||||
wxStack<wxCOMPtr<ID2D1Layer>> m_layers;
|
||||
wxStack<wxCOMPtr<ID2D1Layer> > m_layers;
|
||||
|
||||
ID2D1RenderTarget* m_cachedRenderTarget;
|
||||
|
||||
|
|
@ -3698,6 +3702,12 @@ void wxD2DRenderer::GetVersion(int* major, int* minor, int* micro) const
|
|||
case wxDirect2D::wxD2D_VERSION_1_1:
|
||||
*minor = 1;
|
||||
break;
|
||||
case wxDirect2D::wxD2D_VERSION_NONE:
|
||||
// This is not supposed to happen, but we handle this value in
|
||||
// the switch to ensure that we'll get warnings if any new
|
||||
// values, not handled here, are added to the enum later.
|
||||
*minor = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,18 @@
|
|||
#define NMLVFINDITEM NM_FINDITEM
|
||||
#endif
|
||||
|
||||
// MinGW headers lack casts to WPARAM inside several ListView_XXX() macros, so
|
||||
// add them to suppress the warnings about implicit conversions/truncation.
|
||||
// However do not add them for MSVC as it has casts not only to WPARAM but
|
||||
// actually to int first, and then to WPARAM, and casting to WPARAM here would
|
||||
// result in warnings when casting 64 bit WPARAM to 32 bit int inside the
|
||||
// macros in Win64 builds.
|
||||
#ifdef __MINGW32__
|
||||
#define NO_ITEM (static_cast<WPARAM>(-1))
|
||||
#else
|
||||
#define NO_ITEM (-1)
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// private functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
@ -277,26 +289,23 @@ bool wxListCtrl::Create(wxWindow *parent,
|
|||
|
||||
void wxListCtrl::MSWSetExListStyles()
|
||||
{
|
||||
// for comctl32.dll v 4.70+ we want to have some non default extended
|
||||
// we want to have some non default extended
|
||||
// styles because it's prettier (and also because wxGTK does it like this)
|
||||
if ( wxApp::GetComCtl32Version() >= 470 )
|
||||
{
|
||||
::SendMessage
|
||||
(
|
||||
GetHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
|
||||
// LVS_EX_LABELTIP shouldn't be used under Windows CE where it's
|
||||
// not defined in the SDK headers
|
||||
::SendMessage
|
||||
(
|
||||
GetHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
|
||||
// LVS_EX_LABELTIP shouldn't be used under Windows CE where it's
|
||||
// not defined in the SDK headers
|
||||
#ifdef LVS_EX_LABELTIP
|
||||
LVS_EX_LABELTIP |
|
||||
LVS_EX_LABELTIP |
|
||||
#endif
|
||||
LVS_EX_FULLROWSELECT |
|
||||
LVS_EX_SUBITEMIMAGES |
|
||||
// normally this should be governed by a style as it's probably not
|
||||
// always appropriate, but we don't have any free styles left and
|
||||
// it seems better to enable it by default than disable
|
||||
LVS_EX_HEADERDRAGDROP
|
||||
);
|
||||
}
|
||||
LVS_EX_FULLROWSELECT |
|
||||
LVS_EX_SUBITEMIMAGES |
|
||||
// normally this should be governed by a style as it's probably not
|
||||
// always appropriate, but we don't have any free styles left and
|
||||
// it seems better to enable it by default than disable
|
||||
LVS_EX_HEADERDRAGDROP
|
||||
);
|
||||
}
|
||||
|
||||
WXDWORD wxListCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
|
||||
|
|
@ -359,13 +368,6 @@ WXDWORD wxListCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
|
|||
#if !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
|
||||
if ( style & wxLC_VIRTUAL )
|
||||
{
|
||||
int ver = wxApp::GetComCtl32Version();
|
||||
if ( ver < 470 )
|
||||
{
|
||||
wxLogWarning(_("Please install a newer version of comctl32.dll\n(at least version 4.70 is required but you have %d.%02d)\nor this program won't operate correctly."),
|
||||
ver / 100, ver % 100);
|
||||
}
|
||||
|
||||
wstyle |= LVS_OWNERDATA;
|
||||
}
|
||||
#endif // ancient cygwin
|
||||
|
|
@ -1337,10 +1339,7 @@ void wxListCtrl::AssignImageList(wxImageList *imageList, int which)
|
|||
|
||||
wxSize wxListCtrl::MSWGetBestViewRect(int x, int y) const
|
||||
{
|
||||
// The cast is necessary to suppress a MinGW warning due to a missing cast
|
||||
// to WPARAM in the definition of ListView_ApproximateViewRect() in its
|
||||
// own headers (this was the case up to at least MinGW 4.8).
|
||||
const DWORD rc = ListView_ApproximateViewRect(GetHwnd(), x, y, (WPARAM)-1);
|
||||
const DWORD rc = ListView_ApproximateViewRect(GetHwnd(), x, y, NO_ITEM);
|
||||
|
||||
wxSize size(LOWORD(rc), HIWORD(rc));
|
||||
|
||||
|
|
@ -1622,7 +1621,7 @@ wxListCtrl::HitTest(const wxPoint& point, int& flags, long *ptrSubItem) const
|
|||
|
||||
long item;
|
||||
#ifdef LVM_SUBITEMHITTEST
|
||||
if ( ptrSubItem && wxApp::GetComCtl32Version() >= 470 )
|
||||
if ( ptrSubItem )
|
||||
{
|
||||
item = ListView_SubItemHitTest(GetHwnd(), &hitTestInfo);
|
||||
*ptrSubItem = hitTestInfo.iSubItem;
|
||||
|
|
@ -2738,12 +2737,8 @@ static void HandleItemPaint(LPNMLVCUSTOMDRAW pLVCD, HFONT hfont)
|
|||
}
|
||||
|
||||
// same thing for CDIS_FOCUS (except simpler as there is only one of them)
|
||||
//
|
||||
// NB: cast is needed to work around the bug in mingw32 headers which don't
|
||||
// have it inside ListView_GetNextItem() itself (unlike SDK ones)
|
||||
if ( ::GetFocus() == hwndList &&
|
||||
ListView_GetNextItem(
|
||||
hwndList, static_cast<WPARAM>(-1), LVNI_FOCUSED) == item )
|
||||
ListView_GetNextItem(hwndList, NO_ITEM, LVNI_FOCUSED) == item )
|
||||
{
|
||||
nmcd.uItemState |= CDIS_FOCUS;
|
||||
}
|
||||
|
|
@ -3280,40 +3275,36 @@ static void wxConvertToMSWListCol(HWND hwndList,
|
|||
#ifdef NM_CUSTOMDRAW // _WIN32_IE >= 0x0300
|
||||
if ( item.m_mask & wxLIST_MASK_IMAGE )
|
||||
{
|
||||
if ( wxApp::GetComCtl32Version() >= 470 )
|
||||
lvCol.mask |= LVCF_IMAGE;
|
||||
|
||||
// we use LVCFMT_BITMAP_ON_RIGHT because the images on the right
|
||||
// seem to be generally nicer than on the left and the generic
|
||||
// version only draws them on the right (we don't have a flag to
|
||||
// specify the image location anyhow)
|
||||
//
|
||||
// we don't use LVCFMT_COL_HAS_IMAGES because it doesn't seem to
|
||||
// make any difference in my tests -- but maybe we should?
|
||||
if ( item.m_image != -1 )
|
||||
{
|
||||
lvCol.mask |= LVCF_IMAGE;
|
||||
|
||||
// we use LVCFMT_BITMAP_ON_RIGHT because the images on the right
|
||||
// seem to be generally nicer than on the left and the generic
|
||||
// version only draws them on the right (we don't have a flag to
|
||||
// specify the image location anyhow)
|
||||
//
|
||||
// we don't use LVCFMT_COL_HAS_IMAGES because it doesn't seem to
|
||||
// make any difference in my tests -- but maybe we should?
|
||||
if ( item.m_image != -1 )
|
||||
// as we're going to overwrite the format field, get its
|
||||
// current value first -- unless we want to overwrite it anyhow
|
||||
if ( !(lvCol.mask & LVCF_FMT) )
|
||||
{
|
||||
// as we're going to overwrite the format field, get its
|
||||
// current value first -- unless we want to overwrite it anyhow
|
||||
if ( !(lvCol.mask & LVCF_FMT) )
|
||||
LV_COLUMN lvColOld;
|
||||
wxZeroMemory(lvColOld);
|
||||
lvColOld.mask = LVCF_FMT;
|
||||
if ( ListView_GetColumn(hwndList, col, &lvColOld) )
|
||||
{
|
||||
LV_COLUMN lvColOld;
|
||||
wxZeroMemory(lvColOld);
|
||||
lvColOld.mask = LVCF_FMT;
|
||||
if ( ListView_GetColumn(hwndList, col, &lvColOld) )
|
||||
{
|
||||
lvCol.fmt = lvColOld.fmt;
|
||||
}
|
||||
|
||||
lvCol.mask |= LVCF_FMT;
|
||||
lvCol.fmt = lvColOld.fmt;
|
||||
}
|
||||
|
||||
lvCol.fmt |= LVCFMT_BITMAP_ON_RIGHT | LVCFMT_IMAGE;
|
||||
lvCol.mask |= LVCF_FMT;
|
||||
}
|
||||
|
||||
lvCol.iImage = item.m_image;
|
||||
lvCol.fmt |= LVCFMT_BITMAP_ON_RIGHT | LVCFMT_IMAGE;
|
||||
}
|
||||
//else: it doesn't support item images anyhow
|
||||
|
||||
lvCol.iImage = item.m_image;
|
||||
}
|
||||
#endif // _WIN32_IE >= 0x0300
|
||||
}
|
||||
|
|
|
|||
|
|
@ -580,21 +580,11 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
|
|||
// boxes are used together with bitmaps and this is not the
|
||||
// case in wx API
|
||||
WinStruct<MENUINFO> mi;
|
||||
|
||||
// don't call SetMenuInfo() directly, this would prevent
|
||||
// the app from starting up under Windows 95/NT 4
|
||||
typedef BOOL (WINAPI *SetMenuInfo_t)(HMENU, MENUINFO *);
|
||||
|
||||
wxDynamicLibrary dllUser(wxT("user32"));
|
||||
wxDYNLIB_FUNCTION(SetMenuInfo_t, SetMenuInfo, dllUser);
|
||||
if ( pfnSetMenuInfo )
|
||||
mi.fMask = MIM_STYLE;
|
||||
mi.dwStyle = MNS_CHECKORBMP;
|
||||
if ( !::SetMenuInfo(GetHmenu(), &mi) )
|
||||
{
|
||||
mi.fMask = MIM_STYLE;
|
||||
mi.dwStyle = MNS_CHECKORBMP;
|
||||
if ( !(*pfnSetMenuInfo)(GetHmenu(), &mi) )
|
||||
{
|
||||
wxLogLastError(wxT("SetMenuInfo(MNS_NOCHECK)"));
|
||||
}
|
||||
wxLogLastError(wxT("SetMenuInfo(MNS_NOCHECK)"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -227,31 +227,13 @@ wxString wxAssocQueryString(ASSOCSTR assoc,
|
|||
wxString ext,
|
||||
const wxString& verb = wxString())
|
||||
{
|
||||
typedef HRESULT (WINAPI *AssocQueryString_t)(ASSOCF, ASSOCSTR,
|
||||
LPCTSTR, LPCTSTR, LPTSTR,
|
||||
DWORD *);
|
||||
static AssocQueryString_t s_pfnAssocQueryString = (AssocQueryString_t)-1;
|
||||
static wxDynamicLibrary s_dllShlwapi;
|
||||
|
||||
if ( s_pfnAssocQueryString == (AssocQueryString_t)-1 )
|
||||
{
|
||||
if ( !s_dllShlwapi.Load(wxT("shlwapi.dll"), wxDL_VERBATIM | wxDL_QUIET) )
|
||||
s_pfnAssocQueryString = NULL;
|
||||
else
|
||||
wxDL_INIT_FUNC_AW(s_pfn, AssocQueryString, s_dllShlwapi);
|
||||
}
|
||||
|
||||
if ( !s_pfnAssocQueryString )
|
||||
return wxString();
|
||||
|
||||
|
||||
DWORD dwSize = MAX_PATH;
|
||||
TCHAR bufOut[MAX_PATH] = { 0 };
|
||||
|
||||
if ( ext.empty() || ext[0] != '.' )
|
||||
ext.Prepend('.');
|
||||
|
||||
HRESULT hr = s_pfnAssocQueryString
|
||||
HRESULT hr = ::AssocQueryString
|
||||
(
|
||||
wxASSOCF_NOTRUNCATE,// Fail if buffer is too small.
|
||||
assoc, // The association to retrieve.
|
||||
|
|
|
|||
|
|
@ -452,7 +452,7 @@ bool wxNotificationMessage::Show(int timeout)
|
|||
{
|
||||
if ( !m_impl )
|
||||
{
|
||||
if ( !ms_alwaysUseGeneric && wxTheApp->GetShell32Version() >= 500 )
|
||||
if ( !ms_alwaysUseGeneric )
|
||||
{
|
||||
if ( timeout == Timeout_Never )
|
||||
m_impl = new wxManualNotifMsgImpl(GetParent());
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#ifndef WX_PRECOMP
|
||||
#include "wx/string.h"
|
||||
#include "wx/window.h"
|
||||
#include "wx/control.h" // for wxControl::Ellipsize()
|
||||
#include "wx/dc.h"
|
||||
#include "wx/settings.h"
|
||||
#endif //WX_PRECOMP
|
||||
|
|
@ -338,7 +339,8 @@ public:
|
|||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
int align = wxALIGN_LEFT | wxALIGN_TOP,
|
||||
int flags = 0);
|
||||
int flags = 0,
|
||||
wxEllipsizeMode ellipsizeMode = wxELLIPSIZE_END);
|
||||
|
||||
virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
|
||||
|
||||
|
|
@ -385,6 +387,12 @@ void wxRendererMSWBase::DrawItemSelectionRect(wxWindow *win,
|
|||
const wxRect& rect,
|
||||
int flags)
|
||||
{
|
||||
if ( flags & wxCONTROL_CELL )
|
||||
{
|
||||
m_rendererNative.DrawItemSelectionRect(win, dc, rect, flags);
|
||||
return;
|
||||
}
|
||||
|
||||
wxBrush brush;
|
||||
if ( flags & wxCONTROL_SELECTED )
|
||||
{
|
||||
|
|
@ -615,6 +623,27 @@ int wxRendererMSW::GetHeaderButtonMargin(wxWindow *WXUNUSED(win))
|
|||
|
||||
#if wxUSE_UXTHEME
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
int GetListItemState(int flags)
|
||||
{
|
||||
int itemState = (flags & wxCONTROL_CURRENT) ? LISS_HOT : LISS_NORMAL;
|
||||
if ( flags & wxCONTROL_SELECTED )
|
||||
{
|
||||
itemState = (flags & wxCONTROL_CURRENT) ? LISS_HOTSELECTED : LISS_SELECTED;
|
||||
if ( !(flags & wxCONTROL_FOCUSED) )
|
||||
itemState = LISS_SELECTEDNOTFOCUS;
|
||||
}
|
||||
|
||||
if ( flags & wxCONTROL_DISABLED )
|
||||
itemState = LISS_DISABLED;
|
||||
|
||||
return itemState;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
/* static */
|
||||
wxRendererNative& wxRendererXP::Get()
|
||||
{
|
||||
|
|
@ -941,13 +970,7 @@ wxRendererXP::DrawItemSelectionRect(wxWindow *win,
|
|||
{
|
||||
wxUxThemeHandle hTheme(win, L"LISTVIEW");
|
||||
|
||||
int itemState = LISS_NORMAL;
|
||||
if ( flags & wxCONTROL_SELECTED )
|
||||
itemState = LISS_SELECTED;
|
||||
if ( !(flags & wxCONTROL_FOCUSED) )
|
||||
itemState = LISS_SELECTEDNOTFOCUS;
|
||||
if ( flags & wxCONTROL_DISABLED )
|
||||
itemState |= LISS_DISABLED;
|
||||
const int itemState = GetListItemState(flags);
|
||||
|
||||
wxUxThemeEngine* const te = wxUxThemeEngine::Get();
|
||||
if ( te->IsThemePartDefined(hTheme, LVP_LISTITEM, itemState) )
|
||||
|
|
@ -970,17 +993,12 @@ void wxRendererXP::DrawItemText(wxWindow* win,
|
|||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
int align,
|
||||
int flags)
|
||||
int flags,
|
||||
wxEllipsizeMode ellipsizeMode)
|
||||
{
|
||||
wxUxThemeHandle hTheme(win, L"LISTVIEW");
|
||||
|
||||
int itemState = LISS_NORMAL;
|
||||
if ( flags & wxCONTROL_SELECTED )
|
||||
itemState = LISS_SELECTED;
|
||||
if ( !(flags & wxCONTROL_FOCUSED) )
|
||||
itemState = LISS_SELECTEDNOTFOCUS;
|
||||
if ( flags & wxCONTROL_DISABLED )
|
||||
itemState |= LISS_DISABLED;
|
||||
const int itemState = GetListItemState(flags);
|
||||
|
||||
wxUxThemeEngine* te = wxUxThemeEngine::Get();
|
||||
if ( te->DrawThemeTextEx && // Might be not available if we're under XP
|
||||
|
|
@ -999,11 +1017,14 @@ void wxRendererXP::DrawItemText(wxWindow* win,
|
|||
textOpts.crText = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT).GetPixel();
|
||||
}
|
||||
|
||||
DWORD textFlags = DT_NOPREFIX | DT_END_ELLIPSIS;
|
||||
if ( align & wxALIGN_CENTER )
|
||||
DWORD textFlags = DT_NOPREFIX;
|
||||
if ( align & wxALIGN_CENTER_HORIZONTAL )
|
||||
textFlags |= DT_CENTER;
|
||||
else if ( align & wxALIGN_RIGHT )
|
||||
{
|
||||
textFlags |= DT_RIGHT;
|
||||
rc.right--; // Alignment is inconsistent with DrawLabel otherwise
|
||||
}
|
||||
else
|
||||
textFlags |= DT_LEFT;
|
||||
|
||||
|
|
@ -1014,12 +1035,37 @@ void wxRendererXP::DrawItemText(wxWindow* win,
|
|||
else
|
||||
textFlags |= DT_TOP;
|
||||
|
||||
const wxString* drawText = &text;
|
||||
wxString ellipsizedText;
|
||||
switch ( ellipsizeMode )
|
||||
{
|
||||
case wxELLIPSIZE_NONE:
|
||||
// no flag required
|
||||
break;
|
||||
|
||||
case wxELLIPSIZE_START:
|
||||
case wxELLIPSIZE_MIDDLE:
|
||||
// no native support for this ellipsize modes, use wxWidgets
|
||||
// implementation (may not be 100% accurate because per
|
||||
// definition the theme defines the font but should be close
|
||||
// enough with current windows themes)
|
||||
drawText = &ellipsizedText;
|
||||
ellipsizedText = wxControl::Ellipsize(text, dc, ellipsizeMode,
|
||||
rect.width,
|
||||
wxELLIPSIZE_FLAGS_NONE);
|
||||
break;
|
||||
|
||||
case wxELLIPSIZE_END:
|
||||
textFlags |= DT_END_ELLIPSIS;
|
||||
break;
|
||||
}
|
||||
|
||||
te->DrawThemeTextEx(hTheme, dc.GetHDC(), LVP_LISTITEM, itemState,
|
||||
text.wchar_str(), -1, textFlags, &rc, &textOpts);
|
||||
drawText->wchar_str(), -1, textFlags, &rc, &textOpts);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_rendererNative.DrawItemText(win, dc, text, rect, align, flags);
|
||||
m_rendererNative.DrawItemText(win, dc, text, rect, align, flags, ellipsizeMode);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -580,7 +580,7 @@ WXHBRUSH wxSlider::DoMSWControlColor(WXHDC pDC, wxColour colBg, WXHWND hWnd)
|
|||
|
||||
// Anything really refreshing the slider would work here, we use a
|
||||
// dummy WM_ENABLE but using TBM_SETPOS would work too, for example.
|
||||
::PostMessage(hWnd, WM_ENABLE, (BOOL)IsEnabled(), 0);
|
||||
::PostMessage(hWnd, WM_ENABLE, ::IsWindowEnabled(hWnd), 0);
|
||||
}
|
||||
|
||||
return hBrush;
|
||||
|
|
|
|||
|
|
@ -168,17 +168,12 @@ int wxSpinButton::GetValue() const
|
|||
{
|
||||
int n;
|
||||
#ifdef UDM_GETPOS32
|
||||
if ( wxApp::GetComCtl32Version() >= 580 )
|
||||
{
|
||||
// use the full 32 bit range if available
|
||||
n = ::SendMessage(GetHwnd(), UDM_GETPOS32, 0, 0);
|
||||
}
|
||||
else
|
||||
// use the full 32 bit range if available
|
||||
n = ::SendMessage(GetHwnd(), UDM_GETPOS32, 0, 0);
|
||||
#else
|
||||
// we're limited to 16 bit
|
||||
n = (short)LOWORD(::SendMessage(GetHwnd(), UDM_GETPOS, 0, 0));
|
||||
#endif // UDM_GETPOS32
|
||||
{
|
||||
// we're limited to 16 bit
|
||||
n = (short)LOWORD(::SendMessage(GetHwnd(), UDM_GETPOS, 0, 0));
|
||||
}
|
||||
|
||||
if (n < m_min) n = m_min;
|
||||
if (n > m_max) n = m_max;
|
||||
|
|
@ -191,16 +186,11 @@ void wxSpinButton::SetValue(int val)
|
|||
// wxSpinButtonBase::SetValue(val); -- no, it is pure virtual
|
||||
|
||||
#ifdef UDM_SETPOS32
|
||||
if ( wxApp::GetComCtl32Version() >= 580 )
|
||||
{
|
||||
// use the full 32 bit range if available
|
||||
::SendMessage(GetHwnd(), UDM_SETPOS32, 0, val);
|
||||
}
|
||||
else // we're limited to 16 bit
|
||||
// use the full 32 bit range if available
|
||||
::SendMessage(GetHwnd(), UDM_SETPOS32, 0, val);
|
||||
#else
|
||||
::SendMessage(GetHwnd(), UDM_SETPOS, 0, MAKELONG((short) val, 0));
|
||||
#endif // UDM_SETPOS32
|
||||
{
|
||||
::SendMessage(GetHwnd(), UDM_SETPOS, 0, MAKELONG((short) val, 0));
|
||||
}
|
||||
}
|
||||
|
||||
void wxSpinButton::NormalizeValue()
|
||||
|
|
@ -215,17 +205,13 @@ void wxSpinButton::SetRange(int minVal, int maxVal)
|
|||
wxSpinButtonBase::SetRange(minVal, maxVal);
|
||||
|
||||
#ifdef UDM_SETRANGE32
|
||||
if ( wxApp::GetComCtl32Version() >= 471 )
|
||||
{
|
||||
// use the full 32 bit range if available
|
||||
::SendMessage(GetHwnd(), UDM_SETRANGE32, minVal, maxVal);
|
||||
}
|
||||
else // we're limited to 16 bit
|
||||
// use the full 32 bit range if available
|
||||
::SendMessage(GetHwnd(), UDM_SETRANGE32, minVal, maxVal);
|
||||
#else
|
||||
// we're limited to 16 bit
|
||||
::SendMessage(GetHwnd(), UDM_SETRANGE, 0,
|
||||
(LPARAM) MAKELONG((short)maxVal, (short)minVal));
|
||||
#endif // UDM_SETRANGE32
|
||||
{
|
||||
::SendMessage(GetHwnd(), UDM_SETRANGE, 0,
|
||||
(LPARAM) MAKELONG((short)maxVal, (short)minVal));
|
||||
}
|
||||
|
||||
// the current value might be out of the new range, force it to be in it
|
||||
NormalizeValue();
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
#include "wx/msw/private.h"
|
||||
#include "wx/msw/wrapshl.h"
|
||||
#include <initguid.h>
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// types
|
||||
|
|
@ -43,6 +44,7 @@
|
|||
|
||||
typedef HRESULT (WINAPI *SHGetFolderPath_t)(HWND, int, HANDLE, DWORD, LPTSTR);
|
||||
typedef HRESULT (WINAPI *SHGetSpecialFolderPath_t)(HWND, LPTSTR, int, BOOL);
|
||||
typedef HRESULT (WINAPI *SHGetKnownFolderPath_t)(const GUID&, DWORD, HANDLE, PWSTR *);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
|
|
@ -86,6 +88,9 @@ typedef HRESULT (WINAPI *SHGetSpecialFolderPath_t)(HWND, LPTSTR, int, BOOL);
|
|||
namespace
|
||||
{
|
||||
|
||||
DEFINE_GUID(wxFOLDERID_Downloads,
|
||||
0x374de290, 0x123f, 0x4565, 0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b);
|
||||
|
||||
struct ShellFunctions
|
||||
{
|
||||
ShellFunctions()
|
||||
|
|
@ -97,6 +102,7 @@ struct ShellFunctions
|
|||
|
||||
SHGetFolderPath_t pSHGetFolderPath;
|
||||
SHGetSpecialFolderPath_t pSHGetSpecialFolderPath;
|
||||
SHGetKnownFolderPath_t pSHGetKnownFolderPath;
|
||||
|
||||
bool initialized;
|
||||
};
|
||||
|
|
@ -146,6 +152,9 @@ void ResolveShellFunctions()
|
|||
dllShellFunctions.GetSymbol(funcname + UNICODE_SUFFIX);
|
||||
}
|
||||
|
||||
gs_shellFuncs.pSHGetKnownFolderPath = (SHGetKnownFolderPath_t)
|
||||
dllShellFunctions.GetSymbol("SHGetKnownFolderPath");
|
||||
|
||||
// finally we fall back on SHGetSpecialFolderLocation (shell32.dll 4.0),
|
||||
// but we don't need to test for it -- it is available even under Win95
|
||||
|
||||
|
|
@ -242,6 +251,28 @@ wxString wxStandardPaths::DoGetDirectory(int csidl)
|
|||
return dir;
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::DoGetKnownFolder(const GUID& rfid)
|
||||
{
|
||||
if (!gs_shellFuncs.initialized)
|
||||
ResolveShellFunctions();
|
||||
|
||||
wxString dir;
|
||||
|
||||
if ( gs_shellFuncs.pSHGetKnownFolderPath )
|
||||
{
|
||||
PWSTR pDir;
|
||||
HRESULT hr = gs_shellFuncs.pSHGetKnownFolderPath(rfid, 0, 0, &pDir);
|
||||
if ( SUCCEEDED(hr) )
|
||||
{
|
||||
dir = pDir;
|
||||
CoTaskMemFree(pDir);
|
||||
}
|
||||
}
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
wxString wxStandardPaths::GetAppDir() const
|
||||
{
|
||||
if ( m_appDir.empty() )
|
||||
|
|
@ -252,9 +283,38 @@ wxString wxStandardPaths::GetAppDir() const
|
|||
return m_appDir;
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetDocumentsDir() const
|
||||
wxString wxStandardPaths::GetUserDir(Dir userDir) const
|
||||
{
|
||||
return DoGetDirectory(CSIDL_PERSONAL);
|
||||
int csidl;
|
||||
switch (userDir)
|
||||
{
|
||||
case Dir_Desktop:
|
||||
csidl = CSIDL_DESKTOPDIRECTORY;
|
||||
break;
|
||||
case Dir_Downloads:
|
||||
{
|
||||
csidl = CSIDL_PERSONAL;
|
||||
// Downloads folder is only available since Vista
|
||||
wxString dir = DoGetKnownFolder(wxFOLDERID_Downloads);
|
||||
if ( !dir.empty() )
|
||||
return dir;
|
||||
break;
|
||||
}
|
||||
case Dir_Music:
|
||||
csidl = CSIDL_MYMUSIC;
|
||||
break;
|
||||
case Dir_Pictures:
|
||||
csidl = CSIDL_MYPICTURES;
|
||||
break;
|
||||
case Dir_Videos:
|
||||
csidl = CSIDL_MYVIDEO;
|
||||
break;
|
||||
default:
|
||||
csidl = CSIDL_PERSONAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return DoGetDirectory(csidl);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -45,14 +45,6 @@
|
|||
#define NIF_INFO 0x00000010
|
||||
#endif
|
||||
|
||||
#ifndef NOTIFYICONDATA_V1_SIZE
|
||||
#ifdef UNICODE
|
||||
#define NOTIFYICONDATA_V1_SIZE 0x0098
|
||||
#else
|
||||
#define NOTIFYICONDATA_V1_SIZE 0x0058
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef NOTIFYICONDATA_V2_SIZE
|
||||
#ifdef UNICODE
|
||||
#define NOTIFYICONDATA_V2_SIZE 0x03A8
|
||||
|
|
@ -122,12 +114,8 @@ struct NotifyIconData : public NOTIFYICONDATA
|
|||
// we could do complicated tests for the exact system version it's
|
||||
// easier to just use an old size which should be supported everywhere
|
||||
// from Windows 2000 up and which is all we need as we don't use any
|
||||
// newer features so far. But if we're running under a really ancient
|
||||
// system (Win9x), fall back to even smaller size -- then the balloon
|
||||
// related features won't be available but the rest will still work.
|
||||
cbSize = wxTheApp->GetShell32Version() >= 500
|
||||
? NOTIFYICONDATA_V2_SIZE
|
||||
: NOTIFYICONDATA_V1_SIZE;
|
||||
// newer features so far.
|
||||
cbSize = NOTIFYICONDATA_V2_SIZE;
|
||||
|
||||
hWnd = (HWND) hwnd;
|
||||
uCallbackMessage = gs_msgTaskbar;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,9 @@
|
|||
#include "wx/msw/uxtheme.h"
|
||||
#endif
|
||||
|
||||
#include "wx/msw/wrapwin.h"
|
||||
#include <Shlwapi.h>
|
||||
|
||||
#define GetEditHwnd() ((HWND)(GetEditHWND()))
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
@ -775,24 +778,6 @@ void wxTextEntry::GetSelection(long *from, long *to) const
|
|||
|
||||
bool wxTextEntry::DoAutoCompleteFileNames(int flags)
|
||||
{
|
||||
typedef HRESULT (WINAPI *SHAutoComplete_t)(HWND, DWORD);
|
||||
static SHAutoComplete_t s_pfnSHAutoComplete = (SHAutoComplete_t)-1;
|
||||
static wxDynamicLibrary s_dllShlwapi;
|
||||
if ( s_pfnSHAutoComplete == (SHAutoComplete_t)-1 )
|
||||
{
|
||||
if ( !s_dllShlwapi.Load(wxT("shlwapi.dll"), wxDL_VERBATIM | wxDL_QUIET) )
|
||||
{
|
||||
s_pfnSHAutoComplete = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
wxDL_INIT_FUNC(s_pfn, SHAutoComplete, s_dllShlwapi);
|
||||
}
|
||||
}
|
||||
|
||||
if ( !s_pfnSHAutoComplete )
|
||||
return false;
|
||||
|
||||
DWORD dwFlags = 0;
|
||||
if ( flags & wxFILE )
|
||||
dwFlags |= SHACF_FILESYS_ONLY;
|
||||
|
|
@ -804,7 +789,7 @@ bool wxTextEntry::DoAutoCompleteFileNames(int flags)
|
|||
return false;
|
||||
}
|
||||
|
||||
HRESULT hr = (*s_pfnSHAutoComplete)(GetEditHwnd(), dwFlags);
|
||||
HRESULT hr = ::SHAutoComplete(GetEditHwnd(), dwFlags);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
wxLogApiError(wxT("SHAutoComplete()"), hr);
|
||||
|
|
|
|||
|
|
@ -386,8 +386,7 @@ bool wxToolBar::MSWCreateToolbar(const wxPoint& pos, const wxSize& size)
|
|||
::SendMessage(GetHwnd(), TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
|
||||
|
||||
#ifdef TB_SETEXTENDEDSTYLE
|
||||
if ( wxApp::GetComCtl32Version() >= 471 )
|
||||
::SendMessage(GetHwnd(), TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS);
|
||||
::SendMessage(GetHwnd(), TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
|
|
@ -523,10 +522,10 @@ WXDWORD wxToolBar::MSWGetStyle(long style, WXDWORD *exstyle) const
|
|||
if ( !(style & wxTB_NO_TOOLTIPS) )
|
||||
msStyle |= TBSTYLE_TOOLTIPS;
|
||||
|
||||
if ( style & wxTB_FLAT && wxApp::GetComCtl32Version() > 400 )
|
||||
if ( style & wxTB_FLAT )
|
||||
msStyle |= TBSTYLE_FLAT;
|
||||
|
||||
if ( style & wxTB_HORZ_LAYOUT && wxApp::GetComCtl32Version() >= 470 )
|
||||
if ( style & wxTB_HORZ_LAYOUT )
|
||||
msStyle |= TBSTYLE_LIST;
|
||||
|
||||
if ( style & wxTB_NODIVIDER )
|
||||
|
|
@ -607,34 +606,27 @@ void wxToolBar::CreateDisabledImageList()
|
|||
{
|
||||
wxDELETE(m_disabledImgList);
|
||||
|
||||
// as we can't use disabled image list with older versions of comctl32.dll,
|
||||
// don't even bother creating it
|
||||
if ( wxApp::GetComCtl32Version() >= 470 )
|
||||
// search for the first disabled button img in the toolbar, if any
|
||||
for ( wxToolBarToolsList::compatibility_iterator
|
||||
node = m_tools.GetFirst(); node; node = node->GetNext() )
|
||||
{
|
||||
// search for the first disabled button img in the toolbar, if any
|
||||
for ( wxToolBarToolsList::compatibility_iterator
|
||||
node = m_tools.GetFirst(); node; node = node->GetNext() )
|
||||
wxToolBarToolBase *tool = node->GetData();
|
||||
wxBitmap bmpDisabled = tool->GetDisabledBitmap();
|
||||
if ( bmpDisabled.IsOk() )
|
||||
{
|
||||
wxToolBarToolBase *tool = node->GetData();
|
||||
wxBitmap bmpDisabled = tool->GetDisabledBitmap();
|
||||
if ( bmpDisabled.IsOk() )
|
||||
{
|
||||
const wxSize sizeBitmap = bmpDisabled.GetSize();
|
||||
m_disabledImgList = new wxImageList
|
||||
(
|
||||
sizeBitmap.x,
|
||||
sizeBitmap.y,
|
||||
// Don't use mask if we have alpha
|
||||
// (wxImageList will fall back to
|
||||
// mask if alpha not supported)
|
||||
!bmpDisabled.HasAlpha(),
|
||||
GetToolsCount()
|
||||
);
|
||||
break;
|
||||
}
|
||||
const wxSize sizeBitmap = bmpDisabled.GetSize();
|
||||
m_disabledImgList = new wxImageList
|
||||
(
|
||||
sizeBitmap.x,
|
||||
sizeBitmap.y,
|
||||
// Don't use mask if we have alpha
|
||||
// (wxImageList will fall back to
|
||||
// mask if alpha not supported)
|
||||
!bmpDisabled.HasAlpha(),
|
||||
GetToolsCount()
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
// we don't have any disabled bitmaps
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -824,35 +816,30 @@ bool wxToolBar::Realize()
|
|||
if ( oldToolBarBitmap )
|
||||
{
|
||||
#ifdef TB_REPLACEBITMAP
|
||||
if ( wxApp::GetComCtl32Version() >= 400 )
|
||||
TBREPLACEBITMAP replaceBitmap;
|
||||
replaceBitmap.hInstOld = NULL;
|
||||
replaceBitmap.hInstNew = NULL;
|
||||
replaceBitmap.nIDOld = (UINT_PTR)oldToolBarBitmap;
|
||||
replaceBitmap.nIDNew = (UINT_PTR)hBitmap;
|
||||
replaceBitmap.nButtons = nButtons;
|
||||
if ( !::SendMessage(GetHwnd(), TB_REPLACEBITMAP,
|
||||
0, (LPARAM) &replaceBitmap) )
|
||||
{
|
||||
TBREPLACEBITMAP replaceBitmap;
|
||||
replaceBitmap.hInstOld = NULL;
|
||||
replaceBitmap.hInstNew = NULL;
|
||||
replaceBitmap.nIDOld = (UINT_PTR)oldToolBarBitmap;
|
||||
replaceBitmap.nIDNew = (UINT_PTR)hBitmap;
|
||||
replaceBitmap.nButtons = nButtons;
|
||||
if ( !::SendMessage(GetHwnd(), TB_REPLACEBITMAP,
|
||||
0, (LPARAM) &replaceBitmap) )
|
||||
{
|
||||
wxFAIL_MSG(wxT("Could not replace the old bitmap"));
|
||||
}
|
||||
|
||||
::DeleteObject(oldToolBarBitmap);
|
||||
|
||||
// already done
|
||||
addBitmap = false;
|
||||
wxFAIL_MSG(wxT("Could not replace the old bitmap"));
|
||||
}
|
||||
else
|
||||
|
||||
::DeleteObject(oldToolBarBitmap);
|
||||
|
||||
// already done
|
||||
addBitmap = false;
|
||||
#else
|
||||
// we can't replace the old bitmap, so we will add another one
|
||||
// (awfully inefficient, but what else to do?) and shift the bitmap
|
||||
// indices accordingly
|
||||
addBitmap = true;
|
||||
|
||||
bitmapId = m_nButtons;
|
||||
#endif // TB_REPLACEBITMAP
|
||||
{
|
||||
// we can't replace the old bitmap, so we will add another one
|
||||
// (awfully inefficient, but what else to do?) and shift the bitmap
|
||||
// indices accordingly
|
||||
addBitmap = true;
|
||||
|
||||
bitmapId = m_nButtons;
|
||||
}
|
||||
}
|
||||
|
||||
if ( addBitmap ) // no old bitmap or we can't replace it
|
||||
|
|
@ -867,22 +854,18 @@ bool wxToolBar::Realize()
|
|||
}
|
||||
}
|
||||
|
||||
// disable image lists are only supported in comctl32.dll 4.70+
|
||||
if ( wxApp::GetComCtl32Version() >= 470 )
|
||||
{
|
||||
HIMAGELIST hil = m_disabledImgList
|
||||
? GetHimagelistOf(m_disabledImgList)
|
||||
: 0;
|
||||
HIMAGELIST hil = m_disabledImgList
|
||||
? GetHimagelistOf(m_disabledImgList)
|
||||
: 0;
|
||||
|
||||
// notice that we set the image list even if don't have one right
|
||||
// now as we could have it before and need to reset it in this case
|
||||
HIMAGELIST oldImageList = (HIMAGELIST)
|
||||
::SendMessage(GetHwnd(), TB_SETDISABLEDIMAGELIST, 0, (LPARAM)hil);
|
||||
// notice that we set the image list even if don't have one right
|
||||
// now as we could have it before and need to reset it in this case
|
||||
HIMAGELIST oldImageList = (HIMAGELIST)
|
||||
::SendMessage(GetHwnd(), TB_SETDISABLEDIMAGELIST, 0, (LPARAM)hil);
|
||||
|
||||
// delete previous image list if any
|
||||
if ( oldImageList )
|
||||
::DeleteObject(oldImageList);
|
||||
}
|
||||
// delete previous image list if any
|
||||
if ( oldImageList )
|
||||
::DeleteObject(oldImageList);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -900,14 +883,6 @@ bool wxToolBar::Realize()
|
|||
{
|
||||
wxToolBarTool *tool = static_cast<wxToolBarTool *>(node->GetData());
|
||||
|
||||
// don't add separators to the vertical toolbar with old comctl32.dll
|
||||
// versions as they didn't handle this properly
|
||||
if ( IsVertical() && tool->IsSeparator() &&
|
||||
wxApp::GetComCtl32Version() <= 472 )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
TBBUTTON& button = buttons[i];
|
||||
|
||||
wxZeroMemory(button);
|
||||
|
|
@ -1492,21 +1467,9 @@ void wxToolBar::SetRows(int nRows)
|
|||
// The button size is bigger than the bitmap size
|
||||
wxSize wxToolBar::GetToolSize() const
|
||||
{
|
||||
// TB_GETBUTTONSIZE is supported from version 4.70
|
||||
#if defined(_WIN32_IE) && (_WIN32_IE >= 0x300 ) \
|
||||
&& !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
|
||||
if ( wxApp::GetComCtl32Version() >= 470 )
|
||||
{
|
||||
DWORD dw = ::SendMessage(GetHwnd(), TB_GETBUTTONSIZE, 0, 0);
|
||||
DWORD dw = ::SendMessage(GetHwnd(), TB_GETBUTTONSIZE, 0, 0);
|
||||
|
||||
return wxSize(LOWORD(dw), HIWORD(dw));
|
||||
}
|
||||
else
|
||||
#endif // comctl32.dll 4.70+
|
||||
{
|
||||
// defaults
|
||||
return wxSize(m_defaultWidth + 8, m_defaultHeight + 7);
|
||||
}
|
||||
return wxSize(LOWORD(dw), HIWORD(dw));
|
||||
}
|
||||
|
||||
wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const
|
||||
|
|
|
|||
|
|
@ -130,10 +130,7 @@ public:
|
|||
// then as the control gets "focus lost" events and dismisses the
|
||||
// tooltip which then reappears because mouse remains hovering over the
|
||||
// control, see SF patch 1821229
|
||||
if ( wxApp::GetComCtl32Version() >= 470 )
|
||||
{
|
||||
uFlags |= TTF_TRANSPARENT;
|
||||
}
|
||||
uFlags |= TTF_TRANSPARENT;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -539,81 +536,76 @@ void wxToolTip::DoSetTip(WXHWND hWnd)
|
|||
|
||||
bool wxToolTip::AdjustMaxWidth()
|
||||
{
|
||||
if ( wxApp::GetComCtl32Version() >= 470 )
|
||||
{
|
||||
// use TTM_SETMAXTIPWIDTH to make tooltip multiline using the
|
||||
// extent of its first line as max value
|
||||
HFONT hfont = (HFONT)
|
||||
SendTooltipMessage(GetToolTipCtrl(), WM_GETFONT, 0);
|
||||
// use TTM_SETMAXTIPWIDTH to make tooltip multiline using the
|
||||
// extent of its first line as max value
|
||||
HFONT hfont = (HFONT)
|
||||
SendTooltipMessage(GetToolTipCtrl(), WM_GETFONT, 0);
|
||||
|
||||
if ( !hfont )
|
||||
{
|
||||
hfont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
|
||||
if ( !hfont )
|
||||
{
|
||||
hfont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
|
||||
if ( !hfont )
|
||||
{
|
||||
wxLogLastError(wxT("GetStockObject(DEFAULT_GUI_FONT)"));
|
||||
}
|
||||
wxLogLastError(wxT("GetStockObject(DEFAULT_GUI_FONT)"));
|
||||
}
|
||||
|
||||
MemoryHDC hdc;
|
||||
if ( !hdc )
|
||||
{
|
||||
wxLogLastError(wxT("CreateCompatibleDC(NULL)"));
|
||||
}
|
||||
|
||||
if ( !SelectObject(hdc, hfont) )
|
||||
{
|
||||
wxLogLastError(wxT("SelectObject(hfont)"));
|
||||
}
|
||||
|
||||
// find the width of the widest line
|
||||
int maxWidth = 0;
|
||||
wxStringTokenizer tokenizer(m_text, wxT("\n"));
|
||||
while ( tokenizer.HasMoreTokens() )
|
||||
{
|
||||
const wxString token = tokenizer.GetNextToken();
|
||||
|
||||
SIZE sz;
|
||||
if ( !::GetTextExtentPoint32(hdc, token.t_str(),
|
||||
token.length(), &sz) )
|
||||
{
|
||||
wxLogLastError(wxT("GetTextExtentPoint32"));
|
||||
}
|
||||
|
||||
if ( sz.cx > maxWidth )
|
||||
maxWidth = sz.cx;
|
||||
}
|
||||
|
||||
// limit size to ms_maxWidth, if set
|
||||
if ( ms_maxWidth == 0 )
|
||||
{
|
||||
// this is more or less arbitrary but seems to work well
|
||||
static const int DEFAULT_MAX_WIDTH = 400;
|
||||
|
||||
ms_maxWidth = wxGetClientDisplayRect().width / 2;
|
||||
|
||||
if ( ms_maxWidth > DEFAULT_MAX_WIDTH )
|
||||
ms_maxWidth = DEFAULT_MAX_WIDTH;
|
||||
}
|
||||
|
||||
if ( ms_maxWidth != -1 && maxWidth > ms_maxWidth )
|
||||
maxWidth = ms_maxWidth;
|
||||
|
||||
// only set a new width if it is bigger than the current setting:
|
||||
// otherwise adding a tooltip with shorter line(s) than a previous
|
||||
// one would result in breaking the longer lines unnecessarily as
|
||||
// all our tooltips share the same maximal width
|
||||
if ( maxWidth > SendTooltipMessage(GetToolTipCtrl(),
|
||||
TTM_GETMAXTIPWIDTH, 0) )
|
||||
{
|
||||
SendTooltipMessage(GetToolTipCtrl(), TTM_SETMAXTIPWIDTH,
|
||||
wxUIntToPtr(maxWidth));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
MemoryHDC hdc;
|
||||
if ( !hdc )
|
||||
{
|
||||
wxLogLastError(wxT("CreateCompatibleDC(NULL)"));
|
||||
}
|
||||
|
||||
if ( !SelectObject(hdc, hfont) )
|
||||
{
|
||||
wxLogLastError(wxT("SelectObject(hfont)"));
|
||||
}
|
||||
|
||||
// find the width of the widest line
|
||||
int maxWidth = 0;
|
||||
wxStringTokenizer tokenizer(m_text, wxT("\n"));
|
||||
while ( tokenizer.HasMoreTokens() )
|
||||
{
|
||||
const wxString token = tokenizer.GetNextToken();
|
||||
|
||||
SIZE sz;
|
||||
if ( !::GetTextExtentPoint32(hdc, token.t_str(),
|
||||
token.length(), &sz) )
|
||||
{
|
||||
wxLogLastError(wxT("GetTextExtentPoint32"));
|
||||
}
|
||||
|
||||
if ( sz.cx > maxWidth )
|
||||
maxWidth = sz.cx;
|
||||
}
|
||||
|
||||
// limit size to ms_maxWidth, if set
|
||||
if ( ms_maxWidth == 0 )
|
||||
{
|
||||
// this is more or less arbitrary but seems to work well
|
||||
static const int DEFAULT_MAX_WIDTH = 400;
|
||||
|
||||
ms_maxWidth = wxGetClientDisplayRect().width / 2;
|
||||
|
||||
if ( ms_maxWidth > DEFAULT_MAX_WIDTH )
|
||||
ms_maxWidth = DEFAULT_MAX_WIDTH;
|
||||
}
|
||||
|
||||
if ( ms_maxWidth != -1 && maxWidth > ms_maxWidth )
|
||||
maxWidth = ms_maxWidth;
|
||||
|
||||
// only set a new width if it is bigger than the current setting:
|
||||
// otherwise adding a tooltip with shorter line(s) than a previous
|
||||
// one would result in breaking the longer lines unnecessarily as
|
||||
// all our tooltips share the same maximal width
|
||||
if ( maxWidth > SendTooltipMessage(GetToolTipCtrl(),
|
||||
TTM_GETMAXTIPWIDTH, 0) )
|
||||
{
|
||||
SendTooltipMessage(GetToolTipCtrl(), TTM_SETMAXTIPWIDTH,
|
||||
wxUIntToPtr(maxWidth));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxToolTip::DoForAllWindows(void (wxToolTip::*func)(WXHWND))
|
||||
|
|
|
|||
|
|
@ -1078,44 +1078,28 @@ bool wxTopLevelWindowMSW::EnableMinimizeButton(bool enable)
|
|||
|
||||
void wxTopLevelWindowMSW::RequestUserAttention(int flags)
|
||||
{
|
||||
#if defined(FLASHW_STOP) && wxUSE_DYNLIB_CLASS
|
||||
// available in the headers, check if it is supported by the system
|
||||
typedef BOOL (WINAPI *FlashWindowEx_t)(FLASHWINFO *pfwi);
|
||||
static FlashWindowEx_t s_pfnFlashWindowEx = NULL;
|
||||
if ( !s_pfnFlashWindowEx )
|
||||
#if defined(FLASHW_STOP)
|
||||
WinStruct<FLASHWINFO> fwi;
|
||||
fwi.hwnd = GetHwnd();
|
||||
fwi.dwFlags = FLASHW_ALL;
|
||||
if ( flags & wxUSER_ATTENTION_INFO )
|
||||
{
|
||||
wxDynamicLibrary dllUser32(wxT("user32.dll"));
|
||||
s_pfnFlashWindowEx = (FlashWindowEx_t)
|
||||
dllUser32.GetSymbol(wxT("FlashWindowEx"));
|
||||
|
||||
// we can safely unload user32.dll here, it's going to remain loaded as
|
||||
// long as the program is running anyhow
|
||||
// just flash a few times
|
||||
fwi.uCount = 3;
|
||||
}
|
||||
else // wxUSER_ATTENTION_ERROR
|
||||
{
|
||||
// flash until the user notices it
|
||||
fwi.dwFlags |= FLASHW_TIMERNOFG;
|
||||
}
|
||||
|
||||
if ( s_pfnFlashWindowEx )
|
||||
{
|
||||
WinStruct<FLASHWINFO> fwi;
|
||||
fwi.hwnd = GetHwnd();
|
||||
fwi.dwFlags = FLASHW_ALL;
|
||||
if ( flags & wxUSER_ATTENTION_INFO )
|
||||
{
|
||||
// just flash a few times
|
||||
fwi.uCount = 3;
|
||||
}
|
||||
else // wxUSER_ATTENTION_ERROR
|
||||
{
|
||||
// flash until the user notices it
|
||||
fwi.dwFlags |= FLASHW_TIMERNOFG;
|
||||
}
|
||||
|
||||
s_pfnFlashWindowEx(&fwi);
|
||||
}
|
||||
else // FlashWindowEx() not available
|
||||
#endif // FlashWindowEx() defined
|
||||
::FlashWindowEx(&fwi);
|
||||
#else
|
||||
{
|
||||
wxUnusedVar(flags);
|
||||
::FlashWindow(GetHwnd(), TRUE);
|
||||
}
|
||||
#endif // defined(FLASHW_STOP)
|
||||
}
|
||||
|
||||
wxMenu *wxTopLevelWindowMSW::MSWGetSystemMenu() const
|
||||
|
|
@ -1157,28 +1141,6 @@ wxMenu *wxTopLevelWindowMSW::MSWGetSystemMenu() const
|
|||
|
||||
bool wxTopLevelWindowMSW::SetTransparent(wxByte alpha)
|
||||
{
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
typedef DWORD (WINAPI *PSETLAYEREDWINDOWATTR)(HWND, DWORD, BYTE, DWORD);
|
||||
static PSETLAYEREDWINDOWATTR
|
||||
pSetLayeredWindowAttributes = (PSETLAYEREDWINDOWATTR)-1;
|
||||
|
||||
if ( pSetLayeredWindowAttributes == (PSETLAYEREDWINDOWATTR)-1 )
|
||||
{
|
||||
wxDynamicLibrary dllUser32(wxT("user32.dll"));
|
||||
|
||||
// use RawGetSymbol() and not GetSymbol() to avoid error messages under
|
||||
// Windows 95: there is nothing the user can do about this anyhow
|
||||
pSetLayeredWindowAttributes = (PSETLAYEREDWINDOWATTR)
|
||||
dllUser32.RawGetSymbol(wxT("SetLayeredWindowAttributes"));
|
||||
|
||||
// it's ok to destroy dllUser32 here, we link statically to user32.dll
|
||||
// anyhow so it won't be unloaded
|
||||
}
|
||||
|
||||
if ( !pSetLayeredWindowAttributes )
|
||||
return false;
|
||||
#endif // wxUSE_DYNLIB_CLASS
|
||||
|
||||
LONG exstyle = GetWindowLong(GetHwnd(), GWL_EXSTYLE);
|
||||
|
||||
// if setting alpha to fully opaque then turn off the layered style
|
||||
|
|
@ -1189,14 +1151,12 @@ bool wxTopLevelWindowMSW::SetTransparent(wxByte alpha)
|
|||
return true;
|
||||
}
|
||||
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
// Otherwise, set the layered style if needed and set the alpha value
|
||||
if ((exstyle & WS_EX_LAYERED) == 0 )
|
||||
SetWindowLong(GetHwnd(), GWL_EXSTYLE, exstyle | WS_EX_LAYERED);
|
||||
|
||||
if ( pSetLayeredWindowAttributes(GetHwnd(), 0, (BYTE)alpha, LWA_ALPHA) )
|
||||
if ( ::SetLayeredWindowAttributes(GetHwnd(), 0, (BYTE)alpha, LWA_ALPHA) )
|
||||
return true;
|
||||
#endif // wxUSE_DYNLIB_CLASS
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -763,8 +763,7 @@ bool wxTreeCtrl::Create(wxWindow *parent,
|
|||
|
||||
if ( m_windowStyle & wxTR_FULL_ROW_HIGHLIGHT )
|
||||
{
|
||||
if ( wxApp::GetComCtl32Version() >= 471 )
|
||||
wstyle |= TVS_FULLROWSELECT;
|
||||
wstyle |= TVS_FULLROWSELECT;
|
||||
}
|
||||
|
||||
#if defined(TVS_INFOTIP)
|
||||
|
|
|
|||
|
|
@ -29,10 +29,11 @@
|
|||
#include "wx/utils.h"
|
||||
#endif //WX_PRECOMP
|
||||
|
||||
#include "wx/dynlib.h"
|
||||
|
||||
#include "wx/msw/private.h" // includes <windows.h>
|
||||
|
||||
#include "wx/msw/wrapwin.h"
|
||||
#include <Shlwapi.h>
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
// ============================================================================
|
||||
|
|
@ -264,34 +265,7 @@ void wxDrawLine(HDC hdc, int x1, int y1, int x2, int y2)
|
|||
|
||||
extern bool wxEnableFileNameAutoComplete(HWND hwnd)
|
||||
{
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
typedef HRESULT (WINAPI *SHAutoComplete_t)(HWND, DWORD);
|
||||
|
||||
static SHAutoComplete_t s_pfnSHAutoComplete = NULL;
|
||||
static bool s_initialized = false;
|
||||
|
||||
if ( !s_initialized )
|
||||
{
|
||||
s_initialized = true;
|
||||
|
||||
wxLogNull nolog;
|
||||
wxDynamicLibrary dll(wxT("shlwapi.dll"));
|
||||
if ( dll.IsLoaded() )
|
||||
{
|
||||
s_pfnSHAutoComplete =
|
||||
(SHAutoComplete_t)dll.GetSymbol(wxT("SHAutoComplete"));
|
||||
if ( s_pfnSHAutoComplete )
|
||||
{
|
||||
// won't be unloaded until the process termination, no big deal
|
||||
dll.Detach();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( !s_pfnSHAutoComplete )
|
||||
return false;
|
||||
|
||||
HRESULT hr = s_pfnSHAutoComplete(hwnd, 0x10 /* SHACF_FILESYS_ONLY */);
|
||||
HRESULT hr = ::SHAutoComplete(hwnd, 0x10 /* SHACF_FILESYS_ONLY */);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
wxLogApiError(wxT("SHAutoComplete"), hr);
|
||||
|
|
@ -299,8 +273,4 @@ extern bool wxEnableFileNameAutoComplete(HWND hwnd)
|
|||
}
|
||||
|
||||
return true;
|
||||
#else
|
||||
wxUnusedVar(hwnd);
|
||||
return false;
|
||||
#endif // wxUSE_DYNLIB_CLASS/!wxUSE_DYNLIB_CLASS
|
||||
}
|
||||
|
|
|
|||
|
|
@ -637,24 +637,6 @@ wxWindowMSW::MSWShowWithEffect(bool show,
|
|||
if ( !wxWindowBase::Show(show) )
|
||||
return false;
|
||||
|
||||
typedef BOOL (WINAPI *AnimateWindow_t)(HWND, DWORD, DWORD);
|
||||
|
||||
static AnimateWindow_t s_pfnAnimateWindow = NULL;
|
||||
static bool s_initDone = false;
|
||||
if ( !s_initDone )
|
||||
{
|
||||
wxDynamicLibrary dllUser32(wxT("user32.dll"), wxDL_VERBATIM | wxDL_QUIET);
|
||||
wxDL_INIT_FUNC(s_pfn, AnimateWindow, dllUser32);
|
||||
|
||||
s_initDone = true;
|
||||
|
||||
// notice that it's ok to unload user32.dll here as it won't be really
|
||||
// unloaded, being still in use because we link to it statically too
|
||||
}
|
||||
|
||||
if ( !s_pfnAnimateWindow )
|
||||
return Show(show);
|
||||
|
||||
// Show() has a side effect of sending a WM_SIZE to the window, which helps
|
||||
// ensuring that it's laid out correctly, but AnimateWindow() doesn't do
|
||||
// this so send the event ourselves
|
||||
|
|
@ -719,7 +701,7 @@ wxWindowMSW::MSWShowWithEffect(bool show,
|
|||
return false;
|
||||
}
|
||||
|
||||
if ( !(*s_pfnAnimateWindow)(GetHwnd(), timeout, dwFlags) )
|
||||
if ( !::AnimateWindow(GetHwnd(), timeout, dwFlags) )
|
||||
{
|
||||
wxLogLastError(wxT("AnimateWindow"));
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
// TODO REMOVE
|
||||
|
|
@ -1 +0,0 @@
|
|||
// todo remove
|
||||
243
src/osx/cocoa/settings.mm
Normal file
243
src/osx/cocoa/settings.mm
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/osx/cocoa/settings.mm
|
||||
// Purpose: wxSettings
|
||||
// Author: David Elliott
|
||||
// Modified by: Tobias Taschner
|
||||
// Created: 2005/01/11
|
||||
// Copyright: (c) 2005 David Elliott
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#include "wx/settings.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/utils.h"
|
||||
#include "wx/gdicmn.h"
|
||||
#endif
|
||||
|
||||
#include "wx/osx/core/private.h"
|
||||
|
||||
#import <AppKit/NSColor.h>
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxSystemSettingsNative
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// colours
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
|
||||
{
|
||||
NSColor* sysColor = nil;
|
||||
switch( index )
|
||||
{
|
||||
case wxSYS_COLOUR_SCROLLBAR:
|
||||
sysColor = [NSColor scrollBarColor]; // color of slot
|
||||
break;
|
||||
case wxSYS_COLOUR_DESKTOP: // No idea how to get desktop background
|
||||
// fall through, window background is reasonable
|
||||
case wxSYS_COLOUR_ACTIVECAPTION: // No idea how to get this
|
||||
// fall through, window background is reasonable
|
||||
case wxSYS_COLOUR_INACTIVECAPTION: // No idea how to get this
|
||||
// fall through, window background is reasonable
|
||||
case wxSYS_COLOUR_MENU:
|
||||
case wxSYS_COLOUR_MENUBAR:
|
||||
case wxSYS_COLOUR_WINDOW:
|
||||
case wxSYS_COLOUR_WINDOWFRAME:
|
||||
case wxSYS_COLOUR_ACTIVEBORDER:
|
||||
case wxSYS_COLOUR_INACTIVEBORDER:
|
||||
case wxSYS_COLOUR_GRADIENTACTIVECAPTION:
|
||||
case wxSYS_COLOUR_GRADIENTINACTIVECAPTION:
|
||||
sysColor = [NSColor windowFrameColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_BTNFACE:
|
||||
sysColor = [NSColor controlColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_LISTBOX:
|
||||
sysColor = [NSColor controlBackgroundColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_BTNSHADOW:
|
||||
sysColor = [NSColor controlShadowColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_BTNTEXT:
|
||||
case wxSYS_COLOUR_MENUTEXT:
|
||||
case wxSYS_COLOUR_WINDOWTEXT:
|
||||
case wxSYS_COLOUR_CAPTIONTEXT:
|
||||
case wxSYS_COLOUR_INFOTEXT:
|
||||
case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
|
||||
case wxSYS_COLOUR_LISTBOXTEXT:
|
||||
sysColor = [NSColor controlTextColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_HIGHLIGHT:
|
||||
sysColor = [NSColor selectedControlColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_BTNHIGHLIGHT:
|
||||
sysColor = [NSColor controlHighlightColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_GRAYTEXT:
|
||||
sysColor = [NSColor disabledControlTextColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_3DDKSHADOW:
|
||||
sysColor = [NSColor controlShadowColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_3DLIGHT:
|
||||
sysColor = [NSColor controlHighlightColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_HIGHLIGHTTEXT:
|
||||
case wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT:
|
||||
sysColor = [NSColor alternateSelectedControlTextColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_INFOBK:
|
||||
// tooltip (bogus)
|
||||
sysColor = [NSColor windowBackgroundColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_APPWORKSPACE:
|
||||
// MDI window color (bogus)
|
||||
sysColor = [NSColor windowBackgroundColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_HOTLIGHT:
|
||||
// OSX doesn't change color on mouse hover
|
||||
sysColor = [NSColor controlTextColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_MENUHILIGHT:
|
||||
sysColor = [NSColor selectedMenuItemColor];
|
||||
break;
|
||||
case wxSYS_COLOUR_MAX:
|
||||
default:
|
||||
if(index>=wxSYS_COLOUR_MAX)
|
||||
{
|
||||
wxFAIL_MSG(wxT("Invalid system colour index"));
|
||||
return wxColour();
|
||||
}
|
||||
}
|
||||
|
||||
if ( sysColor )
|
||||
{
|
||||
CGColorRef cgCol = sysColor.CGColor;
|
||||
// wxColour takes ownership of CF reference
|
||||
CFRetain(cgCol);
|
||||
return wxColour(cgCol);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG(wxT("Unimplemented system colour index"));
|
||||
return wxColour();
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// fonts
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxFont wxSystemSettingsNative::GetFont(wxSystemFont index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case wxSYS_ANSI_VAR_FONT :
|
||||
case wxSYS_SYSTEM_FONT :
|
||||
case wxSYS_DEVICE_DEFAULT_FONT :
|
||||
case wxSYS_DEFAULT_GUI_FONT :
|
||||
{
|
||||
return *wxSMALL_FONT ;
|
||||
} ;
|
||||
break ;
|
||||
case wxSYS_OEM_FIXED_FONT :
|
||||
case wxSYS_ANSI_FIXED_FONT :
|
||||
case wxSYS_SYSTEM_FIXED_FONT :
|
||||
default :
|
||||
{
|
||||
return *wxNORMAL_FONT ;
|
||||
} ;
|
||||
break ;
|
||||
|
||||
}
|
||||
return *wxNORMAL_FONT;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// system metrics/features
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Get a system metric, e.g. scrollbar size
|
||||
int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow *WXUNUSED(win))
|
||||
{
|
||||
switch ( index )
|
||||
{
|
||||
case wxSYS_MOUSE_BUTTONS:
|
||||
return 2; // we emulate a two button mouse (ctrl + click = right button )
|
||||
|
||||
// TODO case wxSYS_BORDER_X:
|
||||
// TODO case wxSYS_BORDER_Y:
|
||||
// TODO case wxSYS_CURSOR_X:
|
||||
// TODO case wxSYS_CURSOR_Y:
|
||||
// TODO case wxSYS_DCLICK_X:
|
||||
// TODO case wxSYS_DCLICK_Y:
|
||||
// TODO case wxSYS_DRAG_X:
|
||||
// TODO case wxSYS_DRAG_Y:
|
||||
// TODO case wxSYS_EDGE_X:
|
||||
// TODO case wxSYS_EDGE_Y:
|
||||
|
||||
case wxSYS_HSCROLL_ARROW_X:
|
||||
return 16;
|
||||
case wxSYS_HSCROLL_ARROW_Y:
|
||||
return 16;
|
||||
case wxSYS_HTHUMB_X:
|
||||
return 16;
|
||||
|
||||
// TODO case wxSYS_ICON_X:
|
||||
// TODO case wxSYS_ICON_Y:
|
||||
// TODO case wxSYS_ICONSPACING_X:
|
||||
// TODO case wxSYS_ICONSPACING_Y:
|
||||
// TODO case wxSYS_WINDOWMIN_X:
|
||||
// TODO case wxSYS_WINDOWMIN_Y:
|
||||
// TODO case wxSYS_SCREEN_X:
|
||||
// TODO case wxSYS_SCREEN_Y:
|
||||
// TODO case wxSYS_FRAMESIZE_X:
|
||||
// TODO case wxSYS_FRAMESIZE_Y:
|
||||
// TODO case wxSYS_SMALLICON_X:
|
||||
// TODO case wxSYS_SMALLICON_Y:
|
||||
|
||||
case wxSYS_HSCROLL_Y:
|
||||
return 16;
|
||||
case wxSYS_VSCROLL_X:
|
||||
return 16;
|
||||
case wxSYS_VSCROLL_ARROW_X:
|
||||
return 16;
|
||||
case wxSYS_VSCROLL_ARROW_Y:
|
||||
return 16;
|
||||
case wxSYS_VTHUMB_Y:
|
||||
return 16;
|
||||
|
||||
// TODO case wxSYS_CAPTION_Y:
|
||||
// TODO case wxSYS_MENU_Y:
|
||||
// TODO case wxSYS_NETWORK_PRESENT:
|
||||
|
||||
case wxSYS_PENWINDOWS_PRESENT:
|
||||
return 0;
|
||||
|
||||
// TODO case wxSYS_SHOW_SOUNDS:
|
||||
|
||||
case wxSYS_SWAP_BUTTONS:
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return -1; // unsupported metric
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool wxSystemSettingsNative::HasFeature(wxSystemFeature index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case wxSYS_CAN_ICONIZE_FRAME:
|
||||
case wxSYS_CAN_DRAW_FRAME_DECORATIONS:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -204,6 +204,10 @@ wxWidgetImplType* wxWidgetImpl::CreateSearchControl( wxSearchCtrl* wxpeer,
|
|||
{
|
||||
NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
|
||||
wxNSSearchField* v = [[wxNSSearchField alloc] initWithFrame:r];
|
||||
|
||||
// Make it behave consistently with the single line wxTextCtrl
|
||||
[[v cell] setScrollable:YES];
|
||||
|
||||
[[v cell] setSendsWholeSearchString:YES];
|
||||
// per wx default cancel is not shown
|
||||
[[v cell] setCancelButtonCell:nil];
|
||||
|
|
|
|||
129
src/osx/cocoa/stdpaths.mm
Normal file
129
src/osx/cocoa/stdpaths.mm
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/osx/cocoa/stdpaths.mm
|
||||
// Purpose: wxStandardPaths for Cocoa
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2015-09-09
|
||||
// Copyright: (c) 2015 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ============================================================================
|
||||
// declarations
|
||||
// ============================================================================
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#if wxUSE_STDPATHS
|
||||
|
||||
#include "wx/stdpaths.h"
|
||||
#include "wx/osx/private.h"
|
||||
#include "wx/osx/core/cfstring.h"
|
||||
|
||||
#import <CoreFoundation/CoreFoundation.h>
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
// ============================================================================
|
||||
|
||||
static wxString GetFMDirectory(
|
||||
NSSearchPathDirectory directory,
|
||||
NSSearchPathDomainMask domainMask)
|
||||
{
|
||||
NSURL* url = [[NSFileManager defaultManager] URLForDirectory:directory
|
||||
inDomain:domainMask
|
||||
appropriateForURL:nil
|
||||
create:NO error:nil];
|
||||
return wxCFStringRef::AsString(url.path);
|
||||
}
|
||||
|
||||
wxStandardPaths::wxStandardPaths()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
wxStandardPaths::~wxStandardPaths()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetExecutablePath() const
|
||||
{
|
||||
return wxCFStringRef::AsString([NSBundle mainBundle].executablePath);
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetConfigDir() const
|
||||
{
|
||||
return GetFMDirectory(NSLibraryDirectory, NSLocalDomainMask) + "/Preferences";
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetUserConfigDir() const
|
||||
{
|
||||
return GetFMDirectory(NSLibraryDirectory, NSUserDomainMask) + "/Preferences";
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetDataDir() const
|
||||
{
|
||||
return wxCFStringRef::AsString([NSBundle mainBundle].sharedSupportPath);
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetLocalDataDir() const
|
||||
{
|
||||
return AppendAppInfo(GetFMDirectory(NSApplicationSupportDirectory, NSLocalDomainMask));
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetUserDataDir() const
|
||||
{
|
||||
return AppendAppInfo(GetFMDirectory(NSApplicationSupportDirectory, NSUserDomainMask));
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetPluginsDir() const
|
||||
{
|
||||
return wxCFStringRef::AsString([NSBundle mainBundle].builtInPlugInsPath);
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetResourcesDir() const
|
||||
{
|
||||
return wxCFStringRef::AsString([NSBundle mainBundle].resourcePath);
|
||||
}
|
||||
|
||||
wxString
|
||||
wxStandardPaths::GetLocalizedResourcesDir(const wxString& lang,
|
||||
ResourceCat category) const
|
||||
{
|
||||
return wxStandardPathsBase::
|
||||
GetLocalizedResourcesDir(lang, category) + wxT(".lproj");
|
||||
}
|
||||
|
||||
wxString wxStandardPaths::GetUserDir(Dir userDir) const
|
||||
{
|
||||
NSSearchPathDirectory dirType;
|
||||
switch (userDir)
|
||||
{
|
||||
case Dir_Desktop:
|
||||
dirType = NSDesktopDirectory;
|
||||
break;
|
||||
case Dir_Downloads:
|
||||
dirType = NSDownloadsDirectory;
|
||||
break;
|
||||
case Dir_Music:
|
||||
dirType = NSMusicDirectory;
|
||||
break;
|
||||
case Dir_Pictures:
|
||||
dirType = NSPicturesDirectory;
|
||||
break;
|
||||
case Dir_Videos:
|
||||
dirType = NSMoviesDirectory;
|
||||
break;
|
||||
default:
|
||||
dirType = NSDocumentDirectory;
|
||||
break;
|
||||
}
|
||||
|
||||
return GetFMDirectory(dirType, NSUserDomainMask);
|
||||
}
|
||||
|
||||
#endif // wxUSE_STDPATHS
|
||||
|
|
@ -96,17 +96,62 @@ wxString wxStandardPathsCF::GetFromFunc(wxCFURLRef (*func)(wxCFBundleRef)) const
|
|||
return ret;
|
||||
}
|
||||
|
||||
wxString wxStandardPathsCF::GetDocumentsDir() const
|
||||
wxString wxStandardPathsCF::GetUserDir(Dir userDir) const
|
||||
{
|
||||
#if defined( __WXMAC__ ) && wxOSX_USE_CARBON
|
||||
OSType folderType;
|
||||
switch (userDir)
|
||||
{
|
||||
case Dir_Desktop:
|
||||
folderType = kDesktopFolderType;
|
||||
break;
|
||||
case Dir_Downloads:
|
||||
folderType = kDownloadsFolderType;
|
||||
break;
|
||||
case Dir_Music:
|
||||
folderType = kMusicDocumentsFolderType;
|
||||
break;
|
||||
case Dir_Pictures:
|
||||
folderType = kPictureDocumentsFolderType;
|
||||
break;
|
||||
case Dir_Videos:
|
||||
folderType = kMovieDocumentsFolderType;
|
||||
break;
|
||||
default:
|
||||
folderType = kDocumentsFolderType;
|
||||
break;
|
||||
}
|
||||
|
||||
return wxMacFindFolderNoSeparator
|
||||
(
|
||||
kUserDomain,
|
||||
kDocumentsFolderType,
|
||||
folderType,
|
||||
kCreateFolder
|
||||
);
|
||||
#else
|
||||
return wxFileName::GetHomeDir() + wxT("/Documents");
|
||||
wxString userDirName;
|
||||
switch (userDir)
|
||||
{
|
||||
case Dir_Desktop:
|
||||
userDirName = "Desktop";
|
||||
break;
|
||||
case Dir_Downloads:
|
||||
userDirName = "Downloads";
|
||||
break;
|
||||
case Dir_Music:
|
||||
userDirName = "Music";
|
||||
break;
|
||||
case Dir_Pictures:
|
||||
userDirName = "Pictures";
|
||||
break;
|
||||
case Dir_Videos:
|
||||
userDirName = "Movies";
|
||||
break;
|
||||
default:
|
||||
userDirName = "Documents";
|
||||
break;
|
||||
}
|
||||
return wxFileName::GetHomeDir() + "/" + userDirName;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue