position the popup on the correct screen (see #10462)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -34,6 +34,7 @@
|
|||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
#endif //WX_PRECOMP
|
#endif //WX_PRECOMP
|
||||||
|
|
||||||
|
#include "wx/display.h"
|
||||||
#include "wx/recguard.h"
|
#include "wx/recguard.h"
|
||||||
|
|
||||||
#ifdef __WXUNIVERSAL__
|
#ifdef __WXUNIVERSAL__
|
||||||
@@ -134,8 +135,26 @@ bool wxPopupWindowBase::Create(wxWindow* WXUNUSED(parent), int WXUNUSED(flags))
|
|||||||
void wxPopupWindowBase::Position(const wxPoint& ptOrigin,
|
void wxPopupWindowBase::Position(const wxPoint& ptOrigin,
|
||||||
const wxSize& size)
|
const wxSize& size)
|
||||||
{
|
{
|
||||||
wxSize sizeScreen = wxGetDisplaySize(),
|
// determine the position and size of the screen we clamp the popup to
|
||||||
sizeSelf = GetSize();
|
wxPoint posScreen;
|
||||||
|
wxSize sizeScreen;
|
||||||
|
|
||||||
|
const int displayNum = wxDisplay::GetFromPoint(ptOrigin);
|
||||||
|
if ( displayNum != wxNOT_FOUND )
|
||||||
|
{
|
||||||
|
const wxRect rectScreen = wxDisplay(displayNum).GetGeometry();
|
||||||
|
posScreen = rectScreen.GetPosition();
|
||||||
|
sizeScreen = rectScreen.GetSize();
|
||||||
|
}
|
||||||
|
else // outside of any display?
|
||||||
|
{
|
||||||
|
// just use the primary one then
|
||||||
|
posScreen = wxPoint(0, 0);
|
||||||
|
sizeScreen = wxGetDisplaySize();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const wxSize sizeSelf = GetSize();
|
||||||
|
|
||||||
// is there enough space to put the popup below the window (where we put it
|
// is there enough space to put the popup below the window (where we put it
|
||||||
// by default)?
|
// by default)?
|
||||||
|
Reference in New Issue
Block a user