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/tbxctrls/PaletteManager.cxx | |
parent | ec4a78420e4a6ea9e3ded6c14ff8143e96f159d6 (diff) |
Make color picker apply color immediately
Change-Id: I38695a43ced63bd5207b631a072231d81aa7e0f9
Diffstat (limited to 'svx/source/tbxctrls/PaletteManager.cxx')
-rw-r--r-- | svx/source/tbxctrls/PaletteManager.cxx | 34 |
1 files changed, 32 insertions, 2 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); } } |