From: Robert Roebling Date: Mon, 30 Oct 2006 13:18:35 +0000 (+0000) Subject: Make SetMinSize() and SetMaxSize() virtual so they X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a1b05a60e14fe5a1309b7d46c5c87b25b1af3705 Make SetMinSize() and SetMaxSize() virtual so they can be overridden in wxTLW to set WM hints. Actually did that for wxGTK, nothing required for wxMSW, no idea about wxMac. Documented this in tlw.tex. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42718 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/latex/wx/tlw.tex b/docs/latex/wx/tlw.tex index 75320a9040..a62ba361a4 100644 --- a/docs/latex/wx/tlw.tex +++ b/docs/latex/wx/tlw.tex @@ -280,6 +280,20 @@ Unavailable on full keyboard machines. \helpref{wxTopLevelWindow::SetRightMenu}{wxtoplevelwindowsetrightmenu}. +\membersection{wxTopLevelWindow::SetMaxSize}\label{wxtoplevelwindowsetmaxsize} + +\func{void}{SetMaxSize}{\param{const wxSize\& }{size}} + +A simpler interface for setting the size hints than +\helpref{SetSizeHints}{wxtoplevelwindowsetsizehints}. + +\membersection{wxTopLevelWindow::SetMinSize}\label{wxtoplevelwindowsetminsize} + +\func{void}{SetMinSize}{\param{const wxSize\& }{size}} + +A simpler interface for setting the size hints than +\helpref{SetSizeHints}{wxtoplevelwindowsetsizehints}. + \membersection{wxTopLevelWindow::SetSizeHints}\label{wxtoplevelwindowsetsizehints} \func{virtual void}{SetSizeHints}{\param{int}{ minW}, \param{int}{ minH}, \param{int}{ maxW=-1}, \param{int}{ maxH=-1}, diff --git a/include/wx/gtk/toplevel.h b/include/wx/gtk/toplevel.h index 9886b2a8b1..6ebb2001c8 100644 --- a/include/wx/gtk/toplevel.h +++ b/include/wx/gtk/toplevel.h @@ -121,6 +121,12 @@ protected: int width, int height, int sizeFlags = wxSIZE_AUTO); + // a different API for SetSizeHints + virtual void SetMinSize(const wxSize& minSize); + virtual void SetMaxSize(const wxSize& maxSize); + + // give hints to the Window Manager for how the size + // of the TLW can be changed by dragging virtual void DoSetSizeHints( int minW, int minH, int maxW = wxDefaultCoord, int maxH = wxDefaultCoord, int incW = wxDefaultCoord, int incH = wxDefaultCoord ); diff --git a/include/wx/window.h b/include/wx/window.h index c545e576a0..a9179c5d27 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -420,17 +420,24 @@ public: SetVirtualSizeHints(minSize.x, minSize.y, maxSize.x, maxSize.y); } - int GetMinWidth() const { return GetMinSize().x; } - int GetMinHeight() const { return GetMinSize().y; } - int GetMaxWidth() const { return GetMaxSize().x; } - int GetMaxHeight() const { return GetMaxSize().y; } - // Override these methods to impose restrictions on min/max size + // Call these to override what GetBestSize() returns. This + // method is only virtual because it is overriden in wxTLW + // as a different API for SetSizeHints(). + 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; } + + // 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); } - void SetMinSize(const wxSize& minSize) { m_minWidth = minSize.x; m_minHeight = minSize.y; } - void SetMaxSize(const wxSize& maxSize) { m_maxWidth = maxSize.x; m_maxHeight = maxSize.y; } + // Get the min and max values one by one + int GetMinWidth() const { return GetMinSize().x; } + int GetMinHeight() const { return GetMinSize().y; } + int GetMaxWidth() const { return GetMaxSize().x; } + int GetMaxHeight() const { return GetMaxSize().y; } // Methods for accessing the virtual size of a window. For most diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 85f4b536dd..a0d2574eb5 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -958,6 +958,16 @@ void wxTopLevelWindowGTK::DoSetClientSize( int width, int height ) width + m_miniEdge*2, height + m_miniEdge*2 + m_miniTitle, 0); } +void wxTopLevelWindowGTK::SetMinSize(const wxSize& minSize) +{ + SetSizeHints( minSize.x, minSize.y, GetMaxWidth(), GetMaxHeight() ); +} + +void wxTopLevelWindowGTK::SetMaxSize(const wxSize& maxSize) +{ + SetSizeHints( GetMinWidth(), GetMinHeight(), maxSize.x, maxSize.y ); +} + void wxTopLevelWindowGTK::DoSetSizeHints( int minW, int minH, int maxW, int maxH, int incW, int incH )