From 0ae3bace9bc46e19a9059c6a1d253ab5b86d2fca Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Tue, 22 Aug 2006 22:47:50 +0000 Subject: [PATCH] Skip double size events. Skip movements of floating pane when moving fast. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40760 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/aui/floatpane.cpp | 8 ++++++++ src/aui/framemanager.cpp | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/aui/floatpane.cpp b/src/aui/floatpane.cpp index 22940e6a80..bc8e52be6e 100644 --- a/src/aui/floatpane.cpp +++ b/src/aui/floatpane.cpp @@ -134,6 +134,14 @@ void wxFloatingPane::OnMoveEvent(wxMoveEvent& event) return; } + // skip if moving fast + if ((abs(win_rect.x - m_last_rect.x) > 1) || + (abs(win_rect.y - m_last_rect.y) > 1)) + { + m_last_rect = win_rect; + return; + } + // prevent frame redocking during resize if (m_last_rect.GetSize() != win_rect.GetSize()) { diff --git a/src/aui/framemanager.cpp b/src/aui/framemanager.cpp index 9e2fe08530..45f36c9967 100644 --- a/src/aui/framemanager.cpp +++ b/src/aui/framemanager.cpp @@ -80,6 +80,8 @@ public: m_Amount=0; m_MaxWidth=0; m_MaxHeight=0; + m_lastWidth=0; + m_lastHeight=0; #ifdef __WXGTK__ m_CanSetShape = false; // have to wait for window create event on GTK #else @@ -149,6 +151,16 @@ public: void OnSize(wxSizeEvent& event) { + // We sometimes get surplus size events + if ((event.GetSize().GetWidth() == m_lastWidth) && + (event.GetSize().GetHeight() == m_lastHeight)) + { + event.Skip(); + return; + } + m_lastWidth = event.GetSize().GetWidth(); + m_lastHeight = event.GetSize().GetHeight(); + SetTransparent(m_Amount); m_Region.Intersect(0, 0, event.GetSize().GetWidth(), event.GetSize().GetHeight()); @@ -162,6 +174,7 @@ private: int m_MaxWidth; int m_MaxHeight; bool m_CanSetShape; + int m_lastWidth,m_lastHeight; wxRegion m_Region; -- 2.47.2