update ooo310-m15
[ooovba.git] / applied_patches / 0504-calc-single-click-unselect-tabs.diff
blob8d49bd104b57ca5c32fa7e25c995c05aef73ddb0
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)
11 - {
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 );
16 - if( bAllSelected )
17 + bool bAllSelected = true;
18 + for (SCTAB nSelTab = 0; nSelTab < nTabCount; ++nSelTab)
19 + {
20 + if (!pDoc->IsVisible(nSelTab) || rMark.GetTableSelect(nSelTab))
21 + {
22 + if (nTab == nSelTab)
23 + // This tab is already in selection. Keep the current
24 + // selection.
25 + bExtendSelection = true;
26 + }
27 + else
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.
34 + break;
37 - else
38 - {
39 - // move from multi-selection to unselected table
40 - bSelectOneTable = !rMark.GetTableSelect( nTab );
41 - }
42 + if (bAllSelected)
43 + // #i6327# if all tables are selected, a selection event (#i6330#) will deselect all
44 + bExtendSelection = false;
46 if (bExtendSelection)
47 - {
48 - // #i6330# multi-selection with keyboard
49 rMark.SelectTable( nTab, TRUE );
50 - }
51 - else if (bSelectOneTable)
52 + else
54 rMark.SelectOneTable( nTab );
55 rBindings.Invalidate( FID_FILL_TAB );