summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-01-09 12:14:23 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-01-09 16:11:33 +0100
commite87be6db93860f33bc7141dc8ba9ddf6430ae2c0 (patch)
tree76aa7e19b2a9448bac3f328f4cd372b233bf83a7 /vcl
parent4c89c6c7c1bd89cda5690ae620092e3b32b11d97 (diff)
Resolves: crash in double-split when first timeout hadn't expired yet
Change-Id: Ieba97589a3794cf5ed95839e20cc4028cfedae3a Reviewed-on: https://gerrit.libreoffice.org/66018 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx7
1 files changed, 5 insertions, 2 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index b254a68cdae1..a589b2af38b6 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -3039,6 +3039,7 @@ private:
gulong m_nSwitchPageSignalId;
gulong m_nOverFlowSwitchPageSignalId;
gulong m_nSizeAllocateSignalId;
+ guint m_nLaunchSplitTimeoutId;
bool m_bOverFlowBoxActive;
bool m_bOverFlowBoxIsStart;
int m_nStartTabCount;
@@ -3364,6 +3365,7 @@ private:
int nCurrentPage = pThis->get_current_page();
pThis->split_notebooks();
pThis->set_current_page(nCurrentPage);
+ pThis->m_nLaunchSplitTimeoutId = 0;
return false;
}
@@ -3374,7 +3376,7 @@ private:
// tabs in a single row when they would fit
void signal_notebook_size_allocate()
{
- if (m_bOverFlowBoxActive)
+ if (m_bOverFlowBoxActive || m_nLaunchSplitTimeoutId)
return;
disable_notify_events();
gint nPages = gtk_notebook_get_n_pages(m_pNotebook);
@@ -3385,7 +3387,7 @@ private:
GtkWidget* pTabWidget = gtk_notebook_get_tab_label(m_pNotebook, gtk_notebook_get_nth_page(m_pNotebook, i));
if (!gtk_widget_get_child_visible(pTabWidget))
{
- g_timeout_add_full(G_PRIORITY_HIGH_IDLE, 0, reinterpret_cast<GSourceFunc>(launch_split_notebooks), this, nullptr);
+ m_nLaunchSplitTimeoutId = g_timeout_add_full(G_PRIORITY_HIGH_IDLE, 0, reinterpret_cast<GSourceFunc>(launch_split_notebooks), this, nullptr);
break;
}
}
@@ -3407,6 +3409,7 @@ public:
, m_pOverFlowNotebook(GTK_NOTEBOOK(gtk_notebook_new()))
, m_nSwitchPageSignalId(g_signal_connect(pNotebook, "switch-page", G_CALLBACK(signalSwitchPage), this))
, m_nOverFlowSwitchPageSignalId(g_signal_connect(m_pOverFlowNotebook, "switch-page", G_CALLBACK(signalOverFlowSwitchPage), this))
+ , m_nLaunchSplitTimeoutId(0)
, m_bOverFlowBoxActive(false)
, m_bOverFlowBoxIsStart(false)
, m_nStartTabCount(0)