diff options
author | Eike Rathke <erack@redhat.com> | 2017-06-29 14:02:58 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-06-29 22:21:14 +0200 |
commit | 5eec9409f10d1a08c826edb689eefb86240b7b25 (patch) | |
tree | c060981278e7c0a0551cd9683c7c4bc3e2e6f06c | |
parent | 622d2b4c250f6c3cc67f10887f3e3ec9db3f69a5 (diff) |
Don't let m_nGrabLevel become negative, tdf#108705 related
... which then later leads to 2 Giga loops on the next GtkSalFrame dtor call,
for example on the second AutoFilter button popup in Calc.
Fall-out from
commit 9b32355ea6d8d5e34363ba0c57e74d75d7a7b1b7
Date: Fri Jun 23 12:48:12 2017 +0100
Resolves: tdf#108705 remove grabs on widget before destroying it
that brought this to surface.
Change-Id: I0edb7eec9384c716800f07ef1ed91fc8f1d7c119
(cherry picked from commit 637d917d7551fed19c9685f974fb3e732a8f97e2)
Reviewed-on: https://gerrit.libreoffice.org/39388
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkframe.cxx | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx index 95cad3d56a0a..d8b88f9abc85 100644 --- a/vcl/unx/gtk3/gtk3gtkframe.cxx +++ b/vcl/unx/gtk3/gtk3gtkframe.cxx @@ -2573,9 +2573,12 @@ void GtkSalFrame::addGrabLevel() void GtkSalFrame::removeGrabLevel() { - --m_nGrabLevel; - if (m_nGrabLevel == 0) - gtk_grab_remove(getMouseEventWidget()); + if (m_nGrabLevel > 0) + { + --m_nGrabLevel; + if (m_nGrabLevel == 0) + gtk_grab_remove(getMouseEventWidget()); + } } void GtkSalFrame::closePopup() |