return the restored window size from GetSize() when window is minimized (for consistency with wxGTK and also for convenience)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -36,6 +36,7 @@ wxGTK:
|
|||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
- Fixed infinite loop in wxThread::Wait() in console applications
|
- Fixed infinite loop in wxThread::Wait() in console applications
|
||||||
|
- Return the restored window size from GetSize() when window is minimized
|
||||||
|
|
||||||
|
|
||||||
2.8.2
|
2.8.2
|
||||||
|
@@ -869,9 +869,9 @@ a 2-element list {\tt (width, height)}.}
|
|||||||
|
|
||||||
\constfunc{wxSize}{GetClientSize}{\void}
|
\constfunc{wxSize}{GetClientSize}{\void}
|
||||||
|
|
||||||
This gets the size of the window `client area' in pixels.
|
Returns the size of the window `client area' in pixels. The client area is the
|
||||||
The client area is the area which may be drawn on by the programmer,
|
area which may be drawn on by the programmer, excluding title bar, border,
|
||||||
excluding title bar, border, scrollbars, etc.
|
scrollbars, etc.
|
||||||
|
|
||||||
\wxheading{Parameters}
|
\wxheading{Parameters}
|
||||||
|
|
||||||
@@ -1246,8 +1246,11 @@ Returns the built-in scrollbar thumb size.
|
|||||||
|
|
||||||
\constfunc{wxSize}{GetSize}{\void}
|
\constfunc{wxSize}{GetSize}{\void}
|
||||||
|
|
||||||
This gets the size of the entire window in pixels,
|
Returns the size of the entire window in pixels, including title bar, border,
|
||||||
including title bar, border, scrollbars, etc.
|
scrollbars, etc.
|
||||||
|
|
||||||
|
Note that if this window is a top-level one and it is currently minimized, the
|
||||||
|
returned size is the restored window size, not the size of the window icon.
|
||||||
|
|
||||||
\wxheading{Parameters}
|
\wxheading{Parameters}
|
||||||
|
|
||||||
|
@@ -55,7 +55,7 @@ public:
|
|||||||
virtual void SetIcon(const wxIcon& icon);
|
virtual void SetIcon(const wxIcon& icon);
|
||||||
virtual void SetIcons(const wxIconBundle& icons );
|
virtual void SetIcons(const wxIconBundle& icons );
|
||||||
virtual void Restore();
|
virtual void Restore();
|
||||||
|
|
||||||
virtual void SetLayoutDirection(wxLayoutDirection dir);
|
virtual void SetLayoutDirection(wxLayoutDirection dir);
|
||||||
|
|
||||||
#ifndef __WXWINCE__
|
#ifndef __WXWINCE__
|
||||||
@@ -76,7 +76,7 @@ public:
|
|||||||
virtual bool SetTransparent(wxByte alpha);
|
virtual bool SetTransparent(wxByte alpha);
|
||||||
virtual bool CanSetTransparent();
|
virtual bool CanSetTransparent();
|
||||||
|
|
||||||
|
|
||||||
// implementation from now on
|
// implementation from now on
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
||||||
@@ -127,6 +127,12 @@ protected:
|
|||||||
// common part of Iconize(), Maximize() and Restore()
|
// common part of Iconize(), Maximize() and Restore()
|
||||||
void DoShowWindow(int nShowCmd);
|
void DoShowWindow(int nShowCmd);
|
||||||
|
|
||||||
|
// override those to return the normal window coordinates even when the
|
||||||
|
// window is minimized
|
||||||
|
virtual void DoGetPosition(int *x, int *y) const;
|
||||||
|
virtual void DoGetSize(int *width, int *height) const;
|
||||||
|
|
||||||
|
|
||||||
// is the window currently iconized?
|
// is the window currently iconized?
|
||||||
bool m_iconized;
|
bool m_iconized;
|
||||||
|
|
||||||
|
@@ -780,6 +780,75 @@ void wxTopLevelWindowMSW::SetLayoutDirection(wxLayoutDirection dir)
|
|||||||
wxTopLevelWindowBase::SetLayoutDirection(dir);
|
wxTopLevelWindowBase::SetLayoutDirection(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxTopLevelWindowMSW geometry
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxTopLevelWindowMSW::DoGetPosition(int *x, int *y) const
|
||||||
|
{
|
||||||
|
if ( IsIconized() )
|
||||||
|
{
|
||||||
|
WINDOWPLACEMENT wp;
|
||||||
|
wp.length = sizeof(WINDOWPLACEMENT);
|
||||||
|
if ( ::GetWindowPlacement(GetHwnd(), &wp) )
|
||||||
|
{
|
||||||
|
RECT& rc = wp.rcNormalPosition;
|
||||||
|
|
||||||
|
// the position returned by GetWindowPlacement() is in workspace
|
||||||
|
// coordinates except for windows with WS_EX_TOOLWINDOW style
|
||||||
|
if ( !HasFlag(wxFRAME_TOOL_WINDOW) )
|
||||||
|
{
|
||||||
|
// we must use the correct display for the translation as the
|
||||||
|
// task bar might be shown on one display but not the other one
|
||||||
|
int n = wxDisplay::GetFromWindow(this);
|
||||||
|
wxDisplay dpy(n == wxNOT_FOUND ? 0 : n);
|
||||||
|
const wxPoint ptOfs = dpy.GetClientArea().GetPosition() -
|
||||||
|
dpy.GetGeometry().GetPosition();
|
||||||
|
|
||||||
|
rc.left += ptOfs.x;
|
||||||
|
rc.top += ptOfs.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( x )
|
||||||
|
*x = rc.left;
|
||||||
|
if ( y )
|
||||||
|
*y = rc.top;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxLogLastError(_T("GetWindowPlacement"));
|
||||||
|
}
|
||||||
|
//else: normal case
|
||||||
|
|
||||||
|
wxTopLevelWindowBase::DoGetPosition(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxTopLevelWindowMSW::DoGetSize(int *width, int *height) const
|
||||||
|
{
|
||||||
|
if ( IsIconized() )
|
||||||
|
{
|
||||||
|
WINDOWPLACEMENT wp;
|
||||||
|
wp.length = sizeof(WINDOWPLACEMENT);
|
||||||
|
if ( ::GetWindowPlacement(GetHwnd(), &wp) )
|
||||||
|
{
|
||||||
|
const RECT& rc = wp.rcNormalPosition;
|
||||||
|
|
||||||
|
if ( width )
|
||||||
|
*width = rc.right - rc.left;
|
||||||
|
if ( height )
|
||||||
|
*height = rc.bottom - rc.top;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxLogLastError(_T("GetWindowPlacement"));
|
||||||
|
}
|
||||||
|
//else: normal case
|
||||||
|
|
||||||
|
wxTopLevelWindowBase::DoGetSize(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxTopLevelWindowMSW fullscreen
|
// wxTopLevelWindowMSW fullscreen
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user