diff options
-rw-r--r-- | editeng/source/editeng/editview.cxx | 5 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.cxx | 5 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.hxx | 2 | ||||
-rw-r--r-- | editeng/source/editeng/impedit2.cxx | 5 | ||||
-rw-r--r-- | editeng/source/outliner/outlvw.cxx | 6 | ||||
-rw-r--r-- | include/editeng/editview.hxx | 1 | ||||
-rw-r--r-- | include/editeng/outliner.hxx | 1 | ||||
-rw-r--r-- | include/vcl/seleng.hxx | 7 | ||||
-rw-r--r-- | sd/source/ui/view/drviews4.cxx | 3 | ||||
-rw-r--r-- | vcl/source/window/seleng.cxx | 9 |
10 files changed, 42 insertions, 2 deletions
diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx index f972ad75cecb..d86ee0ab3264 100644 --- a/editeng/source/editeng/editview.cxx +++ b/editeng/source/editeng/editview.cxx @@ -365,6 +365,11 @@ bool EditView::MouseButtonUp( const MouseEvent& rMouseEvent ) return pImpEditView->MouseButtonUp( rMouseEvent ); } +void EditView::ReleaseMouse() +{ + return pImpEditView->ReleaseMouse(); +} + bool EditView::MouseButtonDown( const MouseEvent& rMouseEvent ) { return pImpEditView->MouseButtonDown( rMouseEvent ); diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index 1c7ee7c50bfb..5e112874ecd4 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -1064,6 +1064,11 @@ bool ImpEditView::MouseButtonUp( const MouseEvent& rMouseEvent ) return pEditEngine->pImpEditEngine->MouseButtonUp( rMouseEvent, GetEditViewPtr() ); } +void ImpEditView::ReleaseMouse() +{ + pEditEngine->pImpEditEngine->ReleaseMouse(); +} + bool ImpEditView::MouseButtonDown( const MouseEvent& rMouseEvent ) { pEditEngine->CheckIdleFormatter(); // If fast typing and mouse button downs diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 4e93d9322d4e..68ef6edcf255 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -288,6 +288,7 @@ public: bool MouseButtonUp( const MouseEvent& rMouseEvent ); bool MouseButtonDown( const MouseEvent& rMouseEvent ); + void ReleaseMouse(); bool MouseMove( const MouseEvent& rMouseEvent ); void Command( const CommandEvent& rCEvt ); @@ -728,6 +729,7 @@ public: bool MouseButtonUp( const MouseEvent& rMouseEvent, EditView* pView ); bool MouseButtonDown( const MouseEvent& rMouseEvent, EditView* pView ); + void ReleaseMouse(); bool MouseMove( const MouseEvent& rMouseEvent, EditView* pView ); void Command( const CommandEvent& rCEvt, EditView* pView ); diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index fd3f7a001142..f1b0fbc76b97 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -586,6 +586,11 @@ bool ImpEditEngine::MouseButtonUp( const MouseEvent& rMEvt, EditView* pView ) return true; } +void ImpEditEngine::ReleaseMouse() +{ + GetSelEngine().ReleaseMouse(); +} + bool ImpEditEngine::MouseMove( const MouseEvent& rMEvt, EditView* pView ) { // MouseMove is called directly after ShowQuickHelp()! diff --git a/editeng/source/outliner/outlvw.cxx b/editeng/source/outliner/outlvw.cxx index c0d2d98fe083..bc0aeedead0d 100644 --- a/editeng/source/outliner/outlvw.cxx +++ b/editeng/source/outliner/outlvw.cxx @@ -51,7 +51,6 @@ using namespace ::com::sun::star; OutlinerView::OutlinerView( Outliner* pOut, vcl::Window* pWin ) { - pOwner = pOut; pEditView = new EditView( pOut->pEditEngine, pWin ); @@ -363,6 +362,11 @@ bool OutlinerView::MouseButtonUp( const MouseEvent& rMEvt ) return pEditView->MouseButtonUp( rMEvt ); } +void OutlinerView::ReleaseMouse() +{ + pEditView->ReleaseMouse(); +} + void OutlinerView::ImpToggleExpand( Paragraph* pPara ) { sal_Int32 nPara = pOwner->pParaList->GetAbsPos( pPara ); diff --git a/include/editeng/editview.hxx b/include/editeng/editview.hxx index 176de82f65e5..cf26a6250b68 100644 --- a/include/editeng/editview.hxx +++ b/include/editeng/editview.hxx @@ -140,6 +140,7 @@ public: bool MouseButtonUp( const MouseEvent& rMouseEvent ); bool MouseButtonDown( const MouseEvent& rMouseEvent ); + void ReleaseMouse(); bool MouseMove( const MouseEvent& rMouseEvent ); void Command( const CommandEvent& rCEvt ); diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx index ac5f18b6ffab..932cc9f19a8b 100644 --- a/include/editeng/outliner.hxx +++ b/include/editeng/outliner.hxx @@ -214,6 +214,7 @@ public: bool PostKeyEvent( const KeyEvent& rKEvt, vcl::Window* pFrameWin = NULL ); bool MouseButtonDown( const MouseEvent& ); bool MouseButtonUp( const MouseEvent& ); + void ReleaseMouse(); bool MouseMove( const MouseEvent& ); void ShowCursor( bool bGotoCursor = true ); diff --git a/include/vcl/seleng.hxx b/include/vcl/seleng.hxx index afe30c39a87a..d0da0e89148f 100644 --- a/include/vcl/seleng.hxx +++ b/include/vcl/seleng.hxx @@ -100,6 +100,13 @@ public: bool SelMouseButtonDown( const MouseEvent& rMEvt ); bool SelMouseButtonUp( const MouseEvent& rMEvt ); bool SelMouseMove( const MouseEvent& rMEvt ); + //SelMouseButtonDown captures mouse events, SelMouseButtonUp + //releases the capture. If you need to release the mouse + //capture after SelMouseButtonDown but before + //SelMouseButtonUp, e.g. to allow events to go to a + //context menu via "Command" which is delivered after + //mouse down but before mouse up, then use this + void ReleaseMouse(); // Keyboard void CursorPosChanging( bool bShift, bool bMod1 ); diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx index dbe9323a7f33..e92efea8be57 100644 --- a/sd/source/ui/view/drviews4.cxx +++ b/sd/source/ui/view/drviews4.cxx @@ -541,6 +541,9 @@ void DrawViewShell::Command(const CommandEvent& rCEvt, ::sd::Window* pWin) eLanguage = pOLV->GetOutliner()->GetLanguage( aSelection.nStartPara, aSelection.nStartPos ); } + //fdo#44998 if the outliner has captured the mouse events release the lock + //so the SdFieldPopup can get them + pOLV->ReleaseMouse(); SdFieldPopup aFieldPopup( pFldItem->GetField(), eLanguage ); if ( rCEvt.IsMouseEvent() ) diff --git a/vcl/source/window/seleng.cxx b/vcl/source/window/seleng.cxx index 63569289ae33..b9aa184d761a 100644 --- a/vcl/source/window/seleng.cxx +++ b/vcl/source/window/seleng.cxx @@ -244,7 +244,7 @@ bool SelectionEngine::SelMouseButtonUp( const MouseEvent& rMEvt ) if( !rMEvt.IsRight() ) { - pWin->ReleaseMouse(); + ReleaseMouse(); } if( (nFlags & SELENG_WAIT_UPEVT) && !(nFlags & SELENG_CMDEVT) && @@ -276,6 +276,13 @@ bool SelectionEngine::SelMouseButtonUp( const MouseEvent& rMEvt ) return true; } +void SelectionEngine::ReleaseMouse() +{ + if (!pWin) + return; + pWin->ReleaseMouse(); +} + bool SelectionEngine::SelMouseMove( const MouseEvent& rMEvt ) { |