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
|
controls so it is mostly just a hint to wxWidgets and not a mandatory
|
||||||
directive.
|
directive.
|
||||||
|
|
||||||
|
\wxheading{See also}
|
||||||
|
|
||||||
|
\helpref{wxWindowUpdateLocker}{wxwindowupdatelocker}
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxWindow::GetAcceleratorTable}\label{wxwindowgetacceleratortable}
|
\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
|
\helpref{Freeze}{wxwindowfreeze}. To really thaw the control, it must be called
|
||||||
exactly the same number of times as \helpref{Freeze}{wxwindowfreeze}.
|
exactly the same number of times as \helpref{Freeze}{wxwindowfreeze}.
|
||||||
|
|
||||||
|
\wxheading{See also}
|
||||||
|
|
||||||
|
\helpref{wxWindowUpdateLocker}{wxwindowupdatelocker}
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxWindow::TransferDataFromWindow}\label{wxwindowtransferdatafromwindow}
|
\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