diff options
author | Krisztian Pinter <pin.terminator@gmail.com> | 2014-07-30 17:15:49 +0200 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2014-09-17 10:19:51 +0200 |
commit | 1bf3b9f2da8fe6e79e1e20d57784b55958ee3db4 (patch) | |
tree | 0fb1d4fcc50be8b274e7e4ecf33a5cb3db702dd4 /svx/source | |
parent | ec4a78420e4a6ea9e3ded6c14ff8143e96f159d6 (diff) |
Make color picker apply color immediately
Change-Id: I38695a43ced63bd5207b631a072231d81aa7e0f9
Diffstat (limited to 'svx/source')
-rw-r--r-- | svx/source/tbxctrls/PaletteManager.cxx | 34 | ||||
-rw-r--r-- | svx/source/tbxctrls/tbcontrl.cxx | 17 |
2 files changed, 36 insertions, 15 deletions
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx index 95485ced1a03..da80f23db37d 100644 --- a/svx/source/tbxctrls/PaletteManager.cxx +++ b/svx/source/tbxctrls/PaletteManager.cxx @@ -21,7 +21,7 @@ #include <osl/file.hxx> #include <unotools/pathoptions.hxx> #include <sfx2/objsh.hxx> -#include "svx/drawitem.hxx" +#include <svx/drawitem.hxx> #include <svx/dialogs.hrc> #include <svtools/colrdlg.hxx> @@ -179,7 +179,7 @@ void PaletteManager::SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater) mpBtnUpdater = pBtnUpdater; } -void PaletteManager::PopupColorPicker() +void PaletteManager::PopupColorPicker(const OUString aCommand) { SvColorDialog aColorDlg( 0 ); aColorDlg.SetColor ( mLastColor ); @@ -188,6 +188,36 @@ void PaletteManager::PopupColorPicker() { mpBtnUpdater->Update( aColorDlg.GetColor() ); mLastColor = aColorDlg.GetColor(); + DispatchColorCommand(aCommand, mLastColor); + } +} + +void PaletteManager::DispatchColorCommand(const OUString aCommand, const Color aColor) +{ + using namespace css::uno; + using namespace css::frame; + using namespace css::beans; + using namespace css::util; + + Reference<XComponentContext> xContext(comphelper::getProcessComponentContext()); + Reference<XDesktop2> xDesktop = Desktop::create(xContext); + Reference<XDispatchProvider> xDispatchProvider(xDesktop->getCurrentFrame(), UNO_QUERY ); + if (xDispatchProvider.is()) + { + INetURLObject aObj( aCommand ); + + Sequence<PropertyValue> aArgs(1); + aArgs[0].Name = aObj.GetURLPath(); + aArgs[0].Value = makeAny(sal_Int32(aColor.GetColor())); + + URL aTargetURL; + aTargetURL.Complete = aCommand; + Reference<XURLTransformer> xURLTransformer(URLTransformer::create(comphelper::getProcessComponentContext())); + xURLTransformer->parseStrict(aTargetURL); + + Reference<XDispatch> xDispatch = xDispatchProvider->queryDispatch(aTargetURL, OUString(), 0); + if (xDispatch.is()) + xDispatch->dispatch(aTargetURL, aArgs); } } diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index f55fc294cb90..64e00e7d8bd2 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -1102,7 +1102,6 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, SelectHdl) else aColor = mpColorSet->GetItemColor( nItemId ); - SvxColorItem aColorItem( aColor, theSlotId ); /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() calls. This instance may be deleted in the meantime (i.e. when a dialog is opened while in Dispatch()), accessing members will crash in this case. */ @@ -1111,20 +1110,10 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, SelectHdl) if ( IsInPopupMode() ) EndPopupMode(); - INetURLObject aObj( maCommand ); - - Any a; - Sequence< PropertyValue > aArgs( 1 ); - aArgs[0].Name = aObj.GetURLPath(); - aColorItem.QueryValue( a ); - aArgs[0].Value = a; - SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ), - maCommand, - aArgs ); - if ( maSelectedLink.IsSet() ) maSelectedLink.Call(&aColor); + PaletteManager::DispatchColorCommand(maCommand, aColor); return 0; } @@ -1138,7 +1127,9 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, SelectPaletteHdl) IMPL_LINK_NOARG(SvxColorWindow_Impl, OpenPickerClickHdl) { - mrPaletteManager.PopupColorPicker(); + if ( IsInPopupMode() ) + EndPopupMode(); + mrPaletteManager.PopupColorPicker(maCommand); return 0; } |