]> git.saurik.com Git - wxWidgets.git/commitdiff
added a tiny class to call Freeze/Thaw in ctor/dtor
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 7 Mar 2006 01:50:21 +0000 (01:50 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 7 Mar 2006 01:50:21 +0000 (01:50 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/window.tex
docs/latex/wx/wupdlock.tex [new file with mode: 0644]
include/wx/wupdlock.h [new file with mode: 0644]

index a718081c985817fafb4c655ac3b874ca3fd1617d..ce35f652a9b1a466f44a4bde8a02eb97d3eee171 100644 (file)
@@ -689,6 +689,10 @@ a wxTextCtrl under wxGTK) but is not implemented on all platforms nor for all
 controls so it is mostly just a hint to wxWidgets and not a mandatory
 directive.
 
+\wxheading{See also}
+
+\helpref{wxWindowUpdateLocker}{wxwindowupdatelocker}
+
 
 \membersection{wxWindow::GetAcceleratorTable}\label{wxwindowgetacceleratortable}
 
@@ -3411,6 +3415,10 @@ Reenables window updating after a previous call to
 \helpref{Freeze}{wxwindowfreeze}. To really thaw the control, it must be called
 exactly the same number of times as \helpref{Freeze}{wxwindowfreeze}.
 
+\wxheading{See also}
+
+\helpref{wxWindowUpdateLocker}{wxwindowupdatelocker}
+
 
 \membersection{wxWindow::TransferDataFromWindow}\label{wxwindowtransferdatafromwindow}
 
diff --git a/docs/latex/wx/wupdlock.tex b/docs/latex/wx/wupdlock.tex
new file mode 100644 (file)
index 0000000..1ca160a
--- /dev/null
@@ -0,0 +1,62 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        wupdlock.tex
+%% Purpose:     wxWindowUpdateLocker documentation
+%% Author:      Vadim Zeitlin
+%% Modified by:
+%% Created:     2006-03-06
+%% RCS-ID:      $Id$
+%% Copyright:   (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxWindowUpdateLocker}}\label{wxwindowupdatelocker}
+
+This tiny class prevents redrawing of a \helpref{wxWindow}{wxwindow} during its
+lifetime by using \helpref{wxWindow::Freeze}{wxwindowfreeze} and 
+\helpref{Thaw}{wxwindowthaw} methods. It is typically used for creating
+automatic objects to temporarily suppress window updates before a batch of
+operations is performed:
+{\small
+\begin{verbatim}
+    void MyFrame::Foo()
+    {
+        m_text = new wxTextCtrl(this, ...);
+
+        wxWindowUpdateLocker noUpdates(m_text);
+        m_text->AppendText();
+        ... many other operations with m_text...
+        m_text->WriteText();
+    }
+\end{verbatim}
+}
+
+Using this class is easier and safer than calling 
+\helpref{Freeze}{wxwindowfreeze} and \helpref{Thaw}{wxwindowthaw} because you
+don't risk to forget calling the latter.
+
+\wxheading{Derived from}
+
+None.
+
+\wxheading{Include files}
+
+<wx/wupdlock.h>
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxWindowUpdateLocker::wxWindowUpdateLocker}\label{wxwindowupdatelockerctor}
+
+\func{}{wxWindowUpdateLocker}{\param{wxWindow *}{win}}
+
+Creates an object preventing the updates of the specified \arg{win}. The
+parameter must be non-\NULL and the window must exist for longer than
+wxWindowUpdateLocker object itself.
+
+
+\membersection{wxWindowUpdateLocker::\destruct{wxWindowUpdateLocker}}\label{wxwindowupdatelockerdtor}
+
+\func{}{\destruct{wxWindowUpdateLocker}}{\void}
+
+Destructor reenables updates for the window this object is associated with.
+
diff --git a/include/wx/wupdlock.h b/include/wx/wupdlock.h
new file mode 100644 (file)
index 0000000..cc1b423
--- /dev/null
@@ -0,0 +1,37 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/wupdlock.h
+// Purpose:     wxWindowUpdateLocker prevents window redrawing
+// Author:      Vadim Zeitlin
+// Created:     2006-03-06
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_WUPDLOCK_H_
+#define _WX_WUPDLOCK_H_
+
+#include "wx/window.h"
+
+// ----------------------------------------------------------------------------
+// wxWindowUpdateLocker prevents updates to the window during its lifetime
+// ----------------------------------------------------------------------------
+
+class wxWindowUpdateLocker
+{
+public:
+    // create an object preventing updates of the given window (which must have
+    // a lifetime at least as great as ours)
+    wxWindowUpdateLocker(wxWindow *win) : m_win(win) { win->Freeze(); }
+
+    // dtor thaws the window to permit updates again
+    ~wxWindowUpdateLocker() { m_win->Thaw(); }
+
+private:
+    wxWindow *m_win;
+
+    DECLARE_NO_COPY_CLASS(wxWindowUpdateLocker)
+};
+
+#endif // _WX_WUPDLOCK_H_
+