sc/inc/scmod.hxx | 7 ++ sc/source/ui/app/scdll.cxx | 3 - sc/source/ui/app/scmod.cxx | 86 ++++++++++++++++++++++++++++-- sc/source/ui/condformat/condformatdlg.cxx | 26 ++------- sc/source/ui/condformat/condformatmgr.cxx | 5 + sc/source/ui/formdlg/formula.cxx | 4 - sc/source/ui/inc/IAnyRefDialog.hxx | 2 sc/source/ui/inc/anyrefdg.hxx | 46 +++++++++------- sc/source/ui/inc/condformatdlg.hxx | 4 - sc/source/ui/inc/condformatmgr.hxx | 2 sc/source/ui/inc/formula.hxx | 2 sc/source/ui/inc/gridwin.hxx | 2 sc/source/ui/inc/reffact.hxx | 3 - sc/source/ui/inc/tabview.hxx | 2 sc/source/ui/miscdlgs/anyrefdg.cxx | 43 ++++++++++----- sc/source/ui/src/condformatdlg.src | 2 sc/source/ui/view/cellsh1.cxx | 66 +++++++++++++++++------ sc/source/ui/view/gridwin.cxx | 13 ++++ sc/source/ui/view/reffact.cxx | 21 ------- sc/source/ui/view/tabview.cxx | 11 +++ sc/source/ui/view/tabview3.cxx | 2 sc/source/ui/view/tabvwsh.cxx | 3 - sc/source/ui/view/tabvwsh4.cxx | 2 sc/source/ui/view/tabvwshc.cxx | 53 ------------------ tools/inc/tools/wintypes.hxx | 1 vcl/inc/vcl/window.hxx | 5 + vcl/source/window/window.cxx | 11 +++ vcl/source/window/winproc.cxx | 4 - 28 files changed, 268 insertions(+), 163 deletions(-)
New commits: commit 61d43ea6aaaa953e2243548932e03649bb36f7b4 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Oct 21 12:12:33 2012 +0200 remove commented out methods and parameters in ScAnyRefDlg Change-Id: Ie9e9baf42c93353a68ef35b456cd621bf42344c5 diff --git a/sc/source/ui/inc/IAnyRefDialog.hxx b/sc/source/ui/inc/IAnyRefDialog.hxx index afd90f5..eddecd8 100644 --- a/sc/source/ui/inc/IAnyRefDialog.hxx +++ b/sc/source/ui/inc/IAnyRefDialog.hxx @@ -53,7 +53,7 @@ public: virtual sal_Bool IsDocAllowed( SfxObjectShell* pDocSh ) const = 0; virtual void AddRefEntry() = 0; virtual void SetActive() = 0; - virtual void ViewShellChanged( ScTabViewShell* pScViewShell ) = 0; + virtual void ViewShellChanged() = 0; }; #endif // SC_IANYREFDIALOG_HXX_INCLUDED diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index b95aa08..cd26719 100644 --- a/sc/source/ui/inc/anyrefdg.hxx +++ b/sc/source/ui/inc/anyrefdg.hxx @@ -98,7 +98,7 @@ public: bool DoClose( sal_uInt16 nId ); void SetDispatcherLock( bool bLock ); void EnableSpreadsheets( bool bFlag = true, bool bChildren = true ); - void ViewShellChanged( ScTabViewShell* pScViewShell ); + void ViewShellChanged(); static void enableInput(bool _bInput); @@ -112,7 +112,7 @@ public: //============================================================================ -class SC_DLLPUBLIC ScRefHandler : //public SfxModelessDialog, +class SC_DLLPUBLIC ScRefHandler : public IAnyRefDialog { Window & m_rWindow; @@ -141,9 +141,6 @@ protected: void SetDispatcherLock( bool bLock ); - //Overwrite TWindow will implemented by ScRefHdlrImplBase - //virtual long PreNotify( NotifyEvent& rNEvt ); - virtual void RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ); virtual void RefInputDone( sal_Bool bForced = false ); void ShowSimpleReference( const XubString& rStr ); @@ -155,8 +152,7 @@ protected: void stateChanged(const StateChangedType nStateChange, const bool bBindRef); public: - ScRefHandler( Window &rWindow, SfxBindings* pB/*, SfxChildWindow* pCW, - Window* pParent, sal_uInt16 nResId*/, bool bBindRef ); + ScRefHandler( Window &rWindow, SfxBindings* pB, bool bBindRef ); virtual ~ScRefHandler(); virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ) = 0; @@ -172,14 +168,10 @@ public: virtual void ToggleCollapsed( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ); virtual void ReleaseFocus( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ); - virtual void ViewShellChanged( ScTabViewShell* pScViewShell ); + virtual void ViewShellChanged(); void SwitchToDocument(); - //SfxBindings& GetBindings(); virtual void SetActive() = 0; -// virtual sal_Bool Close(); - //Overwrite TWindow will implemented by ScRefHdlrImplBase - //virtual void StateChanged( StateChangedType nStateChange ); public: bool EnterRefMode(); @@ -207,7 +199,6 @@ template< class TWindow, bool bBindRef = true > class ScRefHdlrImplBase: public TWindow, public ScRefHandler { public: - //Overwrite TWindow virtual long PreNotify( NotifyEvent& rNEvt ); virtual void StateChanged( StateChangedType nStateChange ); @@ -231,7 +222,7 @@ ScRefHdlrImplBase<TWindow, bBindRef>::ScRefHdlrImplBase( TBindings* pB, TChildWi template<class TWindow, bool bBindRef > template<class TParentWindow, class TResId, class TArg> -ScRefHdlrImplBase<TWindow,bBindRef>::ScRefHdlrImplBase( TParentWindow* pParent, TResId nResIdP, const TArg &rArg, SfxBindings *pB /*= NULL*/ ) +ScRefHdlrImplBase<TWindow,bBindRef>::ScRefHdlrImplBase( TParentWindow* pParent, TResId nResIdP, const TArg &rArg, SfxBindings *pB ) :TWindow( pParent, ScResId(static_cast<sal_uInt16>( nResIdP )), rArg ), ScRefHandler( *static_cast<TWindow*>(this), pB, bBindRef ){} template<class TWindow, bool bBindRef > diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx index 9595cf3..9dd9fb9 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -105,8 +105,8 @@ void ScFormulaReferenceHelper::enableInput( bool bEnable ) Window *pParent=pWin->GetParent(); if(pParent) { - pParent->EnableInput(bEnable,true /* sal_False */); - if(true /*bChildren*/) + pParent->EnableInput(bEnable,true); + if(true) pViewSh->EnableRefInput(bEnable); } } @@ -181,7 +181,7 @@ bool ScFormulaReferenceHelper::ParseWithNames( ScRangeList& rRanges, const Strin // ----------------------------------------------------------------------------- void ScFormulaReferenceHelper::ShowFormulaReference( const XubString& rStr ) { - if( /*!pRefEdit &&*/ bEnableColorRef) + if( bEnableColorRef) { bHighLightRef=true; ScViewData* pViewData=ScDocShell::GetViewData(); @@ -244,7 +244,7 @@ void ScFormulaReferenceHelper::HideReference( bool bDoneRefMode ) { ScViewData* pViewData=ScDocShell::GetViewData(); - if( pViewData && /*!pRefEdit &&*/ bHighLightRef && bEnableColorRef) + if( pViewData && bHighLightRef && bEnableColorRef) { ScTabViewShell* pTabViewShell=pViewData->GetViewShell(); @@ -263,7 +263,7 @@ void ScFormulaReferenceHelper::HideReference( bool bDoneRefMode ) // ----------------------------------------------------------------------------- void ScFormulaReferenceHelper::ShowReference( const XubString& rStr ) { - if( /*!pRefEdit &&*/ bEnableColorRef ) + if( bEnableColorRef ) { if( rStr.Search('(')!=STRING_NOTFOUND || rStr.Search('+')!=STRING_NOTFOUND || @@ -574,7 +574,7 @@ void ScFormulaReferenceHelper::SetDispatcherLock( bool bLock ) // for that view (ScTabViewShell::CreateRefDialog) } // ----------------------------------------------------------------------------- -void ScFormulaReferenceHelper::ViewShellChanged(ScTabViewShell* /* pScViewShell */) +void ScFormulaReferenceHelper::ViewShellChanged() { enableInput( false ); @@ -669,16 +669,14 @@ static void lcl_HideAllReferences() // class ScRefHandler //---------------------------------------------------------------------------- -ScRefHandler::ScRefHandler( Window &rWindow, SfxBindings* pB/*, SfxChildWindow* pCW, - Window* pParent, sal_uInt16 nResId*/, bool bBindRef ) - : //SfxModelessDialog ( pB, pCW, pParent, ScResId( nResId ) ), +ScRefHandler::ScRefHandler( Window &rWindow, SfxBindings* pB, bool bBindRef ): m_rWindow( rWindow ), m_bInRefMode( false ), m_aHelper(this,pB), pMyBindings( pB ), pActiveWin(NULL) { - m_aHelper.SetWindow(/*this*/&m_rWindow); + m_aHelper.SetWindow(&m_rWindow); if(m_rWindow.GetHelpId().isEmpty()) //Hack, da im SfxModelessDialog die HelpId m_rWindow.SetHelpId(m_rWindow.GetUniqueId()); //fuer einen ModelessDialog entfernt und //in eine UniqueId gewandelt wird, machen @@ -833,7 +831,7 @@ void ScRefHandler::SetDispatcherLock( bool bLock ) void ScRefHandler::ViewShellChanged() { - m_aHelper.ViewShellChanged(pScViewShell); + m_aHelper.ViewShellChanged(); } //---------------------------------------------------------------------------- commit c65e7ce3897fd9f9524e23039d39fad6d52fca28 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Mon Dec 3 00:46:02 2012 +0100 remove debug output Change-Id: I48b549ab93dc3b937e00f6f35185a6c1c4327bcc diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 0e05389..3e3319c 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -1727,7 +1727,6 @@ bool ScGridWindow::TestMouse( const MouseEvent& rMEvt, bool bAction ) void ScGridWindow::MouseButtonDown( const MouseEvent& rMEvt ) { - std::cout << "MouseButtonDown" << std::endl; nNestedButtonState = SC_NESTEDBUTTON_DOWN; HandleMouseButtonDown( rMEvt ); @@ -2043,7 +2042,6 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt ) void ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt ) { - std::cout << "MouseButtonUp" << std::endl; aCurMousePos = rMEvt.GetPosPixel(); ScDocument* pDoc = pViewData->GetDocument(); ScMarkData& rMark = pViewData->GetMarkData(); @@ -2472,14 +2470,8 @@ void ScGridWindow::FakeButtonUp() } } -#include <stdio.h> - void ScGridWindow::MouseMove( const MouseEvent& rMEvt ) { - fprintf( stderr, "MouseMove: %s %d %d %d\n", - rMEvt.IsSynthetic() ? "synthetic" : "real", - rMEvt.GetMode(), rMEvt.GetModifier(), rMEvt.GetButtons() ); - aCurMousePos = rMEvt.GetPosPixel(); if ( rMEvt.IsLeaveWindow() && pNoteMarker && !pNoteMarker->IsByKeyboard() ) commit 204e3eb3813524bf21aae58a76f54f29b969e9ed Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Mon Dec 3 00:43:04 2012 +0100 ugly hack to avoid virtual method in Window Change-Id: I7ffc13167f5ecbfe3afab6451e1ef52e81130d48 diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index d8d350c..5c97ed3 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -2325,11 +2325,40 @@ ScAnyRefModalDlg* ScModule::GetCurrentAnyRefDlg() void ScModule::PushNewAnyRefDlg( ScAnyRefModalDlg* pNewDlg ) { maAnyRefDlgStack.push( pNewDlg ); + + SfxViewShell* pViewShell = SfxViewShell::GetFirst(); + while(pViewShell) + { + if ( pViewShell->ISA(ScTabViewShell) ) + { + ScTabViewShell* pViewSh = (ScTabViewShell*)pViewShell; + pViewSh->SetInRefMode( true ); + } + pViewShell = SfxViewShell::GetNext( *pViewShell ); + } } void ScModule::PopAnyRefDlg() { maAnyRefDlgStack.pop(); + + if(maAnyRefDlgStack.empty()) + { + // no modal ref dlg any more + // disable the flag in ScGridWindow + + SfxViewShell* pViewShell = SfxViewShell::GetFirst(); + while(pViewShell) + { + if ( pViewShell->ISA(ScTabViewShell) ) + { + ScTabViewShell* pViewSh = (ScTabViewShell*)pViewShell; + pViewSh->SetInRefMode( false ); + } + pViewShell = SfxViewShell::GetNext( *pViewShell ); + } + + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx index 8c5833a..a6c9f7b 100644 --- a/sc/source/ui/inc/gridwin.hxx +++ b/sc/source/ui/inc/gridwin.hxx @@ -372,6 +372,8 @@ public: void UpdateDPFromFieldPopupMenu(); void UpdateVisibleRange(); + void SetInRefMode( bool bRefMode ); + // #114409# void CursorChanged(); void DrawLayerCreated(); @@ -392,8 +394,6 @@ public: void UpdateShrinkOverlay(); void UpdateAllOverlays(); - virtual bool IsInRefMode() const { return true; } - protected: // #114409# void ImpCreateOverlayObjects(); diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx index 218c506..ced5ea5 100644 --- a/sc/source/ui/inc/tabview.hxx +++ b/sc/source/ui/inc/tabview.hxx @@ -527,6 +527,8 @@ public: void SetBrushDocument( ScDocument* pNew, bool bLock ); void SetDrawBrushSet( SfxItemSet* pNew, bool bLock ); void ResetBrushDocument(); + + void SetInRefMode( bool bRefMode ); }; diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 58fa2f8..0e05389 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -5989,4 +5989,15 @@ void ScGridWindow::flushOverlayManager() xOverlayManager->flush(); } +void ScGridWindow::SetInRefMode( bool bInRefMode ) +{ + WinBits nBits = GetStyle(); + if(bInRefMode) + nBits |= WB_REFMODE; + else + nBits &= ~WB_REFMODE; + + SetStyle( nBits ); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx index 6752ad2..487f5c8 100644 --- a/sc/source/ui/view/tabview.cxx +++ b/sc/source/ui/view/tabview.cxx @@ -2325,5 +2325,16 @@ void ScTabView::EnableRefInput(bool bFlag) pRowBar[SC_SPLIT_TOP]->EnableInput(bFlag,false); } +void ScTabView::SetInRefMode( bool bRefMode ) +{ + if(pGridWin[SC_SPLIT_BOTTOMLEFT]) + pGridWin[SC_SPLIT_BOTTOMLEFT]->SetInRefMode( bRefMode ); + if(pGridWin[SC_SPLIT_BOTTOMRIGHT]) + pGridWin[SC_SPLIT_BOTTOMRIGHT]->SetInRefMode( bRefMode ); + if(pGridWin[SC_SPLIT_TOPLEFT]) + pGridWin[SC_SPLIT_TOPLEFT]->SetInRefMode( bRefMode ); + if(pGridWin[SC_SPLIT_TOPRIGHT]) + pGridWin[SC_SPLIT_TOPRIGHT]->SetInRefMode( bRefMode ); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tools/inc/tools/wintypes.hxx b/tools/inc/tools/wintypes.hxx index 60f9236..acd1162 100644 --- a/tools/inc/tools/wintypes.hxx +++ b/tools/inc/tools/wintypes.hxx @@ -172,6 +172,7 @@ typedef sal_Int64 WinBits; #define WB_AUTOVSCROLL ((WinBits)SAL_CONST_INT64(0x40000000)) #define WB_HYPHENATION (((WinBits)SAL_CONST_INT64(0x800000000)) | WB_WORDBREAK) #define WB_CHILDDLGCTRL ((WinBits)SAL_CONST_INT64(0x100000000000)) +#define WB_REFMODE ((WinBits)SAL_CONST_INT64(0x200000000000)) // system floating window #define WB_SYSTEMFLOATWIN ((WinBits)SAL_CONST_INT64(0x100000000)) diff --git a/vcl/inc/vcl/window.hxx b/vcl/inc/vcl/window.hxx index 9ba556c..6eabe15 100644 --- a/vcl/inc/vcl/window.hxx +++ b/vcl/inc/vcl/window.hxx @@ -811,7 +811,10 @@ public: */ sal_Bool IsInModalMode() const; - virtual bool IsInRefMode() const; + /** + * Necessary for calc ref input handling from modal dialogs + */ + bool IsInModalNonRefMode() const; void SetActivateMode( sal_uInt16 nMode ); sal_uInt16 GetActivateMode() const; diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index d1ea694..fd96248 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -3974,7 +3974,7 @@ void Window::ImplGrabFocus( sal_uInt16 nFlags ) } // If the Window is disabled, then we don't change the focus - if ( !IsEnabled() || !IsInputEnabled() /*|| IsInModalMode()*/ ) + if ( !IsEnabled() || !IsInputEnabled() || IsInModalNonRefMode() ) return; // we only need to set the focus if it is not already set @@ -9275,9 +9275,12 @@ sal_Bool Window::IsInModalMode() const return (mpWindowImpl->mpFrameWindow->mpWindowImpl->mpFrameData->mnModalMode != 0); } -bool Window::IsInRefMode() const +bool Window::IsInModalNonRefMode() const { - return false; + if(mpWindowImpl->mnStyle & WB_REFMODE) + return false; + + return IsInModalMode(); } void Window::ImplIncModalCount() diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index b3494a1..56fc9b1 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -238,7 +238,7 @@ static void ImplHandleMouseHelpRequest( Window* pChild, const Point& rMousePos ) nHelpMode |= HELPMODE_BALLOON; if ( nHelpMode ) { - if ( pChild->IsInputEnabled() /*&& ! pChild->IsInModalMode() */) + if ( pChild->IsInputEnabled() && !pChild->IsInModalNonRefMode() ) { HelpEvent aHelpEvent( rMousePos, nHelpMode ); pSVData->maHelpData.mbRequestingHelp = sal_True; @@ -449,7 +449,7 @@ long ImplHandleMouseEvent( Window* pWindow, sal_uInt16 nSVEvent, sal_Bool bMouse // no mouse messages to disabled windows // #106845# if the window was disabed during capturing we have to pass the mouse events to release capturing - if ( pSVData->maWinData.mpCaptureWin != pChild && (!pChild->IsEnabled() || !pChild->IsInputEnabled() /*|| (pChild->IsInModalMode() && !pChild->IsInRefMode())*/ ) ) + if ( pSVData->maWinData.mpCaptureWin != pChild && (!pChild->IsEnabled() || !pChild->IsInputEnabled() || pChild->IsInModalNonRefMode() ) ) { ImplHandleMouseFloatMode( pChild, aMousePos, nCode, nSVEvent, bMouseLeave ); if ( nSVEvent == EVENT_MOUSEMOVE ) commit 06842a8583d3d77de74964cdce4fba811818bf90 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Dec 2 20:33:12 2012 +0100 first working version of modal ref input dlgs The following things still need to be changed: * don't use virtual method in Window * Use a WinBits flag for it * move all the dialogs to it * fix the ugly hack for range name dlg * fix all the uncommented code in winproc.cxx * general clean-up Change-Id: I2a8cfc1c4abf591878b11aa4829a9ff910540eff diff --git a/sc/inc/scmod.hxx b/sc/inc/scmod.hxx index 521d821..2e7584a 100644 --- a/sc/inc/scmod.hxx +++ b/sc/inc/scmod.hxx @@ -41,6 +41,7 @@ #include <map> #include <list> #include <algorithm> +#include <stack> class KeyEvent; @@ -81,6 +82,7 @@ class ScFormEditData; class ScMarkData; struct ScDragData; struct ScClipData; +class ScAnyRefModalDlg; //================================================================== @@ -124,6 +126,7 @@ class ScModule: public SfxModule, public SfxListener, utl::ConfigurationListener bool mbIsInSharedDocSaving:1; std::map<sal_uInt16, std::list<Window*> > m_mapRefWindow; + std::stack<ScAnyRefModalDlg*> maAnyRefDlgStack; public: SFX_DECL_INTERFACE(SCID_APP) @@ -262,6 +265,10 @@ SC_DLLPUBLIC void SetAppOptions ( const ScAppOptions& rO SC_DLLPUBLIC sal_Bool UnregisterRefWindow( sal_uInt16 nSlotId, Window *pWnd ); SC_DLLPUBLIC sal_Bool IsAliveRefDlg( sal_uInt16 nSlotId, Window *pWnd ); SC_DLLPUBLIC Window * Find1RefWindow( sal_uInt16 nSlotId, Window *pWndAncestor ); + + ScAnyRefModalDlg* GetCurrentAnyRefDlg(); + void PushNewAnyRefDlg( ScAnyRefModalDlg* pDlg ); + void PopAnyRefDlg(); }; #define SC_MOD() ( *(ScModule**) GetAppData(SHL_CALC) ) diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx index 9c06371..44b0e30 100644 --- a/sc/source/ui/app/scdll.cxx +++ b/sc/source/ui/app/scdll.cxx @@ -260,9 +260,6 @@ void ScDLL::Init() ScXMLSourceDlgWrapper ::RegisterChildWindow(false, pMod); ScNameDlgWrapper ::RegisterChildWindow(false, pMod); ScNameDefDlgWrapper ::RegisterChildWindow(false, pMod); - ScCondFormatConditionDlgWrapper ::RegisterChildWindow(false, pMod); - ScCondFormatColorScaleDlgWrapper ::RegisterChildWindow(false, pMod); - ScCondFormatDataBarDlgWrapper ::RegisterChildWindow(false, pMod); ScPivotLayoutWrapper ::RegisterChildWindow(false, pMod); ScTabOpDlgWrapper ::RegisterChildWindow(false, pMod); ScFilterDlgWrapper ::RegisterChildWindow(false, pMod); diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index 2dd1158..d8d350c 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -42,6 +42,7 @@ #include <sfx2/objface.hxx> #include "IAnyRefDialog.hxx" +#include "anyrefdg.hxx" #include <svtools/ehdl.hxx> #include <svtools/accessibilityoptions.hxx> @@ -1656,12 +1657,17 @@ sal_Bool ScModule::IsModalMode(SfxObjectShell* pDocSh) if ( nCurRefDlgId ) { SfxChildWindow* pChildWnd = lcl_GetChildWinFromAnyView( nCurRefDlgId ); + ScAnyRefModalDlg* pModalDlg = GetCurrentAnyRefDlg(); if ( pChildWnd ) { IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); bIsModal = pChildWnd->IsVisible() && !( pRefDlg->IsRefInputMode() && pRefDlg->IsDocAllowed(pDocSh) ); } + else if(pModalDlg) + { + bIsModal = pModalDlg->IsVisible() && !(pModalDlg->IsRefInputMode() && pModalDlg->IsDocAllowed(pDocSh) ); + } else { // in 592 and above, the dialog isn't visible in other views @@ -1695,8 +1701,11 @@ sal_Bool ScModule::IsTableLocked() if ( nCurRefDlgId ) { SfxChildWindow* pChildWnd = lcl_GetChildWinFromAnyView( nCurRefDlgId ); + ScAnyRefModalDlg* pModalDlg = GetCurrentAnyRefDlg(); if ( pChildWnd ) bLocked = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow())->IsTableLocked(); + else if( pModalDlg ) + bLocked = pModalDlg->IsTableLocked(); else bLocked = sal_True; // for other views, see IsModalMode } @@ -1714,8 +1723,11 @@ sal_Bool ScModule::IsRefDialogOpen() if ( nCurRefDlgId ) { SfxChildWindow* pChildWnd = lcl_GetChildWinFromAnyView( nCurRefDlgId ); + ScAnyRefModalDlg* pModalDlg = GetCurrentAnyRefDlg(); if ( pChildWnd ) bIsOpen = pChildWnd->IsVisible(); + else if(pModalDlg) + bIsOpen = pModalDlg->IsVisible(); else bIsOpen = sal_True; // for other views, see IsModalMode } @@ -1733,11 +1745,18 @@ sal_Bool ScModule::IsFormulaMode() if ( nCurRefDlgId ) { SfxChildWindow* pChildWnd = lcl_GetChildWinFromAnyView( nCurRefDlgId ); + ScAnyRefModalDlg* pModalDlg = GetCurrentAnyRefDlg(); if ( pChildWnd ) { IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); bIsFormula = pChildWnd->IsVisible() && pRefDlg->IsRefInputMode(); } + else if(pModalDlg) + { + bIsFormula = pModalDlg->IsVisible() && pModalDlg->IsRefInputMode(); + } + else + bIsFormula = true; } else { @@ -1776,7 +1795,8 @@ void ScModule::SetReference( const ScRange& rRef, ScDocument* pDoc, if( nCurRefDlgId ) { SfxChildWindow* pChildWnd = lcl_GetChildWinFromAnyView( nCurRefDlgId ); - OSL_ENSURE( pChildWnd, "NoChildWin" ); + ScAnyRefModalDlg* pModalDlg = GetCurrentAnyRefDlg(); + OSL_ENSURE( pChildWnd || pModalDlg, "NoChildWin" ); if ( pChildWnd ) { if ( nCurRefDlgId == SID_OPENDLG_CONSOLIDATE && pMarkData ) @@ -1795,6 +1815,13 @@ void ScModule::SetReference( const ScRange& rRef, ScDocument* pDoc, pRefDlg->HideReference( false ); pRefDlg->SetReference( aNew, pDoc ); } + else if(pModalDlg) + { + // hide the (color) selection now instead of later from LoseFocus, + // don't abort the ref input that causes this call (bDoneRefMode = sal_False) + pModalDlg->HideReference( false ); + pModalDlg->SetReference( aNew, pDoc ); + } } else { @@ -1816,12 +1843,15 @@ void ScModule::AddRefEntry() // "Mehrfachselektion" if ( nCurRefDlgId ) { SfxChildWindow* pChildWnd = lcl_GetChildWinFromAnyView( nCurRefDlgId ); - OSL_ENSURE( pChildWnd, "NoChildWin" ); + ScAnyRefModalDlg* pModalDlg = GetCurrentAnyRefDlg(); + OSL_ENSURE( pChildWnd || pModalDlg, "NoChildWin" ); if ( pChildWnd ) { IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); pRefDlg->AddRefEntry(); } + else if(pModalDlg) + pModalDlg->AddRefEntry(); } else { @@ -1843,12 +1873,15 @@ void ScModule::EndReference() if ( nCurRefDlgId ) { SfxChildWindow* pChildWnd = lcl_GetChildWinFromAnyView( nCurRefDlgId ); - OSL_ENSURE( pChildWnd, "NoChildWin" ); + ScAnyRefModalDlg* pModalDlg = GetCurrentAnyRefDlg(); + OSL_ENSURE( pChildWnd || pModalDlg, "NoChildWin" ); if ( pChildWnd ) { IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); pRefDlg->SetActive(); } + else + pModalDlg->SetActive(); } } @@ -2281,4 +2314,22 @@ Window * ScModule::Find1RefWindow( sal_uInt16 nSlotId, Window *pWndAncestor ) return NULL; } +ScAnyRefModalDlg* ScModule::GetCurrentAnyRefDlg() +{ + if(!maAnyRefDlgStack.empty()) + return maAnyRefDlgStack.top(); + + return NULL; +} + +void ScModule::PushNewAnyRefDlg( ScAnyRefModalDlg* pNewDlg ) +{ + maAnyRefDlgStack.push( pNewDlg ); +} + +void ScModule::PopAnyRefDlg() +{ + maAnyRefDlgStack.pop(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/condformat/condformatdlg.cxx b/sc/source/ui/condformat/condformatdlg.cxx index 8780647..78214aa 100644 --- a/sc/source/ui/condformat/condformatdlg.cxx +++ b/sc/source/ui/condformat/condformatdlg.cxx @@ -355,9 +355,9 @@ IMPL_LINK_NOARG( ScCondFormatList, ScrollHdl ) //ScCondFormatDlg //--------------------------------------------------- -ScCondFormatDlg::ScCondFormatDlg(SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, ScDocument* pDoc, const ScConditionalFormat* pFormat, const ScRangeList& rRange, +ScCondFormatDlg::ScCondFormatDlg(Window* pParent, ScDocument* pDoc, const ScConditionalFormat* pFormat, const ScRangeList& rRange, const ScAddress& rPos, condformat::dialog::ScCondFormatDialogType eType): - ScAnyRefDlg(pB, pCW, pParent, RID_SCDLG_CONDFORMAT ), + ScAnyRefModalDlg(pParent, ScResId(RID_SCDLG_CONDFORMAT) ), maBtnAdd( this, ScResId( BTN_ADD ) ), maBtnRemove( this, ScResId( BTN_REMOVE ) ), maBtnOk( this, ScResId( BTN_OK ) ), @@ -388,10 +388,13 @@ ScCondFormatDlg::ScCondFormatDlg(SfxBindings* pB, SfxChildWindow* pCW, Window* p FreeResource(); maEdRange.SetText(aRangeString); + + SC_MOD()->PushNewAnyRefDlg(this); } ScCondFormatDlg::~ScCondFormatDlg() { + SC_MOD()->PopAnyRefDlg(); } void ScCondFormatDlg::SetActive() @@ -406,7 +409,7 @@ void ScCondFormatDlg::SetActive() void ScCondFormatDlg::RefInputDone( sal_Bool bForced ) { - ScAnyRefDlg::RefInputDone(bForced); + ScAnyRefModalDlg::RefInputDone(bForced); } sal_Bool ScCondFormatDlg::IsTableLocked() const @@ -483,21 +486,8 @@ IMPL_LINK( ScCondFormatDlg, EdRangeModifyHdl, Edit*, pEdit ) sal_Bool ScCondFormatDlg::Close() { - sal_uInt16 nId = 0; - switch(meType) - { - case condformat::dialog::NONE: - case condformat::dialog::CONDITION: - nId = ScCondFormatConditionDlgWrapper::GetChildWindowId(); - break; - case condformat::dialog::COLORSCALE: - nId = ScCondFormatColorScaleDlgWrapper::GetChildWindowId(); - break; - case condformat::dialog::DATABAR: - nId = ScCondFormatDataBarDlgWrapper::GetChildWindowId(); - break; - } - + sal_uInt16 nId = 1; + EndDialog(); return DoClose(nId); } diff --git a/sc/source/ui/condformat/condformatmgr.cxx b/sc/source/ui/condformat/condformatmgr.cxx index 8039738..b8fb972 100644 --- a/sc/source/ui/condformat/condformatmgr.cxx +++ b/sc/source/ui/condformat/condformatmgr.cxx @@ -193,6 +193,11 @@ ScCondFormatManagerDlg::~ScCondFormatManagerDlg() delete mpFormatList; } +bool ScCondFormatManagerDlg::IsInRefMode() const +{ + return true; +} + ScConditionalFormatList* ScCondFormatManagerDlg::GetConditionalFormatList() { ScConditionalFormatList* pList = mpFormatList; diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx index 4c01577..b8682d0 100644 --- a/sc/source/ui/formdlg/formula.cxx +++ b/sc/source/ui/formdlg/formula.cxx @@ -526,9 +526,9 @@ void ScFormulaDlg::HideReference( sal_Bool bDoneRefMode ) { m_aHelper.HideReference(bDoneRefMode); } -void ScFormulaDlg::ViewShellChanged( ScTabViewShell* pScViewShell ) +void ScFormulaDlg::ViewShellChanged() { - m_aHelper.ViewShellChanged( pScViewShell ); + m_aHelper.ViewShellChanged(); } void ScFormulaDlg::AddRefEntry( ) { diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index 8b66f68..b95aa08 100644 --- a/sc/source/ui/inc/anyrefdg.hxx +++ b/sc/source/ui/inc/anyrefdg.hxx @@ -190,8 +190,21 @@ public: //============================================================================ + +class ScRefHdlModalImpl : public ModalDialog, public ScRefHandler +{ +public: + + virtual long PreNotify( NotifyEvent& rNEvt ); + virtual void StateChanged( StateChangedType nStateChange ); +protected: + ScRefHdlModalImpl( Window* pParent, ResId& rResId ); + +private: +}; + template< class TWindow, bool bBindRef = true > -class ScRefHdlrImplBase:public TWindow, public ScRefHandler +class ScRefHdlrImplBase: public TWindow, public ScRefHandler { public: //Overwrite TWindow @@ -238,14 +251,20 @@ void ScRefHdlrImplBase<TWindow, bBindRef>::StateChanged( StateChangedType nState ScRefHandler::stateChanged( nStateChange, bBindRef ); } +class ScAnyRefModalDlg : public ScRefHdlModalImpl +{ +public: + ScAnyRefModalDlg(Window* pParent, ResId rResId); +}; + //============================================================================ template<class TDerived, class TBase, bool bBindRef = true> -struct ScRefHdlrImpl: ScRefHdlrImplBase<TBase, bBindRef > +struct ScRefHdlrImpl: ScRefHdlrImplBase< TBase, bBindRef > { enum { UNKNOWN_SLOTID = 0U, SLOTID = UNKNOWN_SLOTID }; template<class T1, class T2, class T3, class T4> - ScRefHdlrImpl( const T1 & rt1, const T2 & rt2, const T3 & rt3, const T4 & rt4 ):ScRefHdlrImplBase<TBase, bBindRef >(rt1, rt2, rt3, rt4 ) + ScRefHdlrImpl( const T1 & rt1, const T2 & rt2, const T3& rt3, const T4& rt4 ):ScRefHdlrImplBase<TBase, bBindRef >(rt1, rt2, rt3, rt4 ) { SC_MOD()->RegisterRefWindow( static_cast<sal_uInt16>( static_cast<TDerived*>(this)->SLOTID ), this ); } @@ -259,7 +278,7 @@ struct ScRefHdlrImpl: ScRefHdlrImplBase<TBase, bBindRef > struct ScAnyRefDlg : ::ScRefHdlrImpl< ScAnyRefDlg, SfxModelessDialog> { template<class T1, class T2, class T3, class T4> - ScAnyRefDlg( const T1 & rt1, const T2 & rt2, const T3 & rt3, const T4 & rt4 ):ScRefHdlrImpl< ScAnyRefDlg, SfxModelessDialog>(rt1, rt2, rt3, rt4){} + ScAnyRefDlg( const T1 & rt1, const T2 & rt2, const T3& rt3, const T4& rt4 ):ScRefHdlrImpl< ScAnyRefDlg, SfxModelessDialog>(rt1, rt2, rt3, rt4){} }; //============================================================================ diff --git a/sc/source/ui/inc/condformatdlg.hxx b/sc/source/ui/inc/condformatdlg.hxx index 194d60c..f5c3e25 100644 --- a/sc/source/ui/inc/condformatdlg.hxx +++ b/sc/source/ui/inc/condformatdlg.hxx @@ -96,7 +96,7 @@ public: DECL_LINK( ColFormatTypeHdl, ListBox*); }; -class ScCondFormatDlg : public ScAnyRefDlg +class ScCondFormatDlg : public ScAnyRefModalDlg { private: PushButton maBtnAdd; @@ -129,7 +129,7 @@ protected: public: - ScCondFormatDlg(SfxBindings* pB, SfxChildWindow* pSW, Window* pWindow, ScDocument* pDoc, const ScConditionalFormat* pFormat, + ScCondFormatDlg(Window* pWindow, ScDocument* pDoc, const ScConditionalFormat* pFormat, const ScRangeList& rRange, const ScAddress& rPos, condformat::dialog::ScCondFormatDialogType eType); virtual ~ScCondFormatDlg(); diff --git a/sc/source/ui/inc/condformatmgr.hxx b/sc/source/ui/inc/condformatmgr.hxx index cb41d20..c13ff6b 100644 --- a/sc/source/ui/inc/condformatmgr.hxx +++ b/sc/source/ui/inc/condformatmgr.hxx @@ -87,6 +87,8 @@ public: bool CondFormatsChanged(); + virtual bool IsInRefMode() const; + private: PushButton maBtnAdd; PushButton maBtnRemove; diff --git a/sc/source/ui/inc/formula.hxx b/sc/source/ui/inc/formula.hxx index 8fcc104..04c2ba5 100644 --- a/sc/source/ui/inc/formula.hxx +++ b/sc/source/ui/inc/formula.hxx @@ -110,7 +110,7 @@ public: virtual sal_Bool IsDocAllowed( SfxObjectShell* pDocSh ) const; virtual void AddRefEntry(); virtual void SetActive(); - virtual void ViewShellChanged( ScTabViewShell* pScViewShell ); + virtual void ViewShellChanged(); protected: virtual void RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ); diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx index fdd7b2e..8c5833a 100644 --- a/sc/source/ui/inc/gridwin.hxx +++ b/sc/source/ui/inc/gridwin.hxx @@ -392,6 +392,8 @@ public: void UpdateShrinkOverlay(); void UpdateAllOverlays(); + virtual bool IsInRefMode() const { return true; } + protected: // #114409# void ImpCreateOverlayObjects(); diff --git a/sc/source/ui/inc/reffact.hxx b/sc/source/ui/inc/reffact.hxx index 447383b..19a08c5 100644 --- a/sc/source/ui/inc/reffact.hxx +++ b/sc/source/ui/inc/reffact.hxx @@ -45,9 +45,6 @@ DECL_WRAPPER_WITHID(ScNameDlgWrapper) DECL_WRAPPER_WITHID(ScNameDefDlgWrapper) -DECL_WRAPPER_WITHID(ScCondFormatConditionDlgWrapper) -DECL_WRAPPER_WITHID(ScCondFormatColorScaleDlgWrapper) -DECL_WRAPPER_WITHID(ScCondFormatDataBarDlgWrapper) DECL_WRAPPER_WITHID(ScSolverDlgWrapper) DECL_WRAPPER_WITHID(ScOptSolverDlgWrapper) DECL_WRAPPER_WITHID(ScXMLSourceDlgWrapper) diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx index 3b4e9a4..9595cf3 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -831,7 +831,7 @@ void ScRefHandler::SetDispatcherLock( bool bLock ) //---------------------------------------------------------------------------- -void ScRefHandler::ViewShellChanged(ScTabViewShell* pScViewShell ) +void ScRefHandler::ViewShellChanged() { m_aHelper.ViewShellChanged(pScViewShell); } @@ -937,4 +937,25 @@ void ScRefHandler::RefInputDone( sal_Bool bForced ) m_aHelper.RefInputDone( bForced ); } +//------------------------------------------------------------------------------- + +ScRefHdlModalImpl::ScRefHdlModalImpl( Window* pParent, ResId& rResId ): + ModalDialog( pParent, rResId ), + ScRefHandler(dynamic_cast<Window&>(*this), NULL, true) {} + +long ScRefHdlModalImpl::PreNotify( NotifyEvent& rNEvt ) +{ + ScRefHandler::preNotify( rNEvt, true ); + return ModalDialog::PreNotify( rNEvt ); +} + +void ScRefHdlModalImpl::StateChanged( StateChangedType nStateChange ) +{ + ModalDialog::StateChanged( nStateChange ); + ScRefHandler::stateChanged( nStateChange, true ); +} + +ScAnyRefModalDlg::ScAnyRefModalDlg( Window* pParent, ResId aResId ): + ScRefHdlModalImpl( pParent, aResId ) {} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/src/condformatdlg.src b/sc/source/ui/src/condformatdlg.src index e0a5f25..22ca8fe 100644 --- a/sc/source/ui/src/condformatdlg.src +++ b/sc/source/ui/src/condformatdlg.src @@ -28,7 +28,7 @@ #include "condformatdlg.hrc" -ModelessDialog RID_SCDLG_CONDFORMAT +ModalDialog RID_SCDLG_CONDFORMAT { OutputSize = TRUE; Hide = TRUE; diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index 426e803..e8122b3 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -83,6 +83,7 @@ #include "cliputil.hxx" #include "markdata.hxx" #include "docpool.hxx" +#include "condformatdlg.hxx" #include "globstr.hrc" #include "scui_def.hxx" @@ -1769,25 +1770,58 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) case SID_OPENDLG_COLORSCALE: case SID_OPENDLG_DATABAR: { - sal_uInt16 nId = 0; - switch( nSlot ) + sal_uInt16 nId = 1; + + pScMod->SetRefDialog( nId, true ); + + ScRangeList aRangeList; + ScViewData* pData = GetViewData(); + pData->GetMarkData().FillRangeListWithMarks(&aRangeList, false); + + ScDocument* pDoc = GetViewData()->GetDocument(); + if(pDoc->IsTabProtected(pData->GetTabNo())) { - case SID_OPENDLG_CONDFRMT: - nId = ScCondFormatConditionDlgWrapper::GetChildWindowId(); - break; - case SID_OPENDLG_COLORSCALE: - nId = ScCondFormatColorScaleDlgWrapper::GetChildWindowId(); - break; - case SID_OPENDLG_DATABAR: - nId = ScCondFormatDataBarDlgWrapper::GetChildWindowId(); - break; - default: - break; + //ErrorMessage( STR_ERR_CONDFORMAT_PROTECTED ); + break; + } + + ScAddress aPos(pData->GetCurX(), pData->GetCurY(), pData->GetTabNo()); + if(aRangeList.empty()) + { + ScRange* pRange = new ScRange(aPos); + aRangeList.push_back(pRange); + } + + const ScConditionalFormat* pCondFormat = pDoc->GetCondFormat(aPos.Col(), aPos.Row(), aPos.Tab()); + ScCondFormatDlg* pCondFormatDlg = NULL; + if(pCondFormat) + { + const ScRangeList& rCondFormatRange = pCondFormat->GetRange(); + if(rCondFormatRange == aRangeList) + pCondFormatDlg = new ScCondFormatDlg( pTabViewShell->GetDialogParent(), pDoc, pCondFormat, rCondFormatRange, aPos, condformat::dialog::NONE ); + } + + if(!pCondFormatDlg) + { + condformat::dialog::ScCondFormatDialogType eType = condformat::dialog::NONE; + switch(nSlot) + { + case SID_OPENDLG_CONDFRMT: + eType = condformat::dialog::CONDITION; + break; + case SID_OPENDLG_COLORSCALE: + eType = condformat::dialog::COLORSCALE; + break; + case SID_OPENDLG_DATABAR: + eType = condformat::dialog::DATABAR; + break; + default: + break; + } + pCondFormatDlg = new ScCondFormatDlg( pTabViewShell->GetDialogParent(), pDoc, NULL, aRangeList, aRangeList.GetTopLeftCorner(), eType ); + pCondFormatDlg->Execute(); } - SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame(); - SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId ); - pScMod->SetRefDialog( nId, pWnd ? false : sal_True ); } break; diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 247ff73..58fa2f8 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -1727,6 +1727,7 @@ bool ScGridWindow::TestMouse( const MouseEvent& rMEvt, bool bAction ) void ScGridWindow::MouseButtonDown( const MouseEvent& rMEvt ) { + std::cout << "MouseButtonDown" << std::endl; nNestedButtonState = SC_NESTEDBUTTON_DOWN; HandleMouseButtonDown( rMEvt ); @@ -2042,6 +2043,7 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt ) void ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt ) { + std::cout << "MouseButtonUp" << std::endl; aCurMousePos = rMEvt.GetPosPixel(); ScDocument* pDoc = pViewData->GetDocument(); ScMarkData& rMark = pViewData->GetMarkData(); @@ -2470,8 +2472,14 @@ void ScGridWindow::FakeButtonUp() } } +#include <stdio.h> + void ScGridWindow::MouseMove( const MouseEvent& rMEvt ) { + fprintf( stderr, "MouseMove: %s %d %d %d\n", + rMEvt.IsSynthetic() ? "synthetic" : "real", + rMEvt.GetMode(), rMEvt.GetModifier(), rMEvt.GetButtons() ); + aCurMousePos = rMEvt.GetPosPixel(); if ( rMEvt.IsLeaveWindow() && pNoteMarker && !pNoteMarker->IsByKeyboard() ) @@ -2749,7 +2757,7 @@ void ScGridWindow::Tracking( const TrackingEvent& rTEvt ) if ( rTEvt.IsTrackingCanceled() ) // alles abbrechen... { - if (!pViewData->GetView()->IsInActivatePart()) + if (!pViewData->GetView()->IsInActivatePart() && !SC_MOD()->IsRefDialogOpen()) { if (bDPMouse) bDPMouse = false; // gezeichnet wird per bDragRect diff --git a/sc/source/ui/view/reffact.cxx b/sc/source/ui/view/reffact.cxx index 052fcaf..a7cebc4 100644 --- a/sc/source/ui/view/reffact.cxx +++ b/sc/source/ui/view/reffact.cxx @@ -44,9 +44,6 @@ SFX_IMPL_MODELESSDIALOG_WITHID(ScNameDlgWrapper, FID_DEFINE_NAME ) SFX_IMPL_MODELESSDIALOG_WITHID(ScNameDefDlgWrapper, FID_ADD_NAME ) -SFX_IMPL_MODELESSDIALOG_WITHID(ScCondFormatConditionDlgWrapper, SID_OPENDLG_CONDFRMT ) -SFX_IMPL_MODELESSDIALOG_WITHID(ScCondFormatColorScaleDlgWrapper, SID_OPENDLG_COLORSCALE ) -SFX_IMPL_MODELESSDIALOG_WITHID(ScCondFormatDataBarDlgWrapper, SID_OPENDLG_DATABAR ) SFX_IMPL_MODELESSDIALOG_WITHID(ScSolverDlgWrapper, SID_OPENDLG_SOLVE ) SFX_IMPL_MODELESSDIALOG_WITHID(ScOptSolverDlgWrapper, SID_OPENDLG_OPTSOLVER ) SFX_IMPL_MODELESSDIALOG_WITHID(ScXMLSourceDlgWrapper, SID_MANAGE_XML_SOURCE) @@ -121,24 +118,6 @@ IMPL_CHILD_CTOR( ScNameDlgWrapper, FID_DEFINE_NAME ) IMPL_CHILD_CTOR( ScNameDefDlgWrapper, FID_ADD_NAME ) //------------------------------------------------------------------------- -// ScCondFormatConditionDlgWrapper -//------------------------------------------------------------------------- - -IMPL_CHILD_CTOR( ScCondFormatConditionDlgWrapper, SID_OPENDLG_CONDFRMT ) - -//------------------------------------------------------------------------- -// ScCondFormatColorScaleDlgWrapper -//------------------------------------------------------------------------- - -IMPL_CHILD_CTOR( ScCondFormatColorScaleDlgWrapper, SID_OPENDLG_COLORSCALE ) - -//------------------------------------------------------------------------- -// ScCondFormatDataBarDlgWrapper -//------------------------------------------------------------------------- - -IMPL_CHILD_CTOR( ScCondFormatDataBarDlgWrapper, SID_OPENDLG_DATABAR ) - -//------------------------------------------------------------------------- // ScSolverDlgWrapper //------------------------------------------------------------------------- diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index f31cddc..7b10ecc 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -1741,7 +1741,7 @@ void ScTabView::SetTabNo( SCTAB nTab, bool bNew, bool bExtendSelection, bool bSa if ( pChildWnd ) { IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); - pRefDlg->ViewShellChanged(NULL); + pRefDlg->ViewShellChanged(); } } } diff --git a/sc/source/ui/view/tabvwsh.cxx b/sc/source/ui/view/tabvwsh.cxx index 75f3836..893f251 100644 --- a/sc/source/ui/view/tabvwsh.cxx +++ b/sc/source/ui/view/tabvwsh.cxx @@ -65,9 +65,6 @@ SFX_IMPL_INTERFACE(ScTabViewShell,SfxViewShell,ScResId(SCSTR_TABVIEWSHELL)) SFX_CHILDWINDOW_REGISTRATION(SID_TASKPANE); SFX_CHILDWINDOW_REGISTRATION(ScNameDlgWrapper::GetChildWindowId()); SFX_CHILDWINDOW_REGISTRATION(ScNameDefDlgWrapper::GetChildWindowId()); - SFX_CHILDWINDOW_REGISTRATION(ScCondFormatConditionDlgWrapper::GetChildWindowId()); - SFX_CHILDWINDOW_REGISTRATION(ScCondFormatColorScaleDlgWrapper::GetChildWindowId()); - SFX_CHILDWINDOW_REGISTRATION(ScCondFormatDataBarDlgWrapper::GetChildWindowId()); SFX_CHILDWINDOW_REGISTRATION(ScSolverDlgWrapper::GetChildWindowId()); SFX_CHILDWINDOW_REGISTRATION(ScOptSolverDlgWrapper::GetChildWindowId()); SFX_CHILDWINDOW_REGISTRATION(ScXMLSourceDlgWrapper::GetChildWindowId()); diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx index 595a93f..94314f6 100644 --- a/sc/source/ui/view/tabvwsh4.cxx +++ b/sc/source/ui/view/tabvwsh4.cxx @@ -210,7 +210,7 @@ void ScTabViewShell::Activate(sal_Bool bMDI) if ( pChildWnd ) { IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); - pRefDlg->ViewShellChanged(this); + pRefDlg->ViewShellChanged(); } } } diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx index 289e605..d3c57d6 100644 --- a/sc/source/ui/view/tabvwshc.cxx +++ b/sc/source/ui/view/tabvwshc.cxx @@ -182,59 +182,6 @@ SfxModelessDialog* ScTabViewShell::CreateRefDialog( } break; - case SID_OPENDLG_CONDFRMT: - case SID_OPENDLG_COLORSCALE: - case SID_OPENDLG_DATABAR: - { - ScRangeList aRangeList; - ScViewData* pData = GetViewData(); - pData->GetMarkData().FillRangeListWithMarks(&aRangeList, false); - - if(pDoc->IsTabProtected(pData->GetTabNo())) - { - ErrorMessage( STR_ERR_CONDFORMAT_PROTECTED ); - break; - } - - ScAddress aPos(pData->GetCurX(), pData->GetCurY(), pData->GetTabNo()); - if(aRangeList.empty()) - { - ScRange* pRange = new ScRange(aPos); - aRangeList.push_back(pRange); - } - - const ScConditionalFormat* pCondFormat = pDoc->GetCondFormat(aPos.Col(), aPos.Row(), aPos.Tab()); - condformat::dialog::ScCondFormatDialogType eType = condformat::dialog::NONE; - switch(nSlotId) - { - case SID_OPENDLG_CONDFRMT: - eType = condformat::dialog::CONDITION; - break; - case SID_OPENDLG_COLORSCALE: - eType = condformat::dialog::COLORSCALE; - break; - case SID_OPENDLG_DATABAR: - eType = condformat::dialog::DATABAR; - break; - default: - break; - } - - if(pCondFormat) - { - const ScRangeList& rCondFormatRange = pCondFormat->GetRange(); - if(rCondFormatRange == aRangeList) - pResult = new ScCondFormatDlg( pB, pCW, pParent, pDoc, pCondFormat, rCondFormatRange, aPos, eType ); - } - - if(!pResult) - { - pResult = new ScCondFormatDlg( pB, pCW, pParent, pDoc, NULL, aRangeList, aRangeList.GetTopLeftCorner(), eType ); - } - } - - break; - case SID_DEFINE_COLROWNAMERANGES: { pResult = new ScColRowNameRangesDlg( pB, pCW, pParent, GetViewData() ); diff --git a/vcl/inc/vcl/window.hxx b/vcl/inc/vcl/window.hxx index 9ef1688..9ba556c 100644 --- a/vcl/inc/vcl/window.hxx +++ b/vcl/inc/vcl/window.hxx @@ -811,6 +811,8 @@ public: */ sal_Bool IsInModalMode() const; + virtual bool IsInRefMode() const; + void SetActivateMode( sal_uInt16 nMode ); sal_uInt16 GetActivateMode() const; diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 7e7538a..d1ea694 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -3974,7 +3974,7 @@ void Window::ImplGrabFocus( sal_uInt16 nFlags ) } // If the Window is disabled, then we don't change the focus - if ( !IsEnabled() || !IsInputEnabled() || IsInModalMode() ) + if ( !IsEnabled() || !IsInputEnabled() /*|| IsInModalMode()*/ ) return; // we only need to set the focus if it is not already set @@ -9274,6 +9274,12 @@ sal_Bool Window::IsInModalMode() const { return (mpWindowImpl->mpFrameWindow->mpWindowImpl->mpFrameData->mnModalMode != 0); } + +bool Window::IsInRefMode() const +{ + return false; +} + void Window::ImplIncModalCount() { Window* pFrameWindow = mpWindowImpl->mpFrameWindow; diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index 6a12759..b3494a1 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -238,7 +238,7 @@ static void ImplHandleMouseHelpRequest( Window* pChild, const Point& rMousePos ) nHelpMode |= HELPMODE_BALLOON; if ( nHelpMode ) { - if ( pChild->IsInputEnabled() && ! pChild->IsInModalMode() ) + if ( pChild->IsInputEnabled() /*&& ! pChild->IsInModalMode() */) { HelpEvent aHelpEvent( rMousePos, nHelpMode ); pSVData->maHelpData.mbRequestingHelp = sal_True; @@ -449,7 +449,7 @@ long ImplHandleMouseEvent( Window* pWindow, sal_uInt16 nSVEvent, sal_Bool bMouse // no mouse messages to disabled windows // #106845# if the window was disabed during capturing we have to pass the mouse events to release capturing - if ( pSVData->maWinData.mpCaptureWin != pChild && (!pChild->IsEnabled() || !pChild->IsInputEnabled() || pChild->IsInModalMode() ) ) + if ( pSVData->maWinData.mpCaptureWin != pChild && (!pChild->IsEnabled() || !pChild->IsInputEnabled() /*|| (pChild->IsInModalMode() && !pChild->IsInRefMode())*/ ) ) { ImplHandleMouseFloatMode( pChild, aMousePos, nCode, nSVEvent, bMouseLeave ); if ( nSVEvent == EVENT_MOUSEMOVE ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits