Author: arielch
Date: Tue May 28 10:01:32 2013
New Revision: 1486845
URL: http://svn.apache.org/r1486845
Log:
Add missing copy&paste of SfxAppToolBoxControl_Impl::Select
Modified:
openoffice/trunk/main/framework/inc/uielement/popuptoolbarcontroller.hxx
openoffice/trunk/main/framework/source/uielement/popuptoolbarcontroller.cxx
openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx
openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx
Modified:
openoffice/trunk/main/framework/inc/uielement/popuptoolbarcontroller.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/inc/uielement/popuptoolbarcontroller.hxx?rev=1486845&r1=1486844&r2=1486845&view=diff
==============================================================================
--- openoffice/trunk/main/framework/inc/uielement/popuptoolbarcontroller.hxx
(original)
+++ openoffice/trunk/main/framework/inc/uielement/popuptoolbarcontroller.hxx
Tue May 28 10:01:32 2013
@@ -82,7 +82,10 @@ namespace framework
private:
void functionExecuted( const rtl::OUString &rCommand );
void SAL_CALL statusChanged( const
::com::sun::star::frame::FeatureStateEvent& rEvent ) throw (
::com::sun::star::uno::RuntimeException );
+ void SAL_CALL execute( sal_Int16 KeyModifier ) throw
(::com::sun::star::uno::RuntimeException);
void setItemImage( const rtl::OUString &rCommand );
+
+ rtl::OUString m_aLastURL;
};
class WizardsToolbarController : public PopupMenuToolbarController
Modified:
openoffice/trunk/main/framework/source/uielement/popuptoolbarcontroller.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/source/uielement/popuptoolbarcontroller.cxx?rev=1486845&r1=1486844&r2=1486845&view=diff
==============================================================================
--- openoffice/trunk/main/framework/source/uielement/popuptoolbarcontroller.cxx
(original)
+++ openoffice/trunk/main/framework/source/uielement/popuptoolbarcontroller.cxx
Tue May 28 10:01:32 2013
@@ -23,6 +23,8 @@
#include "precompiled_framework.hxx"
#include <uielement/popuptoolbarcontroller.hxx>
+#include <framework/menuconfiguration.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <comphelper/processfactory.hxx>
#include <svtools/imagemgr.hxx>
#include <svtools/miscopt.hxx>
@@ -35,9 +37,10 @@
#include <com/sun/star/awt/PopupMenuDirection.hpp>
#include <com/sun/star/frame/PopupMenuControllerFactory.hpp>
-
+#include <com/sun/star/frame/XDispatchProvider.hpp>
#define UNO_COMMAND_RECENT_FILE_LIST ".uno:RecentFileList"
+#define SFX_REFERER_USER "private:user"
using rtl::OUString;
namespace css = ::com::sun::star;
@@ -278,6 +281,39 @@ NewToolbarController::statusChanged(
enable( rEvent.IsEnabled );
}
+void SAL_CALL
+NewToolbarController::execute( sal_Int16 /*KeyModifier*/ )
+ throw ( css::uno::RuntimeException )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+ if ( !m_aLastURL.getLength() )
+ return;
+
+ OUString aTarget( RTL_CONSTASCII_USTRINGPARAM( "_default" ) );
+ if ( m_xPopupMenu.is() )
+ {
+ // TODO investigate how to wrap Get/SetUserValue in css::awt::XMenu
+ MenuConfiguration::Attributes* pMenuAttributes( 0 );
+ VCLXPopupMenu* pTkPopupMenu = dynamic_cast< VCLXPopupMenu * >(
+ VCLXMenu::GetImplementation( m_xPopupMenu ) );
+
+ vos::OGuard aSolarMutexGuard( Application::GetSolarMutex() );
+ PopupMenu* pVCLPopupMenu = dynamic_cast< PopupMenu * >(
pTkPopupMenu->GetMenu() );
+ if ( pVCLPopupMenu )
+ pMenuAttributes = reinterpret_cast< MenuConfiguration::Attributes*
>(
+ pVCLPopupMenu->GetUserValue( pVCLPopupMenu->GetCurItemId() ) );
+
+ if ( pMenuAttributes )
+ aTarget = pMenuAttributes->aTargetFrame;
+ }
+
+ css::uno::Sequence< css::beans::PropertyValue > aArgs( 1 );
+ aArgs[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Referer" ));
+ aArgs[0].Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM( SFX_REFERER_USER
) );
+
+ dispatchCommand( m_aLastURL, aArgs, aTarget );
+}
+
void NewToolbarController::functionExecuted( const OUString &rCommand )
{
setItemImage( rCommand );
@@ -409,6 +445,8 @@ void NewToolbarController::setItemImage(
}
else
pToolBox->SetItemImage( m_nToolBoxId, aImage );
+
+ m_aLastURL = aURL;
}
Modified: openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx?rev=1486845&r1=1486844&r2=1486845&view=diff
==============================================================================
--- openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx (original)
+++ openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx Tue May 28
10:01:32 2013
@@ -56,8 +56,6 @@ class ToolBox;
namespace svt
{
-struct DispatchInfo;
-
class SVT_DLLPUBLIC ToolboxController : public
::com::sun::star::frame::XStatusListener,
public ::com::sun::star::frame::XToolbarController,
public ::com::sun::star::lang::XInitialization,
@@ -126,12 +124,10 @@ class SVT_DLLPUBLIC ToolboxController :
const rtl::OUString& getCommandURL() const { return
m_aCommandURL; }
const rtl::OUString& getModuleName() const { return
m_sModuleName; }
- void dispatchCommand( const ::rtl::OUString& sCommandURL, const
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >&
rArgs );
+ void dispatchCommand( const ::rtl::OUString& sCommandURL, const
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >&
rArgs, const rtl::OUString &sTarget = rtl::OUString() );
void enable( bool bEnable );
- DECL_STATIC_LINK( ToolboxController, ExecuteHdl_Impl, DispatchInfo* );
-
protected:
bool getToolboxId( sal_uInt16& rItemId, ToolBox** ppToolBox );
void setSupportVisiableProperty(sal_Bool bValue); //shizhoubo
@@ -144,6 +140,23 @@ class SVT_DLLPUBLIC ToolboxController :
::com::sun::star::uno::Reference<
::com::sun::star::frame::XDispatch > xDispatch;
};
+ struct DispatchInfo
+ {
+ ::com::sun::star::uno::Reference<
::com::sun::star::frame::XDispatch > mxDispatch;
+ const ::com::sun::star::util::URL maURL;
+ const ::com::sun::star::uno::Sequence<
::com::sun::star::beans::PropertyValue > maArgs;
+
+ DispatchInfo( const ::com::sun::star::uno::Reference<
::com::sun::star::frame::XDispatch >& xDispatch,
+ const ::com::sun::star::util::URL& rURL,
+ const ::com::sun::star::uno::Sequence<
::com::sun::star::beans::PropertyValue >& rArgs )
+ : mxDispatch( xDispatch )
+ , maURL( rURL )
+ , maArgs( rArgs )
+ {}
+ };
+
+ DECL_STATIC_LINK( ToolboxController, ExecuteHdl_Impl, DispatchInfo* );
+
typedef ::std::hash_map< ::rtl::OUString,
com::sun::star::uno::Reference< com::sun::star::frame::XDispatch >,
::rtl::OUStringHash,
Modified: openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx?rev=1486845&r1=1486844&r2=1486845&view=diff
==============================================================================
--- openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx (original)
+++ openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx Tue May 28
10:01:32 2013
@@ -56,16 +56,6 @@ using namespace ::com::sun::star::frame;
namespace svt
{
-struct DispatchInfo
-{
- Reference< XDispatch > mxDispatch;
- const URL maURL;
- const Sequence< PropertyValue > maArgs;
-
- DispatchInfo( const Reference< XDispatch >& xDispatch, const URL& rURL,
const Sequence< PropertyValue >& rArgs )
- : mxDispatch( xDispatch ), maURL( rURL ), maArgs( rArgs ) {}
-};
-
ToolboxController::ToolboxController(
const Reference< XMultiServiceFactory >& rServiceManager,
@@ -724,7 +714,7 @@ Reference< ::com::sun::star::awt::XWindo
return m_xParentWindow;
}
-void ToolboxController::dispatchCommand( const OUString& sCommandURL, const
Sequence< PropertyValue >& rArgs )
+void ToolboxController::dispatchCommand( const OUString& sCommandURL, const
Sequence< PropertyValue >& rArgs, const OUString &sTarget )
{
try
{
@@ -733,9 +723,12 @@ void ToolboxController::dispatchCommand(
aURL.Complete = sCommandURL;
getURLTransformer()->parseStrict( aURL );
- Reference< XDispatch > xDispatch(
xDispatchProvider->queryDispatch( aURL, OUString(), 0 ), UNO_QUERY_THROW );
+ Reference< XDispatch > xDispatch(
xDispatchProvider->queryDispatch( aURL, sTarget, 0 ), UNO_QUERY_THROW );
- Application::PostUserEvent( STATIC_LINK(0, ToolboxController,
ExecuteHdl_Impl), new DispatchInfo( xDispatch, aURL, rArgs ) );
+ DispatchInfo *pDispatchInfo = new DispatchInfo( xDispatch, aURL, rArgs
);
+ if ( !Application::PostUserEvent( STATIC_LINK(0, ToolboxController,
ExecuteHdl_Impl),
+ pDispatchInfo ) )
+ delete pDispatchInfo;
}
catch( Exception& )