Fix getting position of wxPopupWindow in wxMSW.

Don't offset the returned values by the parent window origin unnecessarily: as
popup windows are created as children of the desktop window in wxMSW, their
coordinates are already expressed in screen coordinate system (which is
exactly the same as display window coordinate system) and we must not try to
translate them to it once again, this is completely wrong and was probably a
left over from earlier wxPopupWindow implementation in which it wasn't created
as a child of desktop.

In 3.0 branch we still need to continue overriding virtual DoGetPosition() for
ABI reasons, but don't do anything in it any more.

Closes #4440.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@76674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2014-06-09 20:30:55 +00:00
parent 4d63d4da42
commit 4357c54bd5
3 changed files with 3 additions and 6 deletions

View File

@@ -670,6 +670,7 @@ wxMSW:
- Fix precision loss in wxGraphicsContext::{Draw,Stroke}Lines() (tibo_).
- Fix destroying the font from wxFont::GetFaceName() in some cases (aebailey82).
- Fix wxCheckListBox appearance when using larger fonts (Igor Korot).
- Return correct results from wxPopupWindow::GetPosition() (Christian Walther).
wxOSX:

View File

@@ -35,7 +35,6 @@ public:
virtual WXHWND MSWGetParent() const;
protected:
// popups handle the position like wxTopLevelWindow, not wxWindow
virtual void DoGetPosition(int *x, int *y) const;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxPopupWindow)

View File

@@ -49,12 +49,9 @@ bool wxPopupWindow::Create(wxWindow *parent, int flags)
void wxPopupWindow::DoGetPosition(int *x, int *y) const
{
// the position of a "top level" window such as this should be in
// screen coordinates, not in the client ones which MSW gives us
// (because we are a child window)
// This method only exists for ABI compatibility but does nothing special
// any more, it is removed in 3.1.0 and later.
wxPopupWindowBase::DoGetPosition(x, y);
GetParent()->ClientToScreen(x, y);
}
WXDWORD wxPopupWindow::MSWGetStyle(long flags, WXDWORD *exstyle) const