added wxWindow::ClientToWindowSize and WindowToClientSize helpers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51737 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -380,6 +380,23 @@ implements the following methods:\par
|
|||||||
\end{twocollist}}
|
\end{twocollist}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\membersection{wxWindow::ClientToWindowSize}\label{wxwindowclienttowindowsize}
|
||||||
|
|
||||||
|
\func{virtual wxSize}{ClientToWindowSize}{\param{const wxSize\&}{ size}}
|
||||||
|
|
||||||
|
Converts client area size \arg{size} to corresponding window size. In other
|
||||||
|
words, the returned value is what would \helpref{GetSize}{wxwindowgetsize}
|
||||||
|
return if this window had client area of given size.
|
||||||
|
Components with $wxDefaultCoord$ value are left unchanged.
|
||||||
|
|
||||||
|
Note that the conversion is not always exact, it assumes that non-client area
|
||||||
|
doesn't change and so doesn't take into account things like menu bar
|
||||||
|
(un)wrapping or (dis)appearance of the scrollbars.
|
||||||
|
|
||||||
|
\wxheading{See also}
|
||||||
|
|
||||||
|
\helpref{wxWindow::WindowToClientSize}{wxwindowwindowtoclientsize}
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxWindow::Close}\label{wxwindowclose}
|
\membersection{wxWindow::Close}\label{wxwindowclose}
|
||||||
|
|
||||||
@@ -4033,3 +4050,19 @@ Interface Guidelines forbid moving the mouse cursor programmatically.
|
|||||||
|
|
||||||
\docparam{y}{The new y position for the cursor.}
|
\docparam{y}{The new y position for the cursor.}
|
||||||
|
|
||||||
|
\membersection{wxWindow::WindowToClientSize}\label{wxwindowwindowtoclientsize}
|
||||||
|
|
||||||
|
\func{virtual wxSize}{WindowToClientSize}{\param{const wxSize\&}{ size}}
|
||||||
|
|
||||||
|
Converts window size \arg{size} to corresponding client area size. In other
|
||||||
|
words, the returned value is what would
|
||||||
|
\helpref{GetClientSize}{wxwindowgetclientsize} return if this window had
|
||||||
|
given window size. Components with $wxDefaultCoord$ value are left unchanged.
|
||||||
|
|
||||||
|
Note that the conversion is not always exact, it assumes that non-client area
|
||||||
|
doesn't change and so doesn't take into account things like menu bar
|
||||||
|
(un)wrapping or (dis)appearance of the scrollbars.
|
||||||
|
|
||||||
|
\wxheading{See also}
|
||||||
|
|
||||||
|
\helpref{wxWindow::ClientToWindowSize}{wxwindowclienttowindowsize}
|
||||||
|
@@ -355,6 +355,10 @@ public:
|
|||||||
return wxRect(GetClientAreaOrigin(), GetClientSize());
|
return wxRect(GetClientAreaOrigin(), GetClientSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// client<->window size conversion
|
||||||
|
virtual wxSize ClientToWindowSize(const wxSize& size) const;
|
||||||
|
virtual wxSize WindowToClientSize(const wxSize& size) const;
|
||||||
|
|
||||||
// get the size best suited for the window (in fact, minimal
|
// get the size best suited for the window (in fact, minimal
|
||||||
// acceptable size using which it will still look "nice" in
|
// acceptable size using which it will still look "nice" in
|
||||||
// most situations)
|
// most situations)
|
||||||
|
@@ -713,6 +713,22 @@ wxPoint wxWindowBase::GetClientAreaOrigin() const
|
|||||||
return wxPoint(0,0);
|
return wxPoint(0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxSize wxWindowBase::ClientToWindowSize(const wxSize& size) const
|
||||||
|
{
|
||||||
|
const wxSize diff(GetSize() - GetClientSize());
|
||||||
|
|
||||||
|
return wxSize(size.x == -1 ? -1 : size.x + diff.x,
|
||||||
|
size.y == -1 ? -1 : size.y + diff.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxSize wxWindowBase::WindowToClientSize(const wxSize& size) const
|
||||||
|
{
|
||||||
|
const wxSize diff(GetSize() - GetClientSize());
|
||||||
|
|
||||||
|
return wxSize(size.x == -1 ? -1 : size.x - diff.x,
|
||||||
|
size.y == -1 ? -1 : size.y - diff.y);
|
||||||
|
}
|
||||||
|
|
||||||
void wxWindowBase::SetWindowVariant( wxWindowVariant variant )
|
void wxWindowBase::SetWindowVariant( wxWindowVariant variant )
|
||||||
{
|
{
|
||||||
if ( m_windowVariant != variant )
|
if ( m_windowVariant != variant )
|
||||||
|
@@ -113,6 +113,7 @@ TEST_GUI_OBJECTS = \
|
|||||||
test_gui_size.o \
|
test_gui_size.o \
|
||||||
test_gui_point.o \
|
test_gui_point.o \
|
||||||
test_gui_config.o \
|
test_gui_config.o \
|
||||||
|
test_gui_clientsize.o \
|
||||||
test_gui_textctrltest.o
|
test_gui_textctrltest.o
|
||||||
TEST_GUI_ODEP = $(___pch_testprec_test_gui_testprec_h_gch___depname)
|
TEST_GUI_ODEP = $(___pch_testprec_test_gui_testprec_h_gch___depname)
|
||||||
PRINTFBENCH_CXXFLAGS = $(__printfbench_PCH_INC) -D__WX$(TOOLKIT)__ \
|
PRINTFBENCH_CXXFLAGS = $(__printfbench_PCH_INC) -D__WX$(TOOLKIT)__ \
|
||||||
@@ -487,6 +488,9 @@ test_gui_point.o: $(srcdir)/geometry/point.cpp $(TEST_GUI_ODEP)
|
|||||||
test_gui_config.o: $(srcdir)/config/config.cpp $(TEST_GUI_ODEP)
|
test_gui_config.o: $(srcdir)/config/config.cpp $(TEST_GUI_ODEP)
|
||||||
$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/config/config.cpp
|
$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/config/config.cpp
|
||||||
|
|
||||||
|
test_gui_clientsize.o: $(srcdir)/controls/clientsize.cpp $(TEST_GUI_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/controls/clientsize.cpp
|
||||||
|
|
||||||
test_gui_textctrltest.o: $(srcdir)/controls/textctrltest.cpp $(TEST_GUI_ODEP)
|
test_gui_textctrltest.o: $(srcdir)/controls/textctrltest.cpp $(TEST_GUI_ODEP)
|
||||||
$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/controls/textctrltest.cpp
|
$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/controls/textctrltest.cpp
|
||||||
|
|
||||||
|
85
tests/controls/clientsize.cpp
Normal file
85
tests/controls/clientsize.cpp
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: tests/controls/clientsize.cpp
|
||||||
|
// Purpose: Client vs. window size handling unit test
|
||||||
|
// Author: Vaclav Slavik
|
||||||
|
// Created: 2008-02-12
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) 2008 Vaclav Slavik <vslavik@fastmail.fm>
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "testprec.h"
|
||||||
|
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
#pragma hdrstop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/app.h"
|
||||||
|
#include "wx/window.h"
|
||||||
|
#endif // WX_PRECOMP
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// test class
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class ClientSizeTestCase : public CppUnit::TestCase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ClientSizeTestCase() { }
|
||||||
|
|
||||||
|
virtual void setUp();
|
||||||
|
virtual void tearDown();
|
||||||
|
|
||||||
|
private:
|
||||||
|
CPPUNIT_TEST_SUITE( ClientSizeTestCase );
|
||||||
|
CPPUNIT_TEST( ClientToWindow );
|
||||||
|
CPPUNIT_TEST( WindowToClient );
|
||||||
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
|
void ClientToWindow();
|
||||||
|
void WindowToClient();
|
||||||
|
|
||||||
|
wxWindow *m_win;
|
||||||
|
|
||||||
|
DECLARE_NO_COPY_CLASS(ClientSizeTestCase)
|
||||||
|
};
|
||||||
|
|
||||||
|
// register in the unnamed registry so that these tests are run by default
|
||||||
|
CPPUNIT_TEST_SUITE_REGISTRATION( ClientSizeTestCase );
|
||||||
|
|
||||||
|
// also include in it's own registry so that these tests can be run alone
|
||||||
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ClientSizeTestCase, "ClientSizeTestCase" );
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// test initialization
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ClientSizeTestCase::setUp()
|
||||||
|
{
|
||||||
|
m_win = wxTheApp->GetTopWindow();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSizeTestCase::tearDown()
|
||||||
|
{
|
||||||
|
m_win = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// tests themselves
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ClientSizeTestCase::ClientToWindow()
|
||||||
|
{
|
||||||
|
CPPUNIT_ASSERT(m_win->GetSize() ==
|
||||||
|
m_win->ClientToWindowSize(m_win->GetClientSize()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClientSizeTestCase::WindowToClient()
|
||||||
|
{
|
||||||
|
CPPUNIT_ASSERT(m_win->GetClientSize() ==
|
||||||
|
m_win->WindowToClientSize(m_win->GetSize()));
|
||||||
|
}
|
@@ -101,6 +101,7 @@ TEST_GUI_OBJECTS = \
|
|||||||
$(OBJS)\test_gui_size.obj \
|
$(OBJS)\test_gui_size.obj \
|
||||||
$(OBJS)\test_gui_point.obj \
|
$(OBJS)\test_gui_point.obj \
|
||||||
$(OBJS)\test_gui_config.obj \
|
$(OBJS)\test_gui_config.obj \
|
||||||
|
$(OBJS)\test_gui_clientsize.obj \
|
||||||
$(OBJS)\test_gui_textctrltest.obj
|
$(OBJS)\test_gui_textctrltest.obj
|
||||||
PRINTFBENCH_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
PRINTFBENCH_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG_1) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
$(__OPTIMIZEFLAG) $(__THREADSFLAG_1) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
@@ -522,6 +523,9 @@ $(OBJS)\test_gui_point.obj: .\geometry\point.cpp
|
|||||||
$(OBJS)\test_gui_config.obj: .\config\config.cpp
|
$(OBJS)\test_gui_config.obj: .\config\config.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\config\config.cpp
|
$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\config\config.cpp
|
||||||
|
|
||||||
|
$(OBJS)\test_gui_clientsize.obj: .\controls\clientsize.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\controls\clientsize.cpp
|
||||||
|
|
||||||
$(OBJS)\test_gui_textctrltest.obj: .\controls\textctrltest.cpp
|
$(OBJS)\test_gui_textctrltest.obj: .\controls\textctrltest.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\controls\textctrltest.cpp
|
$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\controls\textctrltest.cpp
|
||||||
|
|
||||||
|
@@ -94,6 +94,7 @@ TEST_GUI_OBJECTS = \
|
|||||||
$(OBJS)\test_gui_size.o \
|
$(OBJS)\test_gui_size.o \
|
||||||
$(OBJS)\test_gui_point.o \
|
$(OBJS)\test_gui_point.o \
|
||||||
$(OBJS)\test_gui_config.o \
|
$(OBJS)\test_gui_config.o \
|
||||||
|
$(OBJS)\test_gui_clientsize.o \
|
||||||
$(OBJS)\test_gui_textctrltest.o
|
$(OBJS)\test_gui_textctrltest.o
|
||||||
PRINTFBENCH_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
PRINTFBENCH_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
||||||
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
@@ -500,6 +501,9 @@ $(OBJS)\test_gui_point.o: ./geometry/point.cpp
|
|||||||
$(OBJS)\test_gui_config.o: ./config/config.cpp
|
$(OBJS)\test_gui_config.o: ./config/config.cpp
|
||||||
$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\test_gui_clientsize.o: ./controls/clientsize.cpp
|
||||||
|
$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\test_gui_textctrltest.o: ./controls/textctrltest.cpp
|
$(OBJS)\test_gui_textctrltest.o: ./controls/textctrltest.cpp
|
||||||
$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
@@ -97,6 +97,7 @@ TEST_GUI_OBJECTS = \
|
|||||||
$(OBJS)\test_gui_size.obj \
|
$(OBJS)\test_gui_size.obj \
|
||||||
$(OBJS)\test_gui_point.obj \
|
$(OBJS)\test_gui_point.obj \
|
||||||
$(OBJS)\test_gui_config.obj \
|
$(OBJS)\test_gui_config.obj \
|
||||||
|
$(OBJS)\test_gui_clientsize.obj \
|
||||||
$(OBJS)\test_gui_textctrltest.obj
|
$(OBJS)\test_gui_textctrltest.obj
|
||||||
PRINTFBENCH_CXXFLAGS = /M$(__RUNTIME_LIBS_38)$(__DEBUGRUNTIME) /DWIN32 \
|
PRINTFBENCH_CXXFLAGS = /M$(__RUNTIME_LIBS_38)$(__DEBUGRUNTIME) /DWIN32 \
|
||||||
$(__DEBUGINFO) /Fd$(OBJS)\printfbench.pdb $(____DEBUGRUNTIME) \
|
$(__DEBUGINFO) /Fd$(OBJS)\printfbench.pdb $(____DEBUGRUNTIME) \
|
||||||
@@ -607,6 +608,9 @@ $(OBJS)\test_gui_point.obj: .\geometry\point.cpp
|
|||||||
$(OBJS)\test_gui_config.obj: .\config\config.cpp
|
$(OBJS)\test_gui_config.obj: .\config\config.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\config\config.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\config\config.cpp
|
||||||
|
|
||||||
|
$(OBJS)\test_gui_clientsize.obj: .\controls\clientsize.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\controls\clientsize.cpp
|
||||||
|
|
||||||
$(OBJS)\test_gui_textctrltest.obj: .\controls\textctrltest.cpp
|
$(OBJS)\test_gui_textctrltest.obj: .\controls\textctrltest.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\controls\textctrltest.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\controls\textctrltest.cpp
|
||||||
|
|
||||||
|
@@ -301,6 +301,7 @@ TEST_GUI_OBJECTS = &
|
|||||||
$(OBJS)\test_gui_size.obj &
|
$(OBJS)\test_gui_size.obj &
|
||||||
$(OBJS)\test_gui_point.obj &
|
$(OBJS)\test_gui_point.obj &
|
||||||
$(OBJS)\test_gui_config.obj &
|
$(OBJS)\test_gui_config.obj &
|
||||||
|
$(OBJS)\test_gui_clientsize.obj &
|
||||||
$(OBJS)\test_gui_textctrltest.obj
|
$(OBJS)\test_gui_textctrltest.obj
|
||||||
PRINTFBENCH_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
PRINTFBENCH_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
||||||
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
||||||
@@ -552,6 +553,9 @@ $(OBJS)\test_gui_point.obj : .AUTODEPEND .\geometry\point.cpp
|
|||||||
$(OBJS)\test_gui_config.obj : .AUTODEPEND .\config\config.cpp
|
$(OBJS)\test_gui_config.obj : .AUTODEPEND .\config\config.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\test_gui_clientsize.obj : .AUTODEPEND .\controls\clientsize.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\test_gui_textctrltest.obj : .AUTODEPEND .\controls\textctrltest.cpp
|
$(OBJS)\test_gui_textctrltest.obj : .AUTODEPEND .\controls\textctrltest.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
|
||||||
|
|
||||||
|
@@ -92,6 +92,7 @@
|
|||||||
geometry/size.cpp
|
geometry/size.cpp
|
||||||
geometry/point.cpp
|
geometry/point.cpp
|
||||||
config/config.cpp
|
config/config.cpp
|
||||||
|
controls/clientsize.cpp
|
||||||
controls/textctrltest.cpp
|
controls/textctrltest.cpp
|
||||||
</sources>
|
</sources>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
@@ -235,6 +235,10 @@ LINK32=link.exe
|
|||||||
# PROP Default_Filter ""
|
# PROP Default_Filter ""
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\controls\clientsize.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\config\config.cpp
|
SOURCE=.\config\config.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@@ -649,6 +649,8 @@
|
|||||||
Name="Source Files"
|
Name="Source Files"
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx">
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx">
|
||||||
|
<File
|
||||||
|
RelativePath=".\controls\clientsize.cpp"/>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\config\config.cpp"/>
|
RelativePath=".\config\config.cpp"/>
|
||||||
<File
|
<File
|
||||||
|
@@ -807,6 +807,9 @@
|
|||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\controls\clientsize.cpp"
|
||||||
|
/>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\config\config.cpp"
|
RelativePath=".\config\config.cpp"
|
||||||
/>
|
/>
|
||||||
|
Reference in New Issue
Block a user