From 3b96ea1ac54b735c3a018980cd2ac652c30aa129 Mon Sep 17 00:00:00 2001
From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= <vslavik@fastmail.fm>
Date: Thu, 14 Feb 2008 13:40:47 +0000
Subject: [PATCH] added wxWindow::Set/GetMin/MaxClientSize convenience
 functions

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51788 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/window.tex | 81 +++++++++++++++++++++++++++++++++++++++-
 include/wx/window.h      | 12 ++++++
 2 files changed, 91 insertions(+), 2 deletions(-)

diff --git a/docs/latex/wx/window.tex b/docs/latex/wx/window.tex
index ed85d9d0de..41cc692700 100644
--- a/docs/latex/wx/window.tex
+++ b/docs/latex/wx/window.tex
@@ -1160,12 +1160,33 @@ the button text. This function can be useful for meta-programs (such as testing
 tools or special-needs access programs) which need to identify windows
 by name.
 
+
+\membersection{wxWindow::GetMaxClientSize}\label{wxwindowgetmaxclientsize}
+
+\constfunc{wxSize}{GetMaxClientSize}{\void}
+
+Returns the maximum size of window's client area. 
+This is an indication to the sizer layout mechanism that this is the maximum
+possible size as well as the upper bound on window's size settable using
+\helpref{SetClientSize}{wxwindowsetclientsize}. 
+
+\wxheading{See also}
+
+\helpref{wxWindow::GetMaxSize}{wxwindowgetmaxsize}
+
+
 \membersection{wxWindow::GetMaxSize}\label{wxwindowgetmaxsize}
 
 \constfunc{wxSize}{GetMaxSize}{\void}
 
-Returns the maximum size of the window, an indication to the sizer layout mechanism
-that this is the maximum possible size. 
+Returns the maximum size of the window. This is an indication to the sizer
+layout mechanism that this is the maximum possible size as well as the upper
+bound on window's size settable using \helpref{SetSize}{wxwindowsetsize}. 
+
+\wxheading{See also}
+
+\helpref{wxWindow::GetMaxClientSize}{wxwindowgetmaxclientsize}
+
 
 \membersection{wxWindow::GetMinSize}\label{wxwindowgetminsize}
 
@@ -1176,6 +1197,26 @@ that this is the minimum required size. It normally just returns the value set
 by \helpref{SetMinSize}{wxwindowsetminsize}, but it can be overridden to do the
 calculation on demand.
 
+\wxheading{See also}
+
+\helpref{wxWindow::GetMinClientSize}{wxwindowgetminclientsize}
+
+
+\membersection{wxWindow::GetMinClientSize}\label{wxwindowgetminclientsize}
+
+\constfunc{virtual wxSize}{GetMinClientSize}{\void}
+
+Returns the minimum size of window's client area, an indication to the sizer
+layout mechanism that this is the minimum required size of its client area. It
+normally just returns the value set by
+\helpref{SetMinClientSize}{wxwindowsetminclientsize}, but it can be overridden
+to do the calculation on demand.
+
+\wxheading{See also}
+
+\helpref{wxWindow::GetMinSize}{wxwindowgetminsize}
+
+
 \membersection{wxWindow::GetName}\label{wxwindowgetname}
 
 \constfunc{virtual wxString }{GetName}{\void}
@@ -3299,6 +3340,23 @@ Sets the window's label.
 Sets the maximum size of the window, to indicate to the sizer layout mechanism
 that this is the maximum possible size.
 
+\wxheading{See also}
+
+\helpref{wxWindow::SetMaxClientSize}{wxwindowsetmaxclientsize}
+
+
+\membersection{wxWindow::SetMaxClientSize}\label{wxwindowsetmaxclientsize}
+
+\func{void}{SetMaxClientSize}{\param{const wxSize\& }{size}}
+
+Sets the maximum \emph{client} size of the window, to indicate to the sizer
+layout mechanism that this is the maximum possible size of its client area.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetMaxSize}{wxwindowsetmaxsize}
+
+
 \membersection{wxWindow::SetMinSize}\label{wxwindowsetminsize}
 
 \func{void}{SetMinSize}{\param{const wxSize\& }{size}}
@@ -3308,6 +3366,25 @@ that this is the minimum required size. You may need to call this
 if you change the window size after construction and before adding
 to its parent sizer.
 
+\wxheading{See also}
+
+\helpref{wxWindow::SetMinClientSize}{wxwindowsetminclientsize}
+
+
+\membersection{wxWindow::SetMinClientSize}\label{wxwindowsetminclientsize}
+
+\func{void}{SetMinClientSize}{\param{const wxSize\& }{size}}
+
+Sets the minimum \emph{client} size of the window, to indicate to the sizer
+layout mechanism that this is the minimum required size of window's client
+area. You may need to call this if you change the window size after
+construction and before adding to its parent sizer.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetMinSize}{wxwindowsetminsize}
+
+
 \membersection{wxWindow::SetName}\label{wxwindowsetname}
 
 \func{virtual void}{SetName}{\param{const wxString\& }{name}}
diff --git a/include/wx/window.h b/include/wx/window.h
index 218e2ce79e..33d33ce50d 100644
--- a/include/wx/window.h
+++ b/include/wx/window.h
@@ -449,12 +449,24 @@ public:
     virtual void SetMinSize(const wxSize& minSize) { m_minWidth = minSize.x; m_minHeight = minSize.y; }
     virtual void SetMaxSize(const wxSize& maxSize) { m_maxWidth = maxSize.x; m_maxHeight = maxSize.y; }
 
+        // Like Set*Size, but for client, not window, size
+    virtual void SetMinClientSize(const wxSize& size)
+        { SetMinSize(ClientToWindowSize(size)); }
+    virtual void SetMaxClientSize(const wxSize& size)
+        { SetMaxSize(ClientToWindowSize(size)); }
+
         // Override these methods to impose restrictions on min/max size.
         // The easier way is to call SetMinSize() and SetMaxSize() which
         // will have the same effect. Doing both is non-sense.
     virtual wxSize GetMinSize() const { return wxSize(m_minWidth, m_minHeight); }
     virtual wxSize GetMaxSize() const { return wxSize(m_maxWidth, m_maxHeight); }
 
+        // Like Get*Size, but for client, not window, size
+    virtual wxSize GetMinClientSize() const
+        { return WindowToClientSize(GetMinSize()); }
+    virtual wxSize GetMaxClientSize() const
+        { return WindowToClientSize(GetMaxSize()); }
+
         // Get the min and max values one by one
     int GetMinWidth() const { return GetMinSize().x; }
     int GetMinHeight() const { return GetMinSize().y; }
-- 
2.50.0

