summaryrefslogtreecommitdiff
path: root/patches/OOO_1_1/sd-slide-sorter-selector.diff
blob: fc8abd4b2aefa9e36dada0202f81a030f5bab558 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
--- sd/source/ui/func/fuslsel.cxx	2003-03-27 16:27:51.000000000 +0530
+++ sd/source/ui/func/fuslsel.cxx	2004-12-10 11:33:40.395794208 +0530
@@ -165,9 +165,34 @@
 	{
 		bPageHit = TRUE;		 // Seite getroffen, merken fuer MouseMove
 
-		if (rMEvt.IsShift())
+		if( rMEvt.IsMod1() ) 
             pSlView->Select( ( pHitPage->GetPageNum() - 1 ) / 2, !pHitPage->IsSelected() );
-		else if( !pHitPage->IsSelected() )
+		else if( rMEvt.IsShift() ) 
+		{
+		    USHORT nCurrentPage = ( pHitPage->GetPageNum() - 1 ) / 2;
+		    USHORT nPageRange;
+		    BOOL bFound = FALSE;
+		    for (nPageRange = 0; nPageRange < nNoOfPages; nPageRange++)
+		    {
+			SdPage* pTestPage = pDoc->GetSdPage(nPageRange, PK_STANDARD);
+			if( pTestPage->IsSelected() )
+			{
+			    bFound = TRUE;
+			    break;
+			}
+		    }
+		    if( !bFound )
+			pSlView->Select( nCurrentPage, TRUE );
+		    else if( nCurrentPage != nPageRange )
+		    {
+			for (nPage =  ((nCurrentPage > nPageRange) ? nPageRange   : nCurrentPage);
+			     nPage <= ((nCurrentPage > nPageRange) ? nCurrentPage : nPageRange); 
+			     nPage++)
+			    pSlView->Select( nPage, TRUE );
+		    }			
+		    
+		}
+		else
 		{
     		// einfache Selektion, alle selektierten deselektieren, getroffene Seite selektieren
             pSlView->SelectAll( FALSE );
@@ -207,7 +232,7 @@
 	if( !pHitPage && !bReturn )
 	{
 		// keine erweiterte Selektion: alle Seiten deselektieren
-		if( !rMEvt.IsShift() )
+		if( !rMEvt.IsShift() && !rMEvt.IsMod1() ) 
             pSlView->SelectAll( FALSE );
 
 		bDragSelection = TRUE;