vcl/unx/gtk3/gtk3gtkframe.cxx | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)
New commits: commit ffbd9647698738084c7a69fc72a2a7317109df7c Author: Caolán McNamara <caol...@redhat.com> Date: Thu Jun 9 17:40:13 2016 +0100 wrong hunk included Change-Id: I5fbeea83393e811cdf333f3cf456cbd6cc2f9d6c diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx index c76e2cd..5a12fa6 100644 --- a/vcl/unx/gtk3/gtk3gtkframe.cxx +++ b/vcl/unx/gtk3/gtk3gtkframe.cxx @@ -1440,11 +1440,15 @@ void GtkSalFrame::Show( bool bVisible, bool bNoActivate ) m_nFloats++; if( ! getDisplay()->GetCaptureFrame() && m_nFloats == 1 ) { - GdkDeviceManager* pDeviceManager = gdk_display_get_device_manager(getGdkDisplay()); - GdkDevice* pPointer = gdk_device_manager_get_client_pointer(pDeviceManager); - GdkDevice* pKeyboard = gdk_device_get_associated_device(pPointer); - gtk_device_grab_add(m_pParent->getWindow(), pPointer, false); - gtk_device_grab_add(m_pParent->getWindow(), pKeyboard, false); + GtkWidget* pGrabWidgetBeforeShowFloat; + while ((pGrabWidgetBeforeShowFloat = gtk_grab_get_current())) + { + m_aGrabWidgetsBeforeShowFloat.push_back(pGrabWidgetBeforeShowFloat); + gtk_grab_remove(pGrabWidgetBeforeShowFloat); + } + grabPointer(true, true); + GtkSalFrame *pKeyboardFrame = m_pParent ? m_pParent : this; + pKeyboardFrame->grabKeyboard(true); } // #i44068# reset parent's IM context if( m_pParent ) @@ -1460,11 +1464,12 @@ void GtkSalFrame::Show( bool bVisible, bool bNoActivate ) m_nFloats--; if( ! getDisplay()->GetCaptureFrame() && m_nFloats == 0) { - GdkDeviceManager* pDeviceManager = gdk_display_get_device_manager(getGdkDisplay()); - GdkDevice* pPointer = gdk_device_manager_get_client_pointer(pDeviceManager); - GdkDevice* pKeyboard = gdk_device_get_associated_device(pPointer); - gtk_device_grab_remove(m_pParent->getWindow(), pKeyboard); - gtk_device_grab_remove(m_pParent->getWindow(), pPointer); + GtkSalFrame *pKeyboardFrame = m_pParent ? m_pParent : this; + pKeyboardFrame->grabKeyboard(false); + grabPointer(false); + for (auto i = m_aGrabWidgetsBeforeShowFloat.rbegin(); i != m_aGrabWidgetsBeforeShowFloat.rend(); ++i) + gtk_grab_add(*i); + m_aGrabWidgetsBeforeShowFloat.clear(); } } gtk_widget_hide( m_pWindow );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits