diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2017-12-05 22:01:26 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-12-07 14:34:52 +0100 |
commit | c195e84385c8917fab6f2091cab24d33f1e2bc6f (patch) | |
tree | 67e3d71fe01b7093a811489b4057549c791bccd7 /sc | |
parent | c4645d7a4505940c71b0732d9f0fc68f7e9be886 (diff) |
tdf#114228: fix crash when deleting sheet in specific case
1. Create a brand new ods file
2. Select L12 (so cursor is obviously on sheet1 L12)
3. Create a brand new sheet (and cursor is on sheet2 A1)
4. Delete sheet2
It crashes with gtk3, see https://bugs.documentfoundation.org/attachment.cgi?id=138199
As indicated in https://bugs.documentfoundation.org/show_bug.cgi?id=114228#c5 the tab number
is wrong
Reporting cursor management later in ScTabView::SetTabNo prevents from the crash
Change-Id: Iea307267d2cdcf1c01f7e72f45b6a68aeef26fa1
Reviewed-on: https://gerrit.libreoffice.org/45977
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/view/tabview3.cxx | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index 226eb8d91d4c..c90ea34daaae 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -1810,8 +1810,6 @@ void ScTabView::SetTabNo( SCTAB nTab, bool bNew, bool bExtendSelection, bool bSa // UpdateShow before SetCursor, so that UpdateAutoFillMark finds the correct // window (is called from SetCursor) UpdateShow(); - aViewData.ResetOldCursor(); - SetCursor( aViewData.GetCurX(), aViewData.GetCurY(), true ); SfxBindings& rBindings = aViewData.GetBindings(); ScMarkData& rMark = aViewData.GetMarkData(); @@ -1867,6 +1865,9 @@ void ScTabView::SetTabNo( SCTAB nTab, bool bNew, bool bExtendSelection, bool bSa UpdateVisibleRange(); aViewData.GetViewShell()->WindowChanged(); // if the active window has changed + aViewData.ResetOldCursor(); + SetCursor( aViewData.GetCurX(), aViewData.GetCurY(), true ); + if ( !bUnoRefDialog ) aViewData.GetViewShell()->DisconnectAllClients(); // important for floating frames else |