From 82a16d7e5e5c83e95a4caa7314de2dbfbd1debdc Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 24 Nov 2004 21:24:09 +0000 Subject: [PATCH] added (and documented) msw.xp-tab-ok option git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/sysopt.tex | 19 +++++++++++++++++-- src/msw/notebook.cpp | 24 ++++++++++++++---------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/docs/latex/wx/sysopt.tex b/docs/latex/wx/sysopt.tex index 6ccef0ac21..d4d610c500 100644 --- a/docs/latex/wx/sysopt.tex +++ b/docs/latex/wx/sysopt.tex @@ -15,10 +15,16 @@ These options are currently recognised by wxWidgets: In some circumstances the MaskBlt function can be slower than using the fallback code, especially if using DC cacheing. By default, MaskBlt will be used where it is implemented by the operating system and driver. } +\twocolitem{msw.xp-tab-ok}{(wxMSW under Windows XP or later only) Some versions +of Windows XP don't render \helpref{wxNotebook}{wxnotebook} controls with tabs +not on the top of it correctly, so wxWidgets by default always uses +\texttt{wxTOP} style under XP. If you are sure that this problem will not be +present on your users machines, set this option to a non zero value to enable +tabs with non default orientation.} \twocolitem{mgl.aa-threshold}{(wxMGL only) Set this integer option to point size below which fonts are not antialiased. Default: 10. } -\twocolitem{mgl.aa-threshold}{(wxMGL only) Screen refresh rate in Hz. +\twocolitem{mgl.screen-refresh}{(wxMGL only) Screen refresh rate in Hz. Reasonable default is used if not specified. } \end{twocollist} @@ -36,6 +42,7 @@ is wxUSE\_SYSTEM\_OPTIONS. \latexignore{\rtfignore{\wxheading{Members}}} + \membersection{wxSystemOptions::wxSystemOptions}\label{wxsystemoptionsctor} \func{}{wxSystemOptions}{\void} @@ -43,35 +50,42 @@ is wxUSE\_SYSTEM\_OPTIONS. Default constructor. You don't need to create an instance of wxSystemOptions since all of its functions are static. + \membersection{wxSystemOptions::GetOption}\label{wxsystemoptionsgetoption} \constfunc{wxString}{GetOption}{\param{const wxString\&}{ name}} Gets an option. The function is case-insensitive to {\it name}. +Returns empty string if the option hasn't been set. + \wxheading{See also} \helpref{wxSystemOptions::SetOption}{wxsystemoptionssetoption},\rtfsp \helpref{wxSystemOptions::GetOptionInt}{wxsystemoptionsgetoptionint},\rtfsp \helpref{wxSystemOptions::HasOption}{wxsystemoptionshasoption} + \membersection{wxSystemOptions::GetOptionInt}\label{wxsystemoptionsgetoptionint} \constfunc{int}{GetOptionInt}{\param{const wxString\&}{ name}} Gets an option as an integer. The function is case-insensitive to {\it name}. +If the option hasn't been set, this function returns $0$. + \wxheading{See also} \helpref{wxSystemOptions::SetOption}{wxsystemoptionssetoption},\rtfsp \helpref{wxSystemOptions::GetOption}{wxsystemoptionsgetoption},\rtfsp \helpref{wxSystemOptions::HasOption}{wxsystemoptionshasoption} + \membersection{wxSystemOptions::HasOption}\label{wxsystemoptionshasoption} \constfunc{bool}{HasOption}{\param{const wxString\&}{ name}} -Returns true if the given option is present. The function is case-insensitive to {\it name}. +Returns \true if the given option is present. The function is case-insensitive to {\it name}. \wxheading{See also} @@ -79,6 +93,7 @@ Returns true if the given option is present. The function is case-insensitive to \helpref{wxSystemOptions::GetOption}{wxsystemoptionsgetoption},\rtfsp \helpref{wxSystemOptions::GetOptionInt}{wxsystemoptionsgetoptionint} + \membersection{wxSystemOptions::SetOption}\label{wxsystemoptionssetoption} \func{void}{SetOption}{\param{const wxString\&}{ name}, \param{const wxString\&}{ value}} diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index eef37234b2..b060534c71 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -33,6 +33,7 @@ #include "wx/event.h" #include "wx/control.h" #include "wx/notebook.h" +#include "wx/sysopt.h" #include "wx/app.h" #include "wx/msw/private.h" @@ -243,18 +244,21 @@ bool wxNotebook::Create(wxWindow *parent, long style, const wxString& name) { - // Does ComCtl32 support non-top tabs? - int verComCtl32 = wxApp::GetComCtl32Version(); - if ( verComCtl32 < 470 || verComCtl32 >= 600 ) + // some versions of comctl32.dll 6.0 included with Windows XP don't + // support non-top tabs (the control is simply not rendered correctly) but + // we can't detect which ones, so be pessimistic by default and disable non + // top tabs under XP but allow the user to override this by using a special + // system option + bool nonTopTabsOk = wxSystemOptions::GetOptionInt(_T("msw.xp-tab-ok")) != 0; + if ( !nonTopTabsOk ) { - if (style & wxNB_BOTTOM) - style &= ~wxNB_BOTTOM; - - if (style & wxNB_LEFT) - style &= ~wxNB_LEFT; + int verComCtl32 = wxApp::GetComCtl32Version(); + nonTopTabsOk = verComCtl32 < 470 || verComCtl32 >= 600; + } - if (style & wxNB_RIGHT) - style &= ~wxNB_RIGHT; + if ( !nonTopTabsOk ) + { + style &= ~(wxNB_BOTTOM | wxNB_LEFT | wxNB_RIGHT); } if ( !CreateControl(parent, id, pos, size, style | wxTAB_TRAVERSAL, -- 2.45.2