diff options
author | Thorsten Behrens <tbehrens@novell.com> | 2011-11-22 12:19:52 +0100 |
---|---|---|
committer | Thorsten Behrens <tbehrens@novell.com> | 2011-11-22 12:19:52 +0100 |
commit | 5f88396b4c877ff8c1b0c109357dc26729d62663 (patch) | |
tree | cdccadff17c88474fd45f374b63a40a15f28ec80 | |
parent | 3bed5b2ad7a38af4a7ad06f1d150c5e987f07dfa (diff) |
A similar fix had been introduced via CWS fwk160, removing.
Remove framework-extra-job-config.diff
-rw-r--r-- | patches/dev300/apply | 4 | ||||
-rw-r--r-- | patches/dev300/framework-extra-job-config.diff | 334 |
2 files changed, 0 insertions, 338 deletions
diff --git a/patches/dev300/apply b/patches/dev300/apply index aa59ca5f0..191468879 100644 --- a/patches/dev300/apply +++ b/patches/dev300/apply @@ -220,10 +220,6 @@ unoxml-fix-empty-xmlns.diff, rodo build-fix-xulrunner-npapi-inc.diff, janneke # FIXME ooo330-m2: does not apply: configure-fix-lpsolve-depends.diff, janneke -# fix framework to no longer pull presenter screen for all apps -# needs some more love, see comments in issue -framework-extra-job-config.diff, i#107568, thorsten - vcl-gtk-process-events-on-exit.diff, rodo sfx2-add-to-recently-used-after-save.diff, rodo diff --git a/patches/dev300/framework-extra-job-config.diff b/patches/dev300/framework-extra-job-config.diff deleted file mode 100644 index 81b5571f1..000000000 --- a/patches/dev300/framework-extra-job-config.diff +++ /dev/null @@ -1,334 +0,0 @@ ---- - framework/inc/jobs/jobdata.hxx | 10 +++++ - framework/inc/jobs/jobdispatch.hxx | 3 ++ - framework/inc/jobs/jobexecutor.hxx | 4 ++ - framework/source/jobs/jobdata.cxx | 33 ++++++++++++++++- - framework/source/jobs/jobdispatch.cxx | 37 +++++++++++++++----- - framework/source/jobs/jobexecutor.cxx | 18 +++++++++ - .../registry/schema/org/openoffice/Office/Jobs.xcs | 5 +++ - .../registry/data/org/openoffice/Office/Jobs.xcu | 3 ++ - 8 files changed, 102 insertions(+), 11 deletions(-) - -diff --git framework/inc/jobs/jobdata.hxx framework/inc/jobs/jobdata.hxx -index 95233ef..1f8b39f 100644 ---- framework/inc/jobs/jobdata.hxx -+++ framework/inc/jobs/jobdata.hxx -@@ -80,6 +80,8 @@ class JobData : private ThreadHelpBase - static const sal_Char* JOBCFG_PROP_ARGUMENTS; - /// define the cfg key "Service" of a job relativ to JOBCFG_ROOT/<job alias> - static const sal_Char* JOBCFG_PROP_SERVICE; -+ /// define the cfg key "Context" of a job relativ to JOBCFG_ROOT/<job alias> -+ static const sal_Char* JOBCFG_PROP_CONTEXT; - - /// specifies the root package and key to find event registrations - static const sal_Char* EVENTCFG_ROOT; -@@ -105,6 +107,7 @@ class JobData : private ThreadHelpBase - static const sal_Char* PROP_FRAME; - static const sal_Char* PROP_MODEL; - static const sal_Char* PROP_SERVICE; -+ static const sal_Char* PROP_CONTEXT; - - //___________________________________ - // structs -@@ -210,6 +213,12 @@ class JobData : private ThreadHelpBase - ::rtl::OUString m_sService; - - /** -+ the module context list of this job. -+ It's readed from the configuration. Don't set it from outside! -+ */ -+ ::rtl::OUString m_sContext; -+ -+ /** - a job can be registered for an event. - It can be an empty value! But it will be set from outside any times. - Because it's not clear which job this instance should represent if an event -@@ -255,6 +264,7 @@ class JobData : private ThreadHelpBase - css::uno::Sequence< css::beans::NamedValue > getJobConfig () const; - - sal_Bool hasConfig () const; -+ sal_Bool hasCorrectContext ( const ::rtl::OUString& rModuleIdent ) const; - - void setEnvironment ( EEnvironment eEnvironment ); - void setAlias ( const ::rtl::OUString& sAlias ); -diff --git framework/inc/jobs/jobdispatch.hxx framework/inc/jobs/jobdispatch.hxx -index 1f381a3..a8a8fae 100644 ---- framework/inc/jobs/jobdispatch.hxx -+++ framework/inc/jobs/jobdispatch.hxx -@@ -101,6 +101,9 @@ class JobDispatch : public css::lang::XTypeProvider - /** reference to the frame, inside which this dispatch is used */ - css::uno::Reference< css::frame::XFrame > m_xFrame; - -+ /** name of module (writer, impress etc.) the frame is for */ -+ ::rtl::OUString m_sModuleIdentifier; -+ - //___________________________________ - // native interface methods - -diff --git framework/inc/jobs/jobexecutor.hxx framework/inc/jobs/jobexecutor.hxx -index 28c1426..5864fe6 100644 ---- framework/inc/jobs/jobexecutor.hxx -+++ framework/inc/jobs/jobexecutor.hxx -@@ -48,6 +48,7 @@ - #include <com/sun/star/container/XContainerListener.hpp> - #include <com/sun/star/lang/XEventListener.hpp> - #include <com/sun/star/document/XEventListener.hpp> -+#include <com/sun/star/frame/XModuleManager.hpp> - - //_______________________________________ - // other includes -@@ -85,6 +86,9 @@ class JobExecutor : public css::lang::XTypeProvider - /** reference to the uno service manager */ - css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; - -+ /** reference to the module info service */ -+ css::uno::Reference< css::frame::XModuleManager > m_xModuleManager; -+ - /** cached list of all registered event names of cfg for call optimization. */ - OUStringList m_lEvents; - -diff --git framework/source/jobs/jobdata.cxx framework/source/jobs/jobdata.cxx -index 6d48c3c..c0d490e 100644 ---- framework/source/jobs/jobdata.cxx -+++ framework/source/jobs/jobdata.cxx -@@ -61,6 +61,7 @@ namespace framework{ - - const sal_Char* JobData::JOBCFG_ROOT = "/org.openoffice.Office.Jobs/Jobs/" ; - const sal_Char* JobData::JOBCFG_PROP_SERVICE = "Service" ; -+const sal_Char* JobData::JOBCFG_PROP_CONTEXT = "Context" ; - const sal_Char* JobData::JOBCFG_PROP_ARGUMENTS = "Arguments" ; - - const sal_Char* JobData::EVENTCFG_ROOT = "/org.openoffice.Office.Jobs/Events/" ; -@@ -79,6 +80,7 @@ const sal_Char* JobData::PROP_ENVTYPE = "EnvType" - const sal_Char* JobData::PROP_FRAME = "Frame" ; - const sal_Char* JobData::PROP_MODEL = "Model" ; - const sal_Char* JobData::PROP_SERVICE = "Service" ; -+const sal_Char* JobData::PROP_CONTEXT = "Context" ; - - //________________________________ - // non exported definitions -@@ -139,6 +141,7 @@ void JobData::operator=( const JobData& rCopy ) - m_eEnvironment = rCopy.m_eEnvironment ; - m_sAlias = rCopy.m_sAlias ; - m_sService = rCopy.m_sService ; -+ m_sContext = rCopy.m_sContext ; - m_sEvent = rCopy.m_sEvent ; - m_lArguments = rCopy.m_lArguments ; - m_aLastExecutionResult = rCopy.m_aLastExecutionResult; -@@ -201,6 +204,10 @@ void JobData::setAlias( const ::rtl::OUString& sAlias ) - aValue = xJobProperties->getPropertyValue(::rtl::OUString::createFromAscii(JOBCFG_PROP_SERVICE)); - aValue >>= m_sService; - -+ // read module context list -+ aValue = xJobProperties->getPropertyValue(::rtl::OUString::createFromAscii(JOBCFG_PROP_CONTEXT)); -+ aValue >>= m_sContext; -+ - // read whole argument list - aValue = xJobProperties->getPropertyValue(::rtl::OUString::createFromAscii(JOBCFG_PROP_ARGUMENTS)); - css::uno::Reference< css::container::XNameAccess > xArgumentList; -@@ -477,7 +484,7 @@ css::uno::Sequence< css::beans::NamedValue > JobData::getConfig() const - css::uno::Sequence< css::beans::NamedValue > lConfig; - if (m_eMode==E_ALIAS) - { -- lConfig.realloc(2); -+ lConfig.realloc(3); - sal_Int32 i = 0; - - lConfig[i].Name = ::rtl::OUString::createFromAscii(PROP_ALIAS); -@@ -487,6 +494,10 @@ css::uno::Sequence< css::beans::NamedValue > JobData::getConfig() const - lConfig[i].Name = ::rtl::OUString::createFromAscii(PROP_SERVICE); - lConfig[i].Value <<= m_sService; - ++i; -+ -+ lConfig[i].Name = ::rtl::OUString::createFromAscii(PROP_CONTEXT); -+ lConfig[i].Value <<= m_sContext; -+ ++i; - } - aReadLock.unlock(); - /* } SAFE */ -@@ -610,6 +621,23 @@ void JobData::appendEnabledJobsForEvent( const css::uno::Reference< css::lang::X - //________________________________ - /** - */ -+sal_Bool JobData::hasCorrectContext(const ::rtl::OUString& rModuleIdent) const -+{ -+ if ( m_sContext.getLength() == 0 ) -+ return sal_True; -+ -+ if ( rModuleIdent.getLength() > 0 ) -+ { -+ sal_Int32 nIndex = m_sContext.indexOf( rModuleIdent ); -+ return ( nIndex >= 0 ); -+ } -+ -+ return sal_False; -+} -+ -+//________________________________ -+/** -+ */ - css::uno::Sequence< ::rtl::OUString > JobData::getEnabledJobsForEvent( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR , - const ::rtl::OUString& sEvent ) - { -@@ -705,6 +733,7 @@ void JobData::impl_reset() - m_eEnvironment = E_UNKNOWN_ENVIRONMENT; - m_sAlias = ::rtl::OUString(); - m_sService = ::rtl::OUString(); -+ m_sContext = ::rtl::OUString(); - m_sEvent = ::rtl::OUString(); - m_lArguments = css::uno::Sequence< css::beans::NamedValue >(); - aWriteLock.unlock(); -diff --git framework/source/jobs/jobdispatch.cxx framework/source/jobs/jobdispatch.cxx -index b9e7f6e..479282b 100644 ---- framework/source/jobs/jobdispatch.cxx -+++ framework/source/jobs/jobdispatch.cxx -@@ -44,6 +44,7 @@ - // interface includes - #include <com/sun/star/beans/XPropertySet.hpp> - #include <com/sun/star/frame/DispatchResultState.hpp> -+#include <com/sun/star/frame/XModuleManager.hpp> - - //________________________________ - // includes of other projects -@@ -145,7 +146,20 @@ void SAL_CALL JobDispatch::initialize( const css::uno::Sequence< css::uno::Any > - for (int a=0; a<lArguments.getLength(); ++a) - { - if (a==0) -+ { - lArguments[a] >>= m_xFrame; -+ -+ css::uno::Reference< css::frame::XModuleManager > xModuleManager( -+ m_xSMGR->createInstance( -+ SERVICENAME_MODULEMANAGER ), -+ css::uno::UNO_QUERY_THROW ); -+ try -+ { -+ m_sModuleIdentifier = xModuleManager->identify( m_xFrame ); -+ } -+ catch( css::uno::Exception& ) -+ {} -+ } - } - - aWriteLock.unlock(); -@@ -289,16 +303,8 @@ void JobDispatch::impl_dispatchEvent( /*IN*/ const ::rtl::OUString& - // But a may given listener will know something ... - // I think this operaton was finished successfully. - // It's not realy an error, if no registered jobs could be located. -- if (lJobs.getLength()<1 && xListener.is()) -- { -- css::frame::DispatchResultEvent aEvent; -- aEvent.Source = xThis; -- aEvent.State = css::frame::DispatchResultState::SUCCESS; -- xListener->dispatchFinished(aEvent); -- return; -- } -- - // Step over all found jobs and execute it -+ int nExecutedJobs=0; - for (int j=0; j<lJobs.getLength(); ++j) - { - /* SAFE { */ -@@ -307,6 +313,7 @@ void JobDispatch::impl_dispatchEvent( /*IN*/ const ::rtl::OUString& - JobData aCfg(m_xSMGR); - aCfg.setEvent(sEvent, lJobs[j]); - aCfg.setEnvironment(JobData::E_DISPATCH); -+ const bool bIsEnabled=aCfg.hasCorrectContext(m_sModuleIdentifier); - - /*Attention! - Jobs implements interfaces and dies by ref count! -@@ -320,6 +327,9 @@ void JobDispatch::impl_dispatchEvent( /*IN*/ const ::rtl::OUString& - aReadLock.unlock(); - /* } SAFE */ - -+ if (!bIsEnabled) -+ continue; -+ - // Special mode for listener. - // We dont notify it directly here. We delegate that - // to the job implementation. But we must set ourself there too. -@@ -328,6 +338,15 @@ void JobDispatch::impl_dispatchEvent( /*IN*/ const ::rtl::OUString& - if (xListener.is()) - pJob->setDispatchResultFake(xListener, xThis); - pJob->execute(Converter::convert_seqPropVal2seqNamedVal(lArgs)); -+ ++nExecutedJobs; -+ } -+ -+ if (nExecutedJobs<1 && xListener.is()) -+ { -+ css::frame::DispatchResultEvent aEvent; -+ aEvent.Source = xThis; -+ aEvent.State = css::frame::DispatchResultState::SUCCESS; -+ xListener->dispatchFinished(aEvent); - } - } - -diff --git framework/source/jobs/jobexecutor.cxx framework/source/jobs/jobexecutor.cxx -index 5bb7acc..d1da48e 100644 ---- framework/source/jobs/jobexecutor.cxx -+++ framework/source/jobs/jobexecutor.cxx -@@ -98,6 +98,11 @@ DEFINE_XSERVICEINFO_ONEINSTANCESERVICE( JobExecutor , - - DEFINE_INIT_SERVICE( JobExecutor, - { -+ m_xModuleManager = css::uno::Reference< css::frame::XModuleManager >( -+ m_xSMGR->createInstance( -+ SERVICENAME_MODULEMANAGER ), -+ css::uno::UNO_QUERY_THROW ); -+ - /*Attention - I think we don't need any mutex or lock here ... because we are called by our own static method impl_createInstance() - to create a new instance of this class by our own supported service factory. -@@ -142,6 +147,7 @@ JobExecutor::JobExecutor( /*IN*/ const css::uno::Reference< css::lang::XMultiSer - : ThreadHelpBase (&Application::GetSolarMutex() ) - , ::cppu::OWeakObject ( ) - , m_xSMGR (xSMGR ) -+ , m_xModuleManager ( ) - , m_aConfig (xSMGR, ::rtl::OUString::createFromAscii(JobData::EVENTCFG_ROOT) ) - { - // Don't do any reference related code here! Do it inside special -@@ -233,6 +239,15 @@ void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent - // This optimization supress using of the cfg api for getting event and job descriptions. - // see using of m_lEvents.find() below ... - -+ // retrieve event context from event source -+ rtl::OUString aModuleIdentifier; -+ try -+ { -+ aModuleIdentifier = m_xModuleManager->identify( aEvent.Source ); -+ } -+ catch( css::uno::Exception& ) -+ {} -+ - // Special feature: If the events "OnNew" or "OnLoad" occures - we generate our own event "onDocumentOpened". - if ( - (aEvent.EventName.equals(EVENT_ON_NEW )) || -@@ -275,6 +290,9 @@ void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent - aCfg.setEvent(rBinding.m_sDocEvent, rBinding.m_sJobName); - aCfg.setEnvironment(JobData::E_DOCUMENTEVENT); - -+ if (!aCfg.hasCorrectContext(aModuleIdentifier)) -+ continue; -+ - /*Attention! - Jobs implements interfaces and dies by ref count! - And freeing of such uno object is done by uno itself. -diff --git officecfg/registry/schema/org/openoffice/Office/Jobs.xcs officecfg/registry/schema/org/openoffice/Office/Jobs.xcs -index a9b4cdc..d270fae 100644 ---- officecfg/registry/schema/org/openoffice/Office/Jobs.xcs -+++ officecfg/registry/schema/org/openoffice/Office/Jobs.xcs -@@ -40,6 +40,11 @@ - <desc>Must contain an UNO implementation(!) name of the implemented job component.</desc> - </info> - </prop> -+ <prop oor:name="Context" oor:type="xs:string"> -+ <info> -+ <desc>An property to define the context this event should be active in. It can be empty or a colon separated list of the supported application modules.</desc> -+ </info> -+ </prop> - <group oor:name="Arguments" oor:extensible="true"> - <info> - <desc>Can be filled with any argument, which is under control of the job component.</desc> --- -1.7.0.1 - |