summaryrefslogtreecommitdiff
path: root/vcl/unx/gtk3/gtk3gtkinst.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/gtk3/gtk3gtkinst.cxx')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index b0c0e13b5e7e..7910ae85948c 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -3183,6 +3183,13 @@ private:
void signal_switch_page(int nNewPage)
{
+ if (m_bOverFlowBoxIsStart)
+ {
+ auto nOverFlowLen = m_bOverFlowBoxActive ? gtk_notebook_get_n_pages(m_pOverFlowNotebook) - 1 : 0;
+ // add count of overflow pages, minus the extra tab
+ nNewPage += nOverFlowLen;
+ }
+
bool bAllow = !m_aLeavePageHdl.IsSet() || m_aLeavePageHdl.Call(get_current_page_ident());
if (!bAllow)
{
@@ -3246,9 +3253,11 @@ private:
std::swap(m_nStartTabCount, m_nEndTabCount);
split_notebooks();
- gtk_notebook_set_current_page(m_pNotebook, nNewPage);
-
enable_notify_events();
+
+ // we want to call this outside enable_notify_events so that the main
+ // notebook switch-page callback is triggered
+ gtk_notebook_set_current_page(m_pNotebook, nNewPage);
}
static OString get_page_ident(GtkNotebook *pNotebook, guint nPage)