ooo-build r12513 - in trunk: . patches/dev300



Author: thorstenb
Date: Sat May 10 15:58:31 2008
New Revision: 12513
URL: http://svn.gnome.org/viewvc/ooo-build?rev=12513&view=rev

Log:
	* patches/dev300/sd-inplace-deselection-fix.diff: fixing the fact
	that deselecting an activated inplace OLE object in draw/impress
	ends up with a drag selection frame
	* patches/dev300/vcl-disable-mouse-grab.diff: disabled patch,
	useful if you need to disable X11 cursor grabbing in vcl (reacts
	on an env var - should you, as /me on a laptop, not being able to
	make use of AllowDeactivateGrabs)



Added:
   trunk/patches/dev300/sd-inplace-deselection-fix.diff
   trunk/patches/dev300/vcl-disable-mouse-grab.diff
Modified:
   trunk/ChangeLog
   trunk/patches/dev300/apply

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Sat May 10 15:58:31 2008
@@ -2213,6 +2213,11 @@
 vcl-limited-bmp-subset-fix.diff, i#88818, thorsten
 
 sd-view-zoom-fix.diff, n#380013, i#88939, thorsten
+sd-inplace-deselection-fix.diff, i#89283, n#384506, thorsten
+
+# apply this patch if you need to disable vcl grabbing your mouse -
+# after applying the patch, set SAL_NO_MOUSEGRABS in your env
+#vcl-disable-mouse-grab.diff
 
 [ InternalMesaHeaders ]
 internal-mesa-headers-config_office.diff, fridrich

Added: trunk/patches/dev300/sd-inplace-deselection-fix.diff
==============================================================================
--- (empty file)
+++ trunk/patches/dev300/sd-inplace-deselection-fix.diff	Sat May 10 15:58:31 2008
@@ -0,0 +1,51 @@
+--- sd/source/ui/func/fusel.cxx	2008-04-10 22:25:23.000000000 +0200
++++ sd/source/ui/func/fusel.cxx	2008-05-10 16:26:03.000000000 +0200
+@@ -414,26 +418,29 @@
+                         }
+                     }
+ 
+-                    if ( !bReadOnly &&
+-                        bMarked                                                   &&
+-                        (!rMEvt.IsShift() || mpView->IsMarkedHit(aMDPos, nHitLog)))
+-                    {
+-                        /**********************************************************
+-                        * Objekt verschieben
+-                        **********************************************************/
+-                        aDragTimer.Start();
+-
+-                        pHdl=mpView->PickHandle(aMDPos);
+-                        if ( ! rMEvt.IsRight())
+-                            mpView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl, nDrgLog);
+-                    }
+-                    else
++                    if( !bDeactivateOLE )
+                     {
+-                        /**********************************************************
+-                        * Objekt selektieren
+-                        **********************************************************/
+-                        if ( ! rMEvt.IsRight())
+-                            mpView->BegMarkObj(aMDPos);
++                        if ( !bReadOnly &&
++                             bMarked                                                   &&
++                             (!rMEvt.IsShift() || mpView->IsMarkedHit(aMDPos, nHitLog)))
++                        {
++                            /**********************************************************
++                             * Objekt verschieben
++                             **********************************************************/
++                            aDragTimer.Start();
++
++                            pHdl=mpView->PickHandle(aMDPos);
++                            if ( ! rMEvt.IsRight())
++                                mpView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl, nDrgLog);
++                        }
++                        else
++                        {
++                            /**********************************************************
++                             * Objekt selektieren
++                             **********************************************************/
++                            if ( ! rMEvt.IsRight())
++                                mpView->BegMarkObj(aMDPos);
++                        }
+                     }
+                 }
+             }

Added: trunk/patches/dev300/vcl-disable-mouse-grab.diff
==============================================================================
--- (empty file)
+++ trunk/patches/dev300/vcl-disable-mouse-grab.diff	Sat May 10 15:58:31 2008
@@ -0,0 +1,116 @@
+--- vcl/unx/gtk/window/gtkframe.cxx	2008-04-15 15:28:46.000000000 +0200
++++ vcl/unx/gtk/window/gtkframe.cxx	2008-05-10 14:20:37.000000000 +0200
+@@ -2061,6 +2061,8 @@
+ 
+ void GtkSalFrame::grabPointer( BOOL bGrab, BOOL bOwnerEvents )
+ {
++    static const char* pEnv = getenv( "SAL_NO_MOUSEGRABS" );
++
+     if( m_pWindow )
+     {
+         if( bGrab )
+@@ -2083,9 +2085,10 @@
+             {
+                 const int nMask = ( GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK );
+     
+-                gdk_pointer_grab( m_pWindow->window, bOwnerEvents,
+-                                  (GdkEventMask) nMask, NULL, m_pCurrentCursor,
+-                                  GDK_CURRENT_TIME );
++                if( !pEnv || !*pEnv )
++                    gdk_pointer_grab( m_pWindow->window, bOwnerEvents,
++                                      (GdkEventMask) nMask, NULL, m_pCurrentCursor,
++                                      GDK_CURRENT_TIME );
+             }
+             else
+             {
+@@ -2095,23 +2098,25 @@
+                 //
+                 // this is of course a bad hack, especially as we cannot
+                 // set the right cursor this way
+-                XGrabPointer( getDisplay()->GetDisplay(),
+-                              GDK_WINDOW_XWINDOW( m_pWindow->window),
+-                              bOwnerEvents,
+-                              PointerMotionMask | ButtonPressMask | ButtonReleaseMask,
+-                              GrabModeAsync,
+-                              GrabModeAsync,
+-                              None,
+-                              None,
+-                              CurrentTime
+-                              );
++                if( !pEnv || !*pEnv )
++                    XGrabPointer( getDisplay()->GetDisplay(),
++                                  GDK_WINDOW_XWINDOW( m_pWindow->window),
++                                  bOwnerEvents,
++                                  PointerMotionMask | ButtonPressMask | ButtonReleaseMask,
++                                  GrabModeAsync,
++                                  GrabModeAsync,
++                                  None,
++                                  None,
++                                  CurrentTime
++                        );
+ 
+             }
+         }
+         else
+         {
+             // Two GdkDisplays may be open
+-            gdk_display_pointer_ungrab( getGdkDisplay(), GDK_CURRENT_TIME);
++            if( !pEnv || !*pEnv )
++                gdk_display_pointer_ungrab( getGdkDisplay(), GDK_CURRENT_TIME);
+         }
+     }
+ }
+--- vcl/unx/source/app/saldisp.cxx	2008-04-11 11:48:34.000000000 +0200
++++ vcl/unx/source/app/saldisp.cxx	2008-05-10 14:18:29.000000000 +0200
+@@ -2139,10 +2174,13 @@
+ 
+ int SalDisplay::CaptureMouse( SalFrame *pCapture )
+ {
++    static const char* pEnv = getenv( "SAL_NO_MOUSEGRABS" );
++
+     if( !pCapture )
+     {
+         m_pCapture = NULL;
+-        XUngrabPointer( GetDisplay(), CurrentTime );
++        if( !pEnv || !*pEnv )
++            XUngrabPointer( GetDisplay(), CurrentTime );
+ 		XFlush( GetDisplay() );
+         return 0;
+     }
+@@ -2151,20 +2189,23 @@
+ 
+     // FIXME: get rid of X11SalFrame
+     const SystemEnvData* pEnvData = pCapture->GetSystemData();
+-    int ret = XGrabPointer( GetDisplay(),
+-                            (XLIB_Window)pEnvData->aWindow,
+-                            False,
+-                            PointerMotionMask| ButtonPressMask|ButtonReleaseMask,
+-                            GrabModeAsync,
+-                            GrabModeAsync,
+-                            None,
+-                            static_cast<X11SalFrame*>(pCapture)->GetCursor(),
+-                            CurrentTime );
+-
+-    if( ret != GrabSuccess )
++    if( !pEnv || !*pEnv )
+     {
+-        DBG_ASSERT( 1, "SalDisplay::CaptureMouse could not grab pointer\n");
+-        return -1;
++        int ret = XGrabPointer( GetDisplay(),
++                                (XLIB_Window)pEnvData->aWindow,
++                                False,
++                                PointerMotionMask| ButtonPressMask|ButtonReleaseMask,
++                                GrabModeAsync,
++                                GrabModeAsync,
++                                None,
++                                static_cast<X11SalFrame*>(pCapture)->GetCursor(),
++                                CurrentTime );
++        
++        if( ret != GrabSuccess )
++        {
++            DBG_ASSERT( 1, "SalDisplay::CaptureMouse could not grab pointer\n");
++            return -1;
++        }
+     }
+ 
+     m_pCapture = pCapture;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]