added a tiny class to call Freeze/Thaw in ctor/dtor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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}
|
||||
|
||||
|
62
docs/latex/wx/wupdlock.tex
Normal file
62
docs/latex/wx/wupdlock.tex
Normal file
@@ -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.
|
||||
|
37
include/wx/wupdlock.h
Normal file
37
include/wx/wupdlock.h
Normal file
@@ -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_
|
||||
|
Reference in New Issue
Block a user