diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-11-15 10:18:43 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-11-15 12:13:42 +0100 |
commit | 5b74eb68113d3721e1a3f9fa40024bf9b2a15f0c (patch) | |
tree | 1c959ccc7769fd8530a16cc904b5424d04faa208 /vcl/source/window | |
parent | b4aa631867638b993fda98b1c4fcfc47e5c6a1aa (diff) |
loplugin:flatten in vcl
Change-Id: I3527477277a9ae96eaf9fd068232f672da7c28c3
Reviewed-on: https://gerrit.libreoffice.org/44753
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vcl/source/window')
-rw-r--r-- | vcl/source/window/EnumContext.cxx | 108 | ||||
-rw-r--r-- | vcl/source/window/dialog.cxx | 85 | ||||
-rw-r--r-- | vcl/source/window/menubarwindow.cxx | 33 | ||||
-rw-r--r-- | vcl/source/window/menufloatingwindow.cxx | 77 | ||||
-rw-r--r-- | vcl/source/window/mouse.cxx | 185 | ||||
-rw-r--r-- | vcl/source/window/splitwin.cxx | 318 | ||||
-rw-r--r-- | vcl/source/window/toolbox.cxx | 59 | ||||
-rw-r--r-- | vcl/source/window/toolbox2.cxx | 77 |
8 files changed, 476 insertions, 466 deletions
diff --git a/vcl/source/window/EnumContext.cxx b/vcl/source/window/EnumContext.cxx index f2e46f1cf1ba..3e3431412e2d 100644 --- a/vcl/source/window/EnumContext.cxx +++ b/vcl/source/window/EnumContext.cxx @@ -111,22 +111,23 @@ void EnumContext::AddEntry (const ::rtl::OUString& rsName, const Application eAp void EnumContext::ProvideApplicationContainers() { - if (maApplicationMap.empty()) - { - AddEntry("com.sun.star.text.TextDocument", EnumContext::Application::Writer); - AddEntry("com.sun.star.text.GlobalDocument", EnumContext::Application::WriterGlobal); - AddEntry("com.sun.star.text.WebDocument", EnumContext::Application::WriterWeb); - AddEntry("com.sun.star.xforms.XMLFormDocument", EnumContext::Application::WriterXML); - AddEntry("com.sun.star.sdb.FormDesign", EnumContext::Application::WriterForm); - AddEntry("com.sun.star.sdb.TextReportDesign", EnumContext::Application::WriterReport); - AddEntry("com.sun.star.sheet.SpreadsheetDocument", EnumContext::Application::Calc); - AddEntry("com.sun.star.chart2.ChartDocument", EnumContext::Application::Chart); - AddEntry("com.sun.star.drawing.DrawingDocument", EnumContext::Application::Draw); - AddEntry("com.sun.star.presentation.PresentationDocument", EnumContext::Application::Impress); - - AddEntry("any", EnumContext::Application::Any); - AddEntry("none", EnumContext::Application::NONE); - } + if (!maApplicationMap.empty()) + return; + + AddEntry("com.sun.star.text.TextDocument", EnumContext::Application::Writer); + AddEntry("com.sun.star.text.GlobalDocument", EnumContext::Application::WriterGlobal); + AddEntry("com.sun.star.text.WebDocument", EnumContext::Application::WriterWeb); + AddEntry("com.sun.star.xforms.XMLFormDocument", EnumContext::Application::WriterXML); + AddEntry("com.sun.star.sdb.FormDesign", EnumContext::Application::WriterForm); + AddEntry("com.sun.star.sdb.TextReportDesign", EnumContext::Application::WriterReport); + AddEntry("com.sun.star.sheet.SpreadsheetDocument", EnumContext::Application::Calc); + AddEntry("com.sun.star.chart2.ChartDocument", EnumContext::Application::Chart); + AddEntry("com.sun.star.drawing.DrawingDocument", EnumContext::Application::Draw); + AddEntry("com.sun.star.presentation.PresentationDocument", EnumContext::Application::Impress); + + AddEntry("any", EnumContext::Application::Any); + AddEntry("none", EnumContext::Application::NONE); + } EnumContext::Application EnumContext::GetApplicationEnum (const ::rtl::OUString& rsApplicationName) @@ -155,43 +156,44 @@ void EnumContext::AddEntry (const ::rtl::OUString& rsName, const Context eContex void EnumContext::ProvideContextContainers() { - if (maContextMap.empty()) - { - AddEntry("any", Context::Any); - AddEntry("default", Context::Default); - AddEntry("empty", Context::Empty); - AddEntry("3DObject", Context::ThreeDObject); - AddEntry("Annotation", Context::Annotation); - AddEntry("Auditing", Context::Auditing); - AddEntry("Axis", Context::Axis); - AddEntry("Cell", Context::Cell); - AddEntry("Chart", Context::Chart); - AddEntry("ChartElements", Context::ChartElements); - AddEntry("Draw", Context::Draw); - AddEntry("DrawLine", Context::DrawLine); - AddEntry("DrawPage", Context::DrawPage); - AddEntry("DrawText", Context::DrawText); - AddEntry("EditCell", Context::EditCell); - AddEntry("ErrorBar", Context::ErrorBar); - AddEntry("Form", Context::Form); - AddEntry("Frame", Context::Frame); - AddEntry("Graphic", Context::Graphic); - AddEntry("Grid", Context::Grid); - AddEntry("HandoutPage", Context::HandoutPage); - AddEntry("MasterPage", Context::MasterPage); - AddEntry("Media", Context::Media); - AddEntry("MultiObject", Context::MultiObject); - AddEntry("NotesPage", Context::NotesPage); - AddEntry("OLE", Context::OLE); - AddEntry("OutlineText", Context::OutlineText); - AddEntry("Pivot", Context::Pivot); - AddEntry("Series", Context::Series); - AddEntry("SlidesorterPage", Context::SlidesorterPage); - AddEntry("Table", Context::Table); - AddEntry("Text", Context::Text); - AddEntry("TextObject", Context::TextObject); - AddEntry("Trendline", Context::Trendline); - } + if (!maContextMap.empty()) + return; + + AddEntry("any", Context::Any); + AddEntry("default", Context::Default); + AddEntry("empty", Context::Empty); + AddEntry("3DObject", Context::ThreeDObject); + AddEntry("Annotation", Context::Annotation); + AddEntry("Auditing", Context::Auditing); + AddEntry("Axis", Context::Axis); + AddEntry("Cell", Context::Cell); + AddEntry("Chart", Context::Chart); + AddEntry("ChartElements", Context::ChartElements); + AddEntry("Draw", Context::Draw); + AddEntry("DrawLine", Context::DrawLine); + AddEntry("DrawPage", Context::DrawPage); + AddEntry("DrawText", Context::DrawText); + AddEntry("EditCell", Context::EditCell); + AddEntry("ErrorBar", Context::ErrorBar); + AddEntry("Form", Context::Form); + AddEntry("Frame", Context::Frame); + AddEntry("Graphic", Context::Graphic); + AddEntry("Grid", Context::Grid); + AddEntry("HandoutPage", Context::HandoutPage); + AddEntry("MasterPage", Context::MasterPage); + AddEntry("Media", Context::Media); + AddEntry("MultiObject", Context::MultiObject); + AddEntry("NotesPage", Context::NotesPage); + AddEntry("OLE", Context::OLE); + AddEntry("OutlineText", Context::OutlineText); + AddEntry("Pivot", Context::Pivot); + AddEntry("Series", Context::Series); + AddEntry("SlidesorterPage", Context::SlidesorterPage); + AddEntry("Table", Context::Table); + AddEntry("Text", Context::Text); + AddEntry("TextObject", Context::TextObject); + AddEntry("Trendline", Context::Trendline); + } EnumContext::Context EnumContext::GetContextEnum (const ::rtl::OUString& rsContextName) diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx index 720153d5c7d2..a409bdc6e126 100644 --- a/vcl/source/window/dialog.cxx +++ b/vcl/source/window/dialog.cxx @@ -1102,59 +1102,60 @@ void Dialog::StartExecuteModal( const Link<Dialog&,void>& rEndDialogHdl ) void Dialog::EndDialog( long nResult ) { - if ( mbInExecute ) - { - SetModalInputMode(false); + if ( !mbInExecute ) + return; - // remove dialog from the list of dialogs which are being executed - ImplSVData* pSVData = ImplGetSVData(); - Dialog* pExeDlg = pSVData->maWinData.mpLastExecuteDlg; - while ( pExeDlg ) + SetModalInputMode(false); + + // remove dialog from the list of dialogs which are being executed + ImplSVData* pSVData = ImplGetSVData(); + Dialog* pExeDlg = pSVData->maWinData.mpLastExecuteDlg; + while ( pExeDlg ) + { + if ( pExeDlg == this ) { - if ( pExeDlg == this ) - { - pSVData->maWinData.mpLastExecuteDlg = mpPrevExecuteDlg; - break; - } - pExeDlg = pExeDlg->mpPrevExecuteDlg; + pSVData->maWinData.mpLastExecuteDlg = mpPrevExecuteDlg; + break; } - // set focus to previous modal dialogue if it is modal for - // the same frame parent (or NULL) - if( mpPrevExecuteDlg ) + pExeDlg = pExeDlg->mpPrevExecuteDlg; + } + // set focus to previous modal dialogue if it is modal for + // the same frame parent (or NULL) + if( mpPrevExecuteDlg ) + { + vcl::Window* pFrameParent = ImplGetFrameWindow()->ImplGetParent(); + vcl::Window* pPrevFrameParent = mpPrevExecuteDlg->ImplGetFrameWindow()->ImplGetParent(); + if( ( !pFrameParent && !pPrevFrameParent ) || + ( pFrameParent && pPrevFrameParent && pFrameParent->ImplGetFrame() == pPrevFrameParent->ImplGetFrame() ) + ) { - vcl::Window* pFrameParent = ImplGetFrameWindow()->ImplGetParent(); - vcl::Window* pPrevFrameParent = mpPrevExecuteDlg->ImplGetFrameWindow()->ImplGetParent(); - if( ( !pFrameParent && !pPrevFrameParent ) || - ( pFrameParent && pPrevFrameParent && pFrameParent->ImplGetFrame() == pPrevFrameParent->ImplGetFrame() ) - ) - { - mpPrevExecuteDlg->GrabFocus(); - } + mpPrevExecuteDlg->GrabFocus(); } - mpPrevExecuteDlg = nullptr; + } + mpPrevExecuteDlg = nullptr; - Hide(); - if ( GetParent() ) - { - NotifyEvent aNEvt( MouseNotifyEvent::ENDEXECUTEDIALOG, this ); - GetParent()->CompatNotify( aNEvt ); - } + Hide(); + if ( GetParent() ) + { + NotifyEvent aNEvt( MouseNotifyEvent::ENDEXECUTEDIALOG, this ); + GetParent()->CompatNotify( aNEvt ); + } - mpDialogImpl->mnResult = nResult; + mpDialogImpl->mnResult = nResult; - if ( mpDialogImpl->mbStartedModal ) + if ( mpDialogImpl->mbStartedModal ) + { + ImplEndExecuteModal(); + if (mpDialogImpl->maEndDialogHdl.IsSet()) { - ImplEndExecuteModal(); - if (mpDialogImpl->maEndDialogHdl.IsSet()) - { - mpDialogImpl->maEndDialogHdl.Call( *this ); - mpDialogImpl->maEndDialogHdl = Link<Dialog&,void>(); - } - mpDialogImpl->mbStartedModal = false; - mpDialogImpl->mnResult = -1; + mpDialogImpl->maEndDialogHdl.Call( *this ); + mpDialogImpl->maEndDialogHdl = Link<Dialog&,void>(); } - mbInExecute = false; + mpDialogImpl->mbStartedModal = false; + mpDialogImpl->mnResult = -1; } + mbInExecute = false; + } long Dialog::GetResult() const diff --git a/vcl/source/window/menubarwindow.cxx b/vcl/source/window/menubarwindow.cxx index 647eac636494..6486ffb86a9c 100644 --- a/vcl/source/window/menubarwindow.cxx +++ b/vcl/source/window/menubarwindow.cxx @@ -87,26 +87,27 @@ void DecoToolBox::SetImages( long nMaxHeight, bool bForce ) if( nMaxHeight < getMinSize().Height() ) nMaxHeight = getMinSize().Height(); - if( (lastSize != nMaxHeight - border) || bForce ) - { - lastSize = nMaxHeight - border; + if( (lastSize == nMaxHeight - border) && !bForce ) + return; - Color aEraseColor( 255, 255, 255, 255 ); - BitmapEx aBmpExDst( maImage.GetBitmapEx() ); - BitmapEx aBmpExSrc( aBmpExDst ); + lastSize = nMaxHeight - border; - aEraseColor.SetTransparency( 255 ); - aBmpExDst.Erase( aEraseColor ); - aBmpExDst.SetSizePixel( Size( lastSize, lastSize ) ); + Color aEraseColor( 255, 255, 255, 255 ); + BitmapEx aBmpExDst( maImage.GetBitmapEx() ); + BitmapEx aBmpExSrc( aBmpExDst ); - tools::Rectangle aSrcRect( Point(0,0), maImage.GetSizePixel() ); - tools::Rectangle aDestRect( Point((lastSize - maImage.GetSizePixel().Width())/2, - (lastSize - maImage.GetSizePixel().Height())/2 ), - maImage.GetSizePixel() ); + aEraseColor.SetTransparency( 255 ); + aBmpExDst.Erase( aEraseColor ); + aBmpExDst.SetSizePixel( Size( lastSize, lastSize ) ); + + tools::Rectangle aSrcRect( Point(0,0), maImage.GetSizePixel() ); + tools::Rectangle aDestRect( Point((lastSize - maImage.GetSizePixel().Width())/2, + (lastSize - maImage.GetSizePixel().Height())/2 ), + maImage.GetSizePixel() ); + + aBmpExDst.CopyPixel( aDestRect, aSrcRect, &aBmpExSrc ); + SetItemImage( IID_DOCUMENTCLOSE, Image( aBmpExDst ) ); - aBmpExDst.CopyPixel( aDestRect, aSrcRect, &aBmpExSrc ); - SetItemImage( IID_DOCUMENTCLOSE, Image( aBmpExDst ) ); - } } MenuBarWindow::MenuBarWindow( vcl::Window* pParent ) : diff --git a/vcl/source/window/menufloatingwindow.cxx b/vcl/source/window/menufloatingwindow.cxx index 0ec130ffe654..601434cbb8c7 100644 --- a/vcl/source/window/menufloatingwindow.cxx +++ b/vcl/source/window/menufloatingwindow.cxx @@ -64,51 +64,52 @@ MenuFloatingWindow::MenuFloatingWindow( Menu* pMen, vcl::Window* pParent, WinBit void MenuFloatingWindow::doShutdown() { - if( pMenu ) + if( !pMenu ) + return; + + // #105373# notify toolkit that highlight was removed + // otherwise the entry will not be read when the menu is opened again + if( nHighlightedItem != ITEMPOS_INVALID ) + pMenu->ImplCallEventListeners( VclEventId::MenuDehighlight, nHighlightedItem ); + if (!bKeyInput && pMenu && pMenu->pStartedFrom && !pMenu->pStartedFrom->IsMenuBar()) { - // #105373# notify toolkit that highlight was removed - // otherwise the entry will not be read when the menu is opened again - if( nHighlightedItem != ITEMPOS_INVALID ) - pMenu->ImplCallEventListeners( VclEventId::MenuDehighlight, nHighlightedItem ); - if (!bKeyInput && pMenu && pMenu->pStartedFrom && !pMenu->pStartedFrom->IsMenuBar()) + // #102461# remove highlight in parent + size_t i, nCount = pMenu->pStartedFrom->pItemList->size(); + for(i = 0; i < nCount; i++) { - // #102461# remove highlight in parent - size_t i, nCount = pMenu->pStartedFrom->pItemList->size(); - for(i = 0; i < nCount; i++) - { - MenuItemData* pData = pMenu->pStartedFrom->pItemList->GetDataFromPos( i ); - if( pData && ( pData->pSubMenu == pMenu ) ) - break; - } - if( i < nCount ) - { - MenuFloatingWindow* pPWin = static_cast<MenuFloatingWindow*>(pMenu->pStartedFrom->ImplGetWindow()); - if (pPWin) - pPWin->InvalidateItem(i); - } + MenuItemData* pData = pMenu->pStartedFrom->pItemList->GetDataFromPos( i ); + if( pData && ( pData->pSubMenu == pMenu ) ) + break; } - - // free the reference to the accessible component - SetAccessible( css::uno::Reference< css::accessibility::XAccessible >() ); - - aHighlightChangedTimer.Stop(); - - // #95056# invalidate screen area covered by system window - // so this can be taken into account if the commandhandler performs a scroll operation - if( GetParent() ) + if( i < nCount ) { - tools::Rectangle aInvRect( GetWindowExtentsRelative( GetParent() ) ); - GetParent()->Invalidate( aInvRect ); + MenuFloatingWindow* pPWin = static_cast<MenuFloatingWindow*>(pMenu->pStartedFrom->ImplGetWindow()); + if (pPWin) + pPWin->InvalidateItem(i); } - pMenu = nullptr; - RemoveEventListener( LINK( this, MenuFloatingWindow, ShowHideListener ) ); + } - aScrollTimer.Stop(); - aSubmenuCloseTimer.Stop(); - aSubmenuCloseTimer.Stop(); - aHighlightChangedTimer.Stop(); - aHighlightChangedTimer.Stop(); + // free the reference to the accessible component + SetAccessible( css::uno::Reference< css::accessibility::XAccessible >() ); + + aHighlightChangedTimer.Stop(); + + // #95056# invalidate screen area covered by system window + // so this can be taken into account if the commandhandler performs a scroll operation + if( GetParent() ) + { + tools::Rectangle aInvRect( GetWindowExtentsRelative( GetParent() ) ); + GetParent()->Invalidate( aInvRect ); } + pMenu = nullptr; + RemoveEventListener( LINK( this, MenuFloatingWindow, ShowHideListener ) ); + + aScrollTimer.Stop(); + aSubmenuCloseTimer.Stop(); + aSubmenuCloseTimer.Stop(); + aHighlightChangedTimer.Stop(); + aHighlightChangedTimer.Stop(); + } MenuFloatingWindow::~MenuFloatingWindow() diff --git a/vcl/source/window/mouse.cxx b/vcl/source/window/mouse.cxx index 311018a52366..44b520dfe931 100644 --- a/vcl/source/window/mouse.cxx +++ b/vcl/source/window/mouse.cxx @@ -275,118 +275,119 @@ void Window::ImplGrabFocus( GetFocusFlags nFlags ) pParent = pParent->mpWindowImpl->mpParent; } - if ( ( pSVData->maWinData.mpFocusWin.get() != this && - !mpWindowImpl->mbInDispose ) || - ( bAsyncFocusWaiting && !bHasFocus && !bMustNotGrabFocus ) ) - { - // EndExtTextInput if it is not the same window - if ( pSVData->maWinData.mpExtTextInputWin && - (pSVData->maWinData.mpExtTextInputWin.get() != this) ) - pSVData->maWinData.mpExtTextInputWin->EndExtTextInput(); + if ( !(( pSVData->maWinData.mpFocusWin.get() != this && + !mpWindowImpl->mbInDispose ) || + ( bAsyncFocusWaiting && !bHasFocus && !bMustNotGrabFocus )) ) + return; + + // EndExtTextInput if it is not the same window + if ( pSVData->maWinData.mpExtTextInputWin && + (pSVData->maWinData.mpExtTextInputWin.get() != this) ) + pSVData->maWinData.mpExtTextInputWin->EndExtTextInput(); - // mark this windows as the last FocusWindow - vcl::Window* pOverlapWindow = ImplGetFirstOverlapWindow(); - pOverlapWindow->mpWindowImpl->mpLastFocusWindow = this; - mpWindowImpl->mpFrameData->mpFocusWin = this; + // mark this windows as the last FocusWindow + vcl::Window* pOverlapWindow = ImplGetFirstOverlapWindow(); + pOverlapWindow->mpWindowImpl->mpLastFocusWindow = this; + mpWindowImpl->mpFrameData->mpFocusWin = this; - if( !bHasFocus ) + if( !bHasFocus ) + { + // menu windows never get the system focus + // the application will keep the focus + if( bMustNotGrabFocus ) + return; + else { - // menu windows never get the system focus - // the application will keep the focus - if( bMustNotGrabFocus ) - return; - else - { - // here we already switch focus as ToTop() - // should not give focus to another window - mpWindowImpl->mpFrame->ToTop( SalFrameToTop::GrabFocus | SalFrameToTop::GrabFocusOnly ); - return; - } + // here we already switch focus as ToTop() + // should not give focus to another window + mpWindowImpl->mpFrame->ToTop( SalFrameToTop::GrabFocus | SalFrameToTop::GrabFocusOnly ); + return; } + } - VclPtr<vcl::Window> pOldFocusWindow = pSVData->maWinData.mpFocusWin; + VclPtr<vcl::Window> pOldFocusWindow = pSVData->maWinData.mpFocusWin; - pSVData->maWinData.mpFocusWin = this; + pSVData->maWinData.mpFocusWin = this; - if ( pOldFocusWindow ) - { - // Cursor hidden - if ( pOldFocusWindow->mpWindowImpl->mpCursor ) - pOldFocusWindow->mpWindowImpl->mpCursor->ImplHide(); - } + if ( pOldFocusWindow ) + { + // Cursor hidden + if ( pOldFocusWindow->mpWindowImpl->mpCursor ) + pOldFocusWindow->mpWindowImpl->mpCursor->ImplHide(); + } - // !!!!! due to old SV-Office Activate/Deactivate handling - // !!!!! first as before - if ( pOldFocusWindow ) - { - // remember Focus - vcl::Window* pOldOverlapWindow = pOldFocusWindow->ImplGetFirstOverlapWindow(); - vcl::Window* pNewOverlapWindow = ImplGetFirstOverlapWindow(); - if ( pOldOverlapWindow != pNewOverlapWindow ) - ImplCallFocusChangeActivate( pNewOverlapWindow, pOldOverlapWindow ); - } - else + // !!!!! due to old SV-Office Activate/Deactivate handling + // !!!!! first as before + if ( pOldFocusWindow ) + { + // remember Focus + vcl::Window* pOldOverlapWindow = pOldFocusWindow->ImplGetFirstOverlapWindow(); + vcl::Window* pNewOverlapWindow = ImplGetFirstOverlapWindow(); + if ( pOldOverlapWindow != pNewOverlapWindow ) + ImplCallFocusChangeActivate( pNewOverlapWindow, pOldOverlapWindow ); + } + else + { + vcl::Window* pNewOverlapWindow = ImplGetFirstOverlapWindow(); + vcl::Window* pNewRealWindow = pNewOverlapWindow->ImplGetWindow(); + pNewOverlapWindow->mpWindowImpl->mbActive = true; + pNewOverlapWindow->Activate(); + if ( pNewRealWindow != pNewOverlapWindow ) { - vcl::Window* pNewOverlapWindow = ImplGetFirstOverlapWindow(); - vcl::Window* pNewRealWindow = pNewOverlapWindow->ImplGetWindow(); - pNewOverlapWindow->mpWindowImpl->mbActive = true; - pNewOverlapWindow->Activate(); - if ( pNewRealWindow != pNewOverlapWindow ) - { - pNewRealWindow->mpWindowImpl->mbActive = true; - pNewRealWindow->Activate(); - } + pNewRealWindow->mpWindowImpl->mbActive = true; + pNewRealWindow->Activate(); } + } + + // call Get- and LoseFocus + if ( pOldFocusWindow && ! pOldFocusWindow->IsDisposed() ) + { + if ( pOldFocusWindow->IsTracking() && + (pSVData->maWinData.mnTrackFlags & StartTrackingFlags::FocusCancel) ) + pOldFocusWindow->EndTracking( TrackingEventFlags::Cancel | TrackingEventFlags::Focus ); + NotifyEvent aNEvt( MouseNotifyEvent::LOSEFOCUS, pOldFocusWindow ); + if ( !ImplCallPreNotify( aNEvt ) ) + pOldFocusWindow->CompatLoseFocus(); + pOldFocusWindow->ImplCallDeactivateListeners( this ); + } - // call Get- and LoseFocus - if ( pOldFocusWindow && ! pOldFocusWindow->IsDisposed() ) + if ( pSVData->maWinData.mpFocusWin.get() == this ) + { + if ( mpWindowImpl->mpSysObj ) { - if ( pOldFocusWindow->IsTracking() && - (pSVData->maWinData.mnTrackFlags & StartTrackingFlags::FocusCancel) ) - pOldFocusWindow->EndTracking( TrackingEventFlags::Cancel | TrackingEventFlags::Focus ); - NotifyEvent aNEvt( MouseNotifyEvent::LOSEFOCUS, pOldFocusWindow ); - if ( !ImplCallPreNotify( aNEvt ) ) - pOldFocusWindow->CompatLoseFocus(); - pOldFocusWindow->ImplCallDeactivateListeners( this ); + mpWindowImpl->mpFrameData->mpFocusWin = this; + if ( !mpWindowImpl->mpFrameData->mbInSysObjFocusHdl ) + mpWindowImpl->mpSysObj->GrabFocus(); } if ( pSVData->maWinData.mpFocusWin.get() == this ) { - if ( mpWindowImpl->mpSysObj ) + if ( mpWindowImpl->mpCursor ) + mpWindowImpl->mpCursor->ImplShow(); + mpWindowImpl->mbInFocusHdl = true; + mpWindowImpl->mnGetFocusFlags = nFlags; + // if we're changing focus due to closing a popup floating window + // notify the new focus window so it can restore the inner focus + // eg, toolboxes can select their recent active item + if( pOldFocusWindow && + ! pOldFocusWindow->IsDisposed() && + ( pOldFocusWindow->GetDialogControlFlags() & DialogControlFlags::FloatWinPopupModeEndCancel ) ) + mpWindowImpl->mnGetFocusFlags |= GetFocusFlags::FloatWinPopupModeEndCancel; + NotifyEvent aNEvt( MouseNotifyEvent::GETFOCUS, this ); + if ( !ImplCallPreNotify( aNEvt ) && !xWindow->IsDisposed() ) + CompatGetFocus(); + if( !xWindow->IsDisposed() ) + ImplCallActivateListeners( (pOldFocusWindow && ! pOldFocusWindow->IsDisposed()) ? pOldFocusWindow : nullptr ); + if( !xWindow->IsDisposed() ) { - mpWindowImpl->mpFrameData->mpFocusWin = this; - if ( !mpWindowImpl->mpFrameData->mbInSysObjFocusHdl ) - mpWindowImpl->mpSysObj->GrabFocus(); - } - - if ( pSVData->maWinData.mpFocusWin.get() == this ) - { - if ( mpWindowImpl->mpCursor ) - mpWindowImpl->mpCursor->ImplShow(); - mpWindowImpl->mbInFocusHdl = true; - mpWindowImpl->mnGetFocusFlags = nFlags; - // if we're changing focus due to closing a popup floating window - // notify the new focus window so it can restore the inner focus - // eg, toolboxes can select their recent active item - if( pOldFocusWindow && - ! pOldFocusWindow->IsDisposed() && - ( pOldFocusWindow->GetDialogControlFlags() & DialogControlFlags::FloatWinPopupModeEndCancel ) ) - mpWindowImpl->mnGetFocusFlags |= GetFocusFlags::FloatWinPopupModeEndCancel; - NotifyEvent aNEvt( MouseNotifyEvent::GETFOCUS, this ); - if ( !ImplCallPreNotify( aNEvt ) && !xWindow->IsDisposed() ) - CompatGetFocus(); - if( !xWindow->IsDisposed() ) - ImplCallActivateListeners( (pOldFocusWindow && ! pOldFocusWindow->IsDisposed()) ? pOldFocusWindow : nullptr ); - if( !xWindow->IsDisposed() ) - { - mpWindowImpl->mnGetFocusFlags = GetFocusFlags::NONE; - mpWindowImpl->mbInFocusHdl = false; - } + mpWindowImpl->mnGetFocusFlags = GetFocusFlags::NONE; + mpWindowImpl->mbInFocusHdl = false; } } - - ImplNewInputContext(); } + + ImplNewInputContext(); + } void Window::ImplGrabFocusToDocument( GetFocusFlags nFlags ) diff --git a/vcl/source/window/splitwin.cxx b/vcl/source/window/splitwin.cxx index 1f05f3fc5be6..0ce98b7e2999 100644 --- a/vcl/source/window/splitwin.cxx +++ b/vcl/source/window/splitwin.cxx @@ -1794,185 +1794,186 @@ void SplitWindow::ImplStartSplit( const MouseEvent& rMEvt ) Point aMousePosPixel = rMEvt.GetPosPixel(); mnSplitTest = ImplTestSplit( this, aMousePosPixel, mnMouseOff, &mpSplitSet, mnSplitPos ); - if ( mnSplitTest && !(mnSplitTest & SPLIT_NOSPLIT) ) + if ( !mnSplitTest || (mnSplitTest & SPLIT_NOSPLIT) ) + return; + + ImplSplitItem* pSplitItem; + long nCurMaxSize; + bool bPropSmaller; + + mnMouseModifier = rMEvt.GetModifier(); + bPropSmaller = (mnMouseModifier & KEY_SHIFT) && (static_cast<sal_uInt16>(mnSplitPos+1) < mpSplitSet->mpItems.size()); + + // here we can set the maximum size + StartSplit(); + + if ( mnMaxSize ) + nCurMaxSize = mnMaxSize; + else { - ImplSplitItem* pSplitItem; - long nCurMaxSize; - bool bPropSmaller; + Size aSize = GetParent()->GetOutputSizePixel(); + if ( mbHorz ) + nCurMaxSize = aSize.Height(); + else + nCurMaxSize = aSize.Width(); + } - mnMouseModifier = rMEvt.GetModifier(); - bPropSmaller = (mnMouseModifier & KEY_SHIFT) && (static_cast<sal_uInt16>(mnSplitPos+1) < mpSplitSet->mpItems.size()); + if ( !mpSplitSet->mpItems.empty() ) + { + bool bDown = true; + if ( (mpSplitSet == mpMainSet) && mbBottomRight ) + bDown = false; - // here we can set the maximum size - StartSplit(); + pSplitItem = mpSplitSet->mpItems[mnSplitPos]; + maDragRect.Left() = pSplitItem->mnLeft; + maDragRect.Top() = pSplitItem->mnTop; + maDragRect.Right() = pSplitItem->mnLeft+pSplitItem->mnWidth-1; + maDragRect.Bottom() = pSplitItem->mnTop+pSplitItem->mnHeight-1; - if ( mnMaxSize ) - nCurMaxSize = mnMaxSize; + if ( mnSplitTest & SPLIT_HORZ ) + { + if ( bDown ) + maDragRect.Right() += mpSplitSet->mnSplitSize; + else + maDragRect.Left() -= mpSplitSet->mnSplitSize; + } else { - Size aSize = GetParent()->GetOutputSizePixel(); - if ( mbHorz ) - nCurMaxSize = aSize.Height(); + if ( bDown ) + maDragRect.Bottom() += mpSplitSet->mnSplitSize; else - nCurMaxSize = aSize.Width(); + maDragRect.Top() -= mpSplitSet->mnSplitSize; } - if ( !mpSplitSet->mpItems.empty() ) + if ( mnSplitPos ) { - bool bDown = true; - if ( (mpSplitSet == mpMainSet) && mbBottomRight ) - bDown = false; - - pSplitItem = mpSplitSet->mpItems[mnSplitPos]; - maDragRect.Left() = pSplitItem->mnLeft; - maDragRect.Top() = pSplitItem->mnTop; - maDragRect.Right() = pSplitItem->mnLeft+pSplitItem->mnWidth-1; - maDragRect.Bottom() = pSplitItem->mnTop+pSplitItem->mnHeight-1; - - if ( mnSplitTest & SPLIT_HORZ ) - { - if ( bDown ) - maDragRect.Right() += mpSplitSet->mnSplitSize; - else - maDragRect.Left() -= mpSplitSet->mnSplitSize; - } - else + long nTemp = mnSplitPos; + while ( nTemp ) { - if ( bDown ) - maDragRect.Bottom() += mpSplitSet->mnSplitSize; + pSplitItem = mpSplitSet->mpItems[nTemp-1]; + if ( pSplitItem->mbFixed ) + break; else - maDragRect.Top() -= mpSplitSet->mnSplitSize; - } - - if ( mnSplitPos ) - { - long nTemp = mnSplitPos; - while ( nTemp ) { - pSplitItem = mpSplitSet->mpItems[nTemp-1]; - if ( pSplitItem->mbFixed ) - break; + if ( mnSplitTest & SPLIT_HORZ ) + { + if ( bDown ) + maDragRect.Left() -= pSplitItem->mnPixSize; + else + maDragRect.Right() += pSplitItem->mnPixSize; + } else { - if ( mnSplitTest & SPLIT_HORZ ) - { - if ( bDown ) - maDragRect.Left() -= pSplitItem->mnPixSize; - else - maDragRect.Right() += pSplitItem->mnPixSize; - } + if ( bDown ) + maDragRect.Top() -= pSplitItem->mnPixSize; else - { - if ( bDown ) - maDragRect.Top() -= pSplitItem->mnPixSize; - else - maDragRect.Bottom() += pSplitItem->mnPixSize; - } + maDragRect.Bottom() += pSplitItem->mnPixSize; } - nTemp--; } + nTemp--; } + } - if ( (mpSplitSet == mpMainSet) && (mnWinStyle & WB_SIZEABLE) && !bPropSmaller ) + if ( (mpSplitSet == mpMainSet) && (mnWinStyle & WB_SIZEABLE) && !bPropSmaller ) + { + if ( bDown ) { - if ( bDown ) - { - if ( mbHorz ) - maDragRect.Bottom() += nCurMaxSize-mnDY-mnTopBorder; - else - maDragRect.Right() += nCurMaxSize-mnDX-mnLeftBorder; - } + if ( mbHorz ) + maDragRect.Bottom() += nCurMaxSize-mnDY-mnTopBorder; else - { - if ( mbHorz ) - maDragRect.Top() -= nCurMaxSize-mnDY-mnBottomBorder; - else - maDragRect.Left() -= nCurMaxSize-mnDX-mnRightBorder; - } + maDragRect.Right() += nCurMaxSize-mnDX-mnLeftBorder; } else { - std::vector<ImplSplitItem *>::size_type nTemp = mnSplitPos+1; - while ( nTemp < mpSplitSet->mpItems.size() ) + if ( mbHorz ) + maDragRect.Top() -= nCurMaxSize-mnDY-mnBottomBorder; + else + maDragRect.Left() -= nCurMaxSize-mnDX-mnRightBorder; + } + } + else + { + std::vector<ImplSplitItem *>::size_type nTemp = mnSplitPos+1; + while ( nTemp < mpSplitSet->mpItems.size() ) + { + pSplitItem = mpSplitSet->mpItems[nTemp]; + if ( pSplitItem->mbFixed ) + break; + else { - pSplitItem = mpSplitSet->mpItems[nTemp]; - if ( pSplitItem->mbFixed ) - break; + if ( mnSplitTest & SPLIT_HORZ ) + { + if ( bDown ) + maDragRect.Right() += pSplitItem->mnPixSize; + else + maDragRect.Left() -= pSplitItem->mnPixSize; + } else { - if ( mnSplitTest & SPLIT_HORZ ) - { - if ( bDown ) - maDragRect.Right() += pSplitItem->mnPixSize; - else - maDragRect.Left() -= pSplitItem->mnPixSize; - } + if ( bDown ) + maDragRect.Bottom() += pSplitItem->mnPixSize; else - { - if ( bDown ) - maDragRect.Bottom() += pSplitItem->mnPixSize; - else - maDragRect.Top() -= pSplitItem->mnPixSize; - } + maDragRect.Top() -= pSplitItem->mnPixSize; } - nTemp++; } + nTemp++; } } + } + else + { + maDragRect.Left() = mnLeftBorder; + maDragRect.Top() = mnTopBorder; + maDragRect.Right() = mnDX-mnRightBorder-1; + maDragRect.Bottom() = mnDY-mnBottomBorder-1; + if ( mbHorz ) + { + if ( mbBottomRight ) + maDragRect.Top() -= nCurMaxSize-mnDY-mnBottomBorder; + else + maDragRect.Bottom() += nCurMaxSize-mnDY-mnTopBorder; + } else { - maDragRect.Left() = mnLeftBorder; - maDragRect.Top() = mnTopBorder; - maDragRect.Right() = mnDX-mnRightBorder-1; - maDragRect.Bottom() = mnDY-mnBottomBorder-1; - if ( mbHorz ) - { - if ( mbBottomRight ) - maDragRect.Top() -= nCurMaxSize-mnDY-mnBottomBorder; - else - maDragRect.Bottom() += nCurMaxSize-mnDY-mnTopBorder; - } + if ( mbBottomRight ) + maDragRect.Left() -= nCurMaxSize-mnDX-mnRightBorder; else - { - if ( mbBottomRight ) - maDragRect.Left() -= nCurMaxSize-mnDX-mnRightBorder; - else - maDragRect.Right() += nCurMaxSize-mnDX-mnLeftBorder; - } + maDragRect.Right() += nCurMaxSize-mnDX-mnLeftBorder; } + } - StartTracking(); + StartTracking(); - mbDragFull = bool(GetSettings().GetStyleSettings().GetDragFullOptions() & DragFullOptions::Split); + mbDragFull = bool(GetSettings().GetStyleSettings().GetDragFullOptions() & DragFullOptions::Split); - ImplSplitMousePos( aMousePosPixel ); + ImplSplitMousePos( aMousePosPixel ); - if (!mbDragFull) - { - ImplDrawSplitTracking(aMousePosPixel); - } - else + if (!mbDragFull) + { + ImplDrawSplitTracking(aMousePosPixel); + } + else + { + std::vector< ImplSplitItem* >& rItems = mpSplitSet->mpItems; + sal_uInt16 nItems = mpSplitSet->mpItems.size(); + mpLastSizes = new long[nItems*2]; + for ( sal_uInt16 i = 0; i < nItems; i++ ) { - std::vector< ImplSplitItem* >& rItems = mpSplitSet->mpItems; - sal_uInt16 nItems = mpSplitSet->mpItems.size(); - mpLastSizes = new long[nItems*2]; - for ( sal_uInt16 i = 0; i < nItems; i++ ) - { - mpLastSizes[i*2] = rItems[i]->mnSize; - mpLastSizes[i*2+1] = rItems[i]->mnPixSize; - } + mpLastSizes[i*2] = rItems[i]->mnSize; + mpLastSizes[i*2+1] = rItems[i]->mnPixSize; } - mnMStartPos = mnMSplitPos; + } + mnMStartPos = mnMSplitPos; - PointerStyle eStyle = PointerStyle::Arrow; - if ( mnSplitTest & SPLIT_HORZ ) - eStyle = PointerStyle::HSplit; - else if ( mnSplitTest & SPLIT_VERT ) - eStyle = PointerStyle::VSplit; + PointerStyle eStyle = PointerStyle::Arrow; + if ( mnSplitTest & SPLIT_HORZ ) + eStyle = PointerStyle::HSplit; + else if ( mnSplitTest & SPLIT_VERT ) + eStyle = PointerStyle::VSplit; + + Pointer aPtr( eStyle ); + SetPointer( aPtr ); - Pointer aPtr( eStyle ); - SetPointer( aPtr ); - } } void SplitWindow::StartSplit() @@ -2041,34 +2042,35 @@ void SplitWindow::MouseButtonDown( const MouseEvent& rMEvt ) void SplitWindow::MouseMove( const MouseEvent& rMEvt ) { - if ( !IsTracking() ) - { - Point aPos = rMEvt.GetPosPixel(); - long nTemp; - ImplSplitSet* pTempSplitSet; - sal_uInt16 nTempSplitPos; - sal_uInt16 nSplitTest = ImplTestSplit( this, aPos, nTemp, &pTempSplitSet, nTempSplitPos ); - PointerStyle eStyle = PointerStyle::Arrow; - tools::Rectangle aFadeInRect; - tools::Rectangle aFadeOutRect; + if ( IsTracking() ) + return; - ImplGetFadeInRect( aFadeInRect ); - ImplGetFadeOutRect( aFadeOutRect ); - if ( !aFadeInRect.IsInside( aPos ) && - !aFadeOutRect.IsInside( aPos ) ) + Point aPos = rMEvt.GetPosPixel(); + long nTemp; + ImplSplitSet* pTempSplitSet; + sal_uInt16 nTempSplitPos; + sal_uInt16 nSplitTest = ImplTestSplit( this, aPos, nTemp, &pTempSplitSet, nTempSplitPos ); + PointerStyle eStyle = PointerStyle::Arrow; + tools::Rectangle aFadeInRect; + tools::Rectangle aFadeOutRect; + + ImplGetFadeInRect( aFadeInRect ); + ImplGetFadeOutRect( aFadeOutRect ); + if ( !aFadeInRect.IsInside( aPos ) && + !aFadeOutRect.IsInside( aPos ) ) + { + if ( nSplitTest && !(nSplitTest & SPLIT_NOSPLIT) ) { - if ( nSplitTest && !(nSplitTest & SPLIT_NOSPLIT) ) - { - if ( nSplitTest & SPLIT_HORZ ) - eStyle = PointerStyle::HSplit; - else if ( nSplitTest & SPLIT_VERT ) - eStyle = PointerStyle::VSplit; - } + if ( nSplitTest & SPLIT_HORZ ) + eStyle = PointerStyle::HSplit; + else if ( nSplitTest & SPLIT_VERT ) + eStyle = PointerStyle::VSplit; } - - Pointer aPtr( eStyle ); - SetPointer( aPtr ); } + + Pointer aPtr( eStyle ); + SetPointer( aPtr ); + } void SplitWindow::Tracking( const TrackingEvent& rTEvt ) diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx index 8541bed438dd..71172415fc49 100644 --- a/vcl/source/window/toolbox.cxx +++ b/vcl/source/window/toolbox.cxx @@ -2963,35 +2963,36 @@ void ToolBox::ImplDrawItem(vcl::RenderContext& rRenderContext, ImplToolItems::si void ToolBox::ImplDrawFloatwinBorder(vcl::RenderContext& rRenderContext, ImplToolItem const * pItem) { - if ( !pItem->maRect.IsEmpty() ) - { - tools::Rectangle aRect( mpFloatWin->ImplGetItemEdgeClipRect() ); - aRect.SetPos( AbsoluteScreenToOutputPixel( aRect.TopLeft() ) ); - rRenderContext.SetLineColor(rRenderContext.GetSettings().GetStyleSettings().GetShadowColor()); - Point p1, p2; - - p1 = pItem->maRect.TopLeft(); - p1.X()++; - p2 = pItem->maRect.TopRight(); - p2.X()--; - rRenderContext.DrawLine( p1, p2); - p1 = pItem->maRect.BottomLeft(); - p1.X()++; - p2 = pItem->maRect.BottomRight(); - p2.X()--; - rRenderContext.DrawLine( p1, p2); - - p1 = pItem->maRect.TopLeft(); - p1.Y()++; - p2 = pItem->maRect.BottomLeft(); - p2.Y()--; - rRenderContext.DrawLine( p1, p2); - p1 = pItem->maRect.TopRight(); - p1.Y()++; - p2 = pItem->maRect.BottomRight(); - p2.Y()--; - rRenderContext.DrawLine( p1, p2); - } + if ( pItem->maRect.IsEmpty() ) + return; + + tools::Rectangle aRect( mpFloatWin->ImplGetItemEdgeClipRect() ); + aRect.SetPos( AbsoluteScreenToOutputPixel( aRect.TopLeft() ) ); + rRenderContext.SetLineColor(rRenderContext.GetSettings().GetStyleSettings().GetShadowColor()); + Point p1, p2; + + p1 = pItem->maRect.TopLeft(); + p1.X()++; + p2 = pItem->maRect.TopRight(); + p2.X()--; + rRenderContext.DrawLine( p1, p2); + p1 = pItem->maRect.BottomLeft(); + p1.X()++; + p2 = pItem->maRect.BottomRight(); + p2.X()--; + rRenderContext.DrawLine( p1, p2); + + p1 = pItem->maRect.TopLeft(); + p1.Y()++; + p2 = pItem->maRect.BottomLeft(); + p2.Y()--; + rRenderContext.DrawLine( p1, p2); + p1 = pItem->maRect.TopRight(); + p1.Y()++; + p2 = pItem->maRect.BottomRight(); + p2.Y()--; + rRenderContext.DrawLine( p1, p2); + } void ToolBox::ImplFloatControl( bool bStart, FloatingWindow* pFloatWindow ) diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx index c931c47c5553..c636b4023be0 100644 --- a/vcl/source/window/toolbox2.cxx +++ b/vcl/source/window/toolbox2.cxx @@ -1663,56 +1663,57 @@ IMPL_LINK( ToolBox, ImplCustomMenuListener, VclMenuEvent&, rEvent, void ) IMPL_LINK_NOARG(ToolBox, ImplCallExecuteCustomMenu, void*, void) { mpData->mnEventId = nullptr; - if( IsMenuEnabled() ) - { - if( GetMenuType() & ToolBoxMenuType::Customize ) - // call button handler to allow for menu customization - mpData->maMenuButtonHdl.Call( this ); + if( !IsMenuEnabled() ) + return; + + if( GetMenuType() & ToolBoxMenuType::Customize ) + // call button handler to allow for menu customization + mpData->maMenuButtonHdl.Call( this ); - GetMenu()->AddEventListener( LINK( this, ToolBox, ImplCustomMenuListener ) ); + GetMenu()->AddEventListener( LINK( this, ToolBox, ImplCustomMenuListener ) ); - // make sure all disabled entries will be shown - GetMenu()->SetMenuFlags( - GetMenu()->GetMenuFlags() | MenuFlags::AlwaysShowDisabledEntries ); + // make sure all disabled entries will be shown + GetMenu()->SetMenuFlags( + GetMenu()->GetMenuFlags() | MenuFlags::AlwaysShowDisabledEntries ); - // toolbox might be destroyed during execute - bool bBorderDel = false; + // toolbox might be destroyed during execute + bool bBorderDel = false; - VclPtr<vcl::Window> pWin = this; - tools::Rectangle aMenuRect = mpData->maMenuRect; - mpData->maMenuRect.SetEmpty(); - VclPtr<ImplBorderWindow> pBorderWin; - if( aMenuRect.IsEmpty() && IsFloatingMode() ) + VclPtr<vcl::Window> pWin = this; + tools::Rectangle aMenuRect = mpData->maMenuRect; + mpData->maMenuRect.SetEmpty(); + VclPtr<ImplBorderWindow> pBorderWin; + if( aMenuRect.IsEmpty() && IsFloatingMode() ) + { + // custom menu is placed in the decoration + pBorderWin = dynamic_cast<ImplBorderWindow*>( GetWindow( GetWindowType::Border ) ); + if( pBorderWin && !pBorderWin->GetMenuRect().IsEmpty() ) { - // custom menu is placed in the decoration - pBorderWin = dynamic_cast<ImplBorderWindow*>( GetWindow( GetWindowType::Border ) ); - if( pBorderWin && !pBorderWin->GetMenuRect().IsEmpty() ) - { - pWin = pBorderWin; - aMenuRect = pBorderWin->GetMenuRect(); - bBorderDel = true; - } + pWin = pBorderWin; + aMenuRect = pBorderWin->GetMenuRect(); + bBorderDel = true; } + } - sal_uInt16 uId = GetMenu()->Execute( pWin, tools::Rectangle( ImplGetPopupPosition( aMenuRect ), Size() ), - PopupMenuFlags::ExecuteDown | PopupMenuFlags::NoMouseUpClose ); + sal_uInt16 uId = GetMenu()->Execute( pWin, tools::Rectangle( ImplGetPopupPosition( aMenuRect ), Size() ), + PopupMenuFlags::ExecuteDown | PopupMenuFlags::NoMouseUpClose ); - if ( pWin->IsDisposed() ) + if ( pWin->IsDisposed() ) + return; + + if( GetMenu() ) + GetMenu()->RemoveEventListener( LINK( this, ToolBox, ImplCustomMenuListener ) ); + if( bBorderDel ) + { + if( pBorderWin->IsDisposed() ) return; + } - if( GetMenu() ) - GetMenu()->RemoveEventListener( LINK( this, ToolBox, ImplCustomMenuListener ) ); - if( bBorderDel ) - { - if( pBorderWin->IsDisposed() ) - return; - } + pWin->Invalidate( aMenuRect ); - pWin->Invalidate( aMenuRect ); + if( uId ) + GrabFocusToDocument(); - if( uId ) - GrabFocusToDocument(); - } } void ToolBox::ExecuteCustomMenu( const tools::Rectangle& rRect ) |