diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2017-12-05 22:01:26 +0100 |
---|---|---|
committer | Julien Nabet <serval2412@yahoo.fr> | 2017-12-07 08:40:41 +0100 |
commit | b4e51cdaf859dfffee0561c51a72eb5c73ee23f4 (patch) | |
tree | e11f427a4f7dae6042d707943da331f5e81faf4a | |
parent | 7a0fefa3818e9218f3f871ce3156df39ee444703 (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/45976
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
-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 84c945552677..6e93f5f5756a 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -1817,8 +1817,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(); @@ -1874,6 +1872,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 |