]> git.saurik.com Git - wxWidgets.git/commitdiff
added a small helper ToggleWindowStyle() function
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 4 Dec 2006 11:10:59 +0000 (11:10 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 4 Dec 2006 11:10:59 +0000 (11:10 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43796 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/window.tex
include/wx/window.h
src/common/wincmn.cpp

index cc3f221ea84b4518db7af3059c6d24b9cac762e5..7ff0b460813005c68050ffe3c78862cae566180e 100644 (file)
@@ -3443,7 +3443,8 @@ Identical to \helpref{SetWindowStyleFlag}{wxwindowsetwindowstyleflag}.
 
 Sets the style of the window. Please note that some styles cannot be changed
 after the window creation and that \helpref{Refresh()}{wxwindowrefresh} might
 
 Sets the style of the window. Please note that some styles cannot be changed
 after the window creation and that \helpref{Refresh()}{wxwindowrefresh} might
-be called after changing the others for the change to take place immediately.
+need to be be called after changing the others for the change to take place
+immediately.
 
 See \helpref{Window styles}{windowstyles} for more information about flags.
 
 
 See \helpref{Window styles}{windowstyles} for more information about flags.
 
@@ -3523,6 +3524,23 @@ exactly the same number of times as \helpref{Freeze}{wxwindowfreeze}.
 \helpref{wxWindowUpdateLocker}{wxwindowupdatelocker}
 
 
 \helpref{wxWindowUpdateLocker}{wxwindowupdatelocker}
 
 
+\membersection{wxWindow::ToggleWindowStyle}\label{wxwindowtogglewindowstyle}
+
+\func{void}{ToggleWindowStyle}{\param{int }{flag}}
+
+Turns the given \arg{flag} on if it's currently turned off and vice versa.
+This function cannot be used if the value of the flag is $0$ (which is often
+the case for default flags).
+
+Also, please notice that not all styles can be changed after the control
+creation.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetWindowStyleFlag}{wxwindowsetwindowstyleflag},\rtfsp
+\helpref{wxWindow::HasFlag}{wxwindowhasflag}
+
+
 \membersection{wxWindow::TransferDataFromWindow}\label{wxwindowtransferdatafromwindow}
 
 \func{virtual bool}{TransferDataFromWindow}{\void}
 \membersection{wxWindow::TransferDataFromWindow}\label{wxwindowtransferdatafromwindow}
 
 \func{virtual bool}{TransferDataFromWindow}{\void}
index acff5abc8e9a37a9c26493e1ceaf242a6d46bba5..30f4f2f57c0a5e510aadc825ab2ccdd276008fbf 100644 (file)
@@ -506,9 +506,14 @@ public:
     void SetWindowStyle( long style ) { SetWindowStyleFlag(style); }
     long GetWindowStyle() const { return GetWindowStyleFlag(); }
 
     void SetWindowStyle( long style ) { SetWindowStyleFlag(style); }
     long GetWindowStyle() const { return GetWindowStyleFlag(); }
 
+        // check if the flag is set
     bool HasFlag(int flag) const { return (m_windowStyle & flag) != 0; }
     virtual bool IsRetained() const { return HasFlag(wxRETAINED); }
 
     bool HasFlag(int flag) const { return (m_windowStyle & flag) != 0; }
     virtual bool IsRetained() const { return HasFlag(wxRETAINED); }
 
+        // turn the flag on if it had been turned off before and vice versa,
+        // return true if the flag is currently turned on
+    bool ToggleWindowStyle(int flag);
+
         // extra style: the less often used style bits which can't be set with
         // SetWindowStyleFlag()
     virtual void SetExtraStyle(long exStyle) { m_exStyle = exStyle; }
         // extra style: the less often used style bits which can't be set with
         // SetWindowStyleFlag()
     virtual void SetExtraStyle(long exStyle) { m_exStyle = exStyle; }
index a2f7a427662b124bf8aa152df45525adf4ae3b84..8c393888f31b12c11ab58d9c817ddbb4e13d980e 100644 (file)
@@ -274,6 +274,28 @@ bool wxWindowBase::CreateBase(wxWindowBase *parent,
     return true;
 }
 
     return true;
 }
 
+bool wxWindowBase::ToggleWindowStyle(int flag)
+{
+    wxASSERT_MSG( flag, _T("flags with 0 value can't be toggled") );
+
+    bool rc;
+    long style = GetWindowStyleFlag();
+    if ( style & flag )
+    {
+        style &= ~flag;
+        rc = false;
+    }
+    else // currently off
+    {
+        style |= flag;
+        rc = true;
+    }
+
+    SetWindowStyleFlag(style);
+
+    return rc;
+}
+
 // ----------------------------------------------------------------------------
 // destruction
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // destruction
 // ----------------------------------------------------------------------------
@@ -301,7 +323,7 @@ wxWindowBase::~wxWindowBase()
     {
         wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent((wxWindow*)this),
                                               wxTopLevelWindow);
     {
         wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent((wxWindow*)this),
                                               wxTopLevelWindow);
-        
+
         if ( tlw && tlw->GetDefaultItem() == this )
             tlw->SetDefaultItem(NULL);
         if ( tlw && tlw->GetTmpDefaultItem() == this )
         if ( tlw && tlw->GetDefaultItem() == this )
             tlw->SetDefaultItem(NULL);
         if ( tlw && tlw->GetTmpDefaultItem() == this )