1 diff --git sc/source/ui/view/tabview3.cxx sc/source/ui/view/tabview3.cxx
2 index c06fa78..a888435 100644
3 --- sc/source/ui/view/tabview3.cxx
4 +++ sc/source/ui/view/tabview3.cxx
5 @@ -1679,31 +1679,31 @@ void ScTabView::SetTabNo( SCTAB nTab, BOOL bNew, BOOL bExtendSelection )
6 SfxBindings& rBindings = aViewData.GetBindings();
7 ScMarkData& rMark = aViewData.GetMarkData();
9 - BOOL bSelectOneTable = FALSE;
10 - if (bExtendSelection)
12 - // #i6327# if all tables are selected, a selection event (#i6330#) will deselect all
13 - BOOL bAllSelected = TRUE;
14 - for( SCTAB nSelTab = 0; bAllSelected && (nSelTab < nTabCount); ++nSelTab )
15 - bAllSelected = !pDoc->IsVisible( nSelTab ) || rMark.GetTableSelect( nSelTab );
17 + bool bAllSelected = true;
18 + for (SCTAB nSelTab = 0; nSelTab < nTabCount; ++nSelTab)
20 + if (!pDoc->IsVisible(nSelTab) || rMark.GetTableSelect(nSelTab))
22 + if (nTab == nSelTab)
23 + // This tab is already in selection. Keep the current
25 + bExtendSelection = true;
29 - bExtendSelection = FALSE;
30 - bSelectOneTable = TRUE;
31 + bAllSelected = false;
32 + if (bExtendSelection)
33 + // We got what we need. No need to stay in the loop.
39 - // move from multi-selection to unselected table
40 - bSelectOneTable = !rMark.GetTableSelect( nTab );
43 + // #i6327# if all tables are selected, a selection event (#i6330#) will deselect all
44 + bExtendSelection = false;
48 - // #i6330# multi-selection with keyboard
49 rMark.SelectTable( nTab, TRUE );
51 - else if (bSelectOneTable)
54 rMark.SelectOneTable( nTab );
55 rBindings.Invalidate( FID_FILL_TAB );