diff options
Diffstat (limited to 'framework/source')
-rw-r--r-- | framework/source/classes/menumanager.cxx | 2 | ||||
-rw-r--r-- | framework/source/constant/filter.cxx | 119 | ||||
-rw-r--r-- | framework/source/constant/makefile.mk | 3 | ||||
-rw-r--r-- | framework/source/inc/constant/filter.hxx | 126 | ||||
-rw-r--r-- | framework/source/loadenv/loadenv.cxx | 8 | ||||
-rw-r--r-- | framework/source/services/backingwindow.cxx | 161 | ||||
-rw-r--r-- | framework/source/services/backingwindow.hxx | 21 | ||||
-rw-r--r-- | framework/source/services/frame.cxx | 3 | ||||
-rw-r--r-- | framework/source/services/fwk_services.src | 2 | ||||
-rw-r--r-- | framework/source/services/pathsettings.cxx | 1 | ||||
-rw-r--r-- | framework/source/threadhelp/transactionmanager.cxx | 36 | ||||
-rw-r--r-- | framework/source/uielement/macrosmenucontroller.cxx | 3 | ||||
-rw-r--r-- | framework/source/uielement/toolbarmanager.cxx | 78 |
13 files changed, 267 insertions, 296 deletions
diff --git a/framework/source/classes/menumanager.cxx b/framework/source/classes/menumanager.cxx index 0b2f30093ca8..61cb8eb4a253 100644 --- a/framework/source/classes/menumanager.cxx +++ b/framework/source/classes/menumanager.cxx @@ -357,6 +357,7 @@ MenuManager::MenuManager( SetHdl(); } +#if 0 // #110897# MenuManager::MenuManager( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, @@ -413,6 +414,7 @@ MenuManager::MenuManager( SetHdl(); } +#endif void MenuManager::SetHdl() { diff --git a/framework/source/constant/filter.cxx b/framework/source/constant/filter.cxx deleted file mode 100644 index 57d94d772e6d..000000000000 --- a/framework/source/constant/filter.cxx +++ /dev/null @@ -1,119 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_framework.hxx" - -#ifndef __FRAMEWORK_CONSTANT_FILTER_HXX_ -#include <constant/filter.hxx> -#endif - -namespace framework{ - namespace constant{ - -const ::rtl::OUString Filter::PROP_NAME = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Name" )); -const ::rtl::OUString Filter::PROP_TYPE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Type" )); -const ::rtl::OUString Filter::PROP_DOCUMENTSERVICE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentService")); -const ::rtl::OUString Filter::PROP_FILTERSERVICE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FilterService" )); -const ::rtl::OUString Filter::PROP_UICOMPONENT = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UIComponent" )); -const ::rtl::OUString Filter::PROP_FLAGS = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Flags" )); -const ::rtl::OUString Filter::PROP_USERDATA = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UserData" )); -const ::rtl::OUString Filter::PROP_TEMPLATENAME = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TemplateName" )); - -const ::rtl::OUString Filter::QUERY_GET_DEFAULT_FILTER_FOR_TYPE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("getDefaultFilterForType")); -const ::rtl::OUString Filter::QUERY_ALL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_all" )); -const ::rtl::OUString Filter::QUERY_WRITER = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_writer" )); -const ::rtl::OUString Filter::QUERY_WEB = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_web" )); -const ::rtl::OUString Filter::QUERY_GLOBAL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_global" )); -const ::rtl::OUString Filter::QUERY_CHART = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_chart" )); -const ::rtl::OUString Filter::QUERY_CALC = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_calc" )); -const ::rtl::OUString Filter::QUERY_IMPRESS = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_impress" )); -const ::rtl::OUString Filter::QUERY_DRAW = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_draw" )); -const ::rtl::OUString Filter::QUERY_MATH = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_query_math" )); - -const ::rtl::OUString Filter::QUERYPARAM_IFLAGS = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("iflags" )); -const ::rtl::OUString Filter::QUERYPARAM_EFLAGS = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("eflags" )); -const ::rtl::OUString Filter::QUERYPARAM_SORT_PROP = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sort_prop" )); -const ::rtl::OUString Filter::QUERYPARAM_DESCENDING = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("descending" )); -const ::rtl::OUString Filter::QUERYPARAM_USE_ORDER = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("use_order" )); -const ::rtl::OUString Filter::QUERYPARAM_DEFAULT_FIRST = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("default_first" )); -const ::rtl::OUString Filter::QUERYPARAM_CASE_SENSITIVE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("case_sensitive")); -const ::rtl::OUString Filter::QUERYPARAMVALUE_SORT_PROP_NAME = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("name" )); -const ::rtl::OUString Filter::QUERYPARAMVALUE_SORT_PROP_UINAME = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("uiname" )); - -const ::rtl::OUString Filter::FLAGNAME_IMPORT = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Import" )); -const ::rtl::OUString Filter::FLAGNAME_EXPORT = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Export" )); -const ::rtl::OUString Filter::FLAGNAME_TEMPLATE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Template" )); -const ::rtl::OUString Filter::FLAGNAME_INTERNAL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Internal" )); -const ::rtl::OUString Filter::FLAGNAME_TEMPLATEPATH = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TemplatePath" )); -const ::rtl::OUString Filter::FLAGNAME_OWN = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Own" )); -const ::rtl::OUString Filter::FLAGNAME_ALIEN = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Alien" )); -const ::rtl::OUString Filter::FLAGNAME_USESOPTIONS = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UsesOptions" )); -const ::rtl::OUString Filter::FLAGNAME_DEFAULT = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Default" )); -const ::rtl::OUString Filter::FLAGNAME_EXECUTABLE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Executable" )); -const ::rtl::OUString Filter::FLAGNAME_SUPPORTSSELECTION = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SupportsSelection")); -const ::rtl::OUString Filter::FLAGNAME_MAPTOAPPPLUG = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MapToAppPlug" )); -const ::rtl::OUString Filter::FLAGNAME_NOTINFILEDIALOG = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NotInFileDialog" )); -const ::rtl::OUString Filter::FLAGNAME_NOTINCHOOSER = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NotInChooser" )); -const ::rtl::OUString Filter::FLAGNAME_ASYNCHRON = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Asynchron" )); -const ::rtl::OUString Filter::FLAGNAME_CREATOR = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Creator" )); -const ::rtl::OUString Filter::FLAGNAME_READONLY = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Readonly" )); -const ::rtl::OUString Filter::FLAGNAME_NOTINSTALLED = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NotInstalled" )); -const ::rtl::OUString Filter::FLAGNAME_CONSULTSERVICE = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ConsultService" )); -const ::rtl::OUString Filter::FLAGNAME_3RDPARTYFILTER = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("3rdPartyFilter" )); -const ::rtl::OUString Filter::FLAGNAME_PACKED = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Packed" )); -const ::rtl::OUString Filter::FLAGNAME_SILENTEXPORT = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SilentExport" )); -const ::rtl::OUString Filter::FLAGNAME_BROWSERPREFERED = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BrowserPrefered" )); -const ::rtl::OUString Filter::FLAGNAME_PREFERED = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Prefered" )); - -const sal_Int32 Filter::FLAGVALUE_IMPORT = 0x00000001L; // 1 -const sal_Int32 Filter::FLAGVALUE_EXPORT = 0x00000002L; // 2 -const sal_Int32 Filter::FLAGVALUE_TEMPLATE = 0x00000004L; // 4 -const sal_Int32 Filter::FLAGVALUE_INTERNAL = 0x00000008L; // 8 -const sal_Int32 Filter::FLAGVALUE_TEMPLATEPATH = 0x00000010L; // 16 -const sal_Int32 Filter::FLAGVALUE_OWN = 0x00000020L; // 32 -const sal_Int32 Filter::FLAGVALUE_ALIEN = 0x00000040L; // 64 -const sal_Int32 Filter::FLAGVALUE_USESOPTIONS = 0x00000080L; // 128 -const sal_Int32 Filter::FLAGVALUE_DEFAULT = 0x00000100L; // 256 -const sal_Int32 Filter::FLAGVALUE_EXECUTABLE = 0x00000200L; // 512 -const sal_Int32 Filter::FLAGVALUE_SUPPORTSSELECTION = 0x00000400L; // 1024 -const sal_Int32 Filter::FLAGVALUE_MAPTOAPPPLUG = 0x00000800L; // 2048 -const sal_Int32 Filter::FLAGVALUE_NOTINFILEDIALOG = 0x00001000L; // 4096 -const sal_Int32 Filter::FLAGVALUE_NOTINCHOOSER = 0x00002000L; // 8192 -const sal_Int32 Filter::FLAGVALUE_ASYNCHRON = 0x00004000L; // 16384 -const sal_Int32 Filter::FLAGVALUE_CREATOR = 0x00008000L; // 32768 -const sal_Int32 Filter::FLAGVALUE_READONLY = 0x00010000L; // 65536 -const sal_Int32 Filter::FLAGVALUE_NOTINSTALLED = 0x00020000L; // 131072 -const sal_Int32 Filter::FLAGVALUE_CONSULTSERVICE = 0x00040000L; // 262144 -const sal_Int32 Filter::FLAGVALUE_3RDPARTYFILTER = 0x00080000L; // 524288 -const sal_Int32 Filter::FLAGVALUE_PACKED = 0x00100000L; // 1048576 -const sal_Int32 Filter::FLAGVALUE_SILENTEXPORT = 0x00200000L; // 2097152 -const sal_Int32 Filter::FLAGVALUE_BROWSERPREFERED = 0x00400000L; // 4194304 -const sal_Int32 Filter::FLAGVALUE_PREFERED = 0x10000000L; // 268435456 - - } // namespace constant -} // namespace framework diff --git a/framework/source/constant/makefile.mk b/framework/source/constant/makefile.mk index 1c050db57dca..05fc28870d0a 100644 --- a/framework/source/constant/makefile.mk +++ b/framework/source/constant/makefile.mk @@ -35,8 +35,7 @@ ENABLE_EXCEPTIONS= TRUE # --- Generate ----------------------------------------------------- -SLOFILES= $(SLO)$/filter.obj \ - $(SLO)$/frameloader.obj \ +SLOFILES= $(SLO)$/frameloader.obj \ $(SLO)$/contenthandler.obj \ $(SLO)$/containerquery.obj diff --git a/framework/source/inc/constant/filter.hxx b/framework/source/inc/constant/filter.hxx deleted file mode 100644 index 141440a77716..000000000000 --- a/framework/source/inc/constant/filter.hxx +++ /dev/null @@ -1,126 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef __FRAMEWORK_CONSTANT_FILTER_H_ -#define __FRAMEWORK_CONSTANT_FILTER_H_ - -#include <rtl/ustring.hxx> - -namespace framework{ - namespace constant{ - -struct Filter -{ - public: - - static const ::rtl::OUString PROP_NAME; // string - static const ::rtl::OUString PROP_TYPE; // string - static const ::rtl::OUString PROP_DOCUMENTSERVICE; // string - static const ::rtl::OUString PROP_FILTERSERVICE; // string - static const ::rtl::OUString PROP_UICOMPONENT; // string - static const ::rtl::OUString PROP_FLAGS; // int32 - static const ::rtl::OUString PROP_USERDATA; // seq< string > - static const ::rtl::OUString PROP_TEMPLATENAME; // string - - static const ::rtl::OUString QUERY_GET_DEFAULT_FILTER_FOR_TYPE; - static const ::rtl::OUString QUERY_ALL; - static const ::rtl::OUString QUERY_WRITER; - static const ::rtl::OUString QUERY_WEB; - static const ::rtl::OUString QUERY_GLOBAL; - static const ::rtl::OUString QUERY_CHART; - static const ::rtl::OUString QUERY_CALC; - static const ::rtl::OUString QUERY_IMPRESS; - static const ::rtl::OUString QUERY_DRAW; - static const ::rtl::OUString QUERY_MATH; - - static const ::rtl::OUString QUERYPARAM_IFLAGS; - static const ::rtl::OUString QUERYPARAM_EFLAGS; - static const ::rtl::OUString QUERYPARAM_SORT_PROP; - static const ::rtl::OUString QUERYPARAM_DESCENDING; - static const ::rtl::OUString QUERYPARAM_USE_ORDER; - static const ::rtl::OUString QUERYPARAM_DEFAULT_FIRST; - static const ::rtl::OUString QUERYPARAM_CASE_SENSITIVE; - static const ::rtl::OUString QUERYPARAMVALUE_SORT_PROP_NAME; - static const ::rtl::OUString QUERYPARAMVALUE_SORT_PROP_UINAME; - - static const ::rtl::OUString FLAGNAME_IMPORT; - static const ::rtl::OUString FLAGNAME_EXPORT; - static const ::rtl::OUString FLAGNAME_TEMPLATE; - static const ::rtl::OUString FLAGNAME_INTERNAL; - static const ::rtl::OUString FLAGNAME_TEMPLATEPATH; - static const ::rtl::OUString FLAGNAME_OWN; - static const ::rtl::OUString FLAGNAME_ALIEN; - static const ::rtl::OUString FLAGNAME_USESOPTIONS; - static const ::rtl::OUString FLAGNAME_DEFAULT; - static const ::rtl::OUString FLAGNAME_EXECUTABLE; - static const ::rtl::OUString FLAGNAME_SUPPORTSSELECTION; - static const ::rtl::OUString FLAGNAME_MAPTOAPPPLUG; - static const ::rtl::OUString FLAGNAME_NOTINFILEDIALOG; - static const ::rtl::OUString FLAGNAME_NOTINCHOOSER; - static const ::rtl::OUString FLAGNAME_ASYNCHRON; - static const ::rtl::OUString FLAGNAME_CREATOR; - static const ::rtl::OUString FLAGNAME_READONLY; - static const ::rtl::OUString FLAGNAME_NOTINSTALLED; - static const ::rtl::OUString FLAGNAME_CONSULTSERVICE; - static const ::rtl::OUString FLAGNAME_3RDPARTYFILTER; - static const ::rtl::OUString FLAGNAME_PACKED; - static const ::rtl::OUString FLAGNAME_SILENTEXPORT; - static const ::rtl::OUString FLAGNAME_BROWSERPREFERED; - static const ::rtl::OUString FLAGNAME_PREFERED; - - static const sal_Int32 FLAGVALUE_IMPORT; - static const sal_Int32 FLAGVALUE_EXPORT; - static const sal_Int32 FLAGVALUE_TEMPLATE; - static const sal_Int32 FLAGVALUE_INTERNAL; - static const sal_Int32 FLAGVALUE_TEMPLATEPATH; - static const sal_Int32 FLAGVALUE_OWN; - static const sal_Int32 FLAGVALUE_ALIEN; - static const sal_Int32 FLAGVALUE_USESOPTIONS; - static const sal_Int32 FLAGVALUE_DEFAULT; - static const sal_Int32 FLAGVALUE_EXECUTABLE; - static const sal_Int32 FLAGVALUE_SUPPORTSSELECTION; - static const sal_Int32 FLAGVALUE_MAPTOAPPPLUG; - static const sal_Int32 FLAGVALUE_NOTINFILEDIALOG; - static const sal_Int32 FLAGVALUE_NOTINCHOOSER; - static const sal_Int32 FLAGVALUE_ASYNCHRON; - static const sal_Int32 FLAGVALUE_CREATOR; - static const sal_Int32 FLAGVALUE_READONLY; - static const sal_Int32 FLAGVALUE_NOTINSTALLED; - static const sal_Int32 FLAGVALUE_CONSULTSERVICE; - static const sal_Int32 FLAGVALUE_3RDPARTYFILTER; - static const sal_Int32 FLAGVALUE_PACKED; - static const sal_Int32 FLAGVALUE_SILENTEXPORT; - static const sal_Int32 FLAGVALUE_BROWSERPREFERED; - //FREE! ... 0x00800000L - static const sal_Int32 FLAGVALUE_PREFERED; - -}; - - } // namespace constant -} // namespace framework - -#endif // #ifndef __FRAMEWORK_CONSTANT_FILTER_H_ diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx index b9f1d2c8a09a..99dd3107f162 100644 --- a/framework/source/loadenv/loadenv.cxx +++ b/framework/source/loadenv/loadenv.cxx @@ -36,9 +36,6 @@ #endif #include <classes/framelistanalyzer.hxx> -#ifndef __FRAMEWORK_CONSTANT_FILTER_HXX_ -#include <constant/filter.hxx> -#endif #include <dispatch/interaction.hxx> #ifndef __FRAMEWORK_CONSTANT_FRAMELOADER_HXX_ @@ -1774,7 +1771,10 @@ void LoadEnv::impl_makeFrameWindowVisible(const css::uno::Reference< css::awt::X ::comphelper::ConfigurationHelper::E_READONLY); a >>= bForceFrontAndFocus; - pWindow->Show(sal_True, (bForceFrontAndFocus || bForceToFront) ? SHOW_FOREGROUNDTASK : 0 ); + if( pWindow->IsVisible() && (bForceFrontAndFocus || bForceToFront) ) + pWindow->ToTop(); + else + pWindow->Show(sal_True, (bForceFrontAndFocus || bForceToFront) ? SHOW_FOREGROUNDTASK : 0 ); } /* #i19976# diff --git a/framework/source/services/backingwindow.cxx b/framework/source/services/backingwindow.cxx index fb3d6a18eb79..17def8e1c684 100644 --- a/framework/source/services/backingwindow.cxx +++ b/framework/source/services/backingwindow.cxx @@ -41,6 +41,7 @@ #include "tools/urlobj.hxx" #include "unotools/dynamicmenuoptions.hxx" +#include "unotools/historyoptions.hxx" #include "svtools/imagemgr.hxx" #include "svtools/svtools.hrc" @@ -48,14 +49,18 @@ #include "comphelper/sequenceashashmap.hxx" #include "comphelper/configurationhelper.hxx" +#include "cppuhelper/implbase1.hxx" + #include "rtl/strbuf.hxx" #include "rtl/ustrbuf.hxx" +#include "osl/file.h" #include "com/sun/star/lang/XMultiServiceFactory.hpp" #include "com/sun/star/container/XNameAccess.hpp" #include "com/sun/star/system/XSystemShellExecute.hpp" #include "com/sun/star/system/SystemShellExecuteFlags.hpp" #include "com/sun/star/task/XJobExecutor.hpp" +#include "com/sun/star/util/XStringWidth.hpp" using namespace ::com::sun::star::beans; @@ -110,6 +115,20 @@ Size DecoToolBox::getMinSize() return maMinSize; } +class RecentFilesStringLength : public ::cppu::WeakImplHelper1< ::com::sun::star::util::XStringWidth > +{ + public: + RecentFilesStringLength() {} + virtual ~RecentFilesStringLength() {} + + // XStringWidth + sal_Int32 SAL_CALL queryStringWidth( const ::rtl::OUString& aString ) + throw (::com::sun::star::uno::RuntimeException) + { + return aString.getLength(); + } +}; + #define STC_BUTTON_STYLE (WB_LEFT | WB_VCENTER | WB_FLATBUTTON | WB_BEVELBUTTON) BackingWindow::BackingWindow( Window* i_pParent ) : @@ -134,7 +153,8 @@ BackingWindow::BackingWindow( Window* i_pParent ) : mnLayoutStyle( 0 ), mpAccExec( NULL ), mnBtnPos( 120 ), - mnBtnTop( 150 ) + mnBtnTop( 150 ), + mpRecentMenu( NULL ) { mnColumnWidth[0] = mnColumnWidth[1] = 0; mnTextColumnWidth[0] = mnTextColumnWidth[1] = 0; @@ -233,6 +253,7 @@ BackingWindow::BackingWindow( Window* i_pParent ) : BackingWindow::~BackingWindow() { + delete mpRecentMenu; delete mpAccExec; } @@ -261,6 +282,116 @@ void BackingWindow::DataChanged( const DataChangedEvent& rDCEvt ) } } +void BackingWindow::prepareRecentFileMenu() +{ + if( ! mpRecentMenu ) + mpRecentMenu = new PopupMenu(); + mpRecentMenu->Clear(); + maRecentFiles.clear(); + + // get recent file list and dispatch arguments + Sequence< Sequence< PropertyValue > > aHistoryList( SvtHistoryOptions().GetList( ePICKLIST ) ); + + sal_Int32 nPickListMenuItems = ( aHistoryList.getLength() > 99 ) ? 99 : aHistoryList.getLength(); + + if( ( nPickListMenuItems > 0 ) ) + { + maRecentFiles.reserve( nPickListMenuItems ); + for ( sal_Int32 i = 0; i < nPickListMenuItems; i++ ) + { + Sequence< PropertyValue >& rPickListEntry = aHistoryList[i]; + rtl::OUString aURL, aFilter, aFilterOpt, aTitle; + + for ( sal_Int32 j = 0; j < rPickListEntry.getLength(); j++ ) + { + const Any& a = rPickListEntry[j].Value; + + if ( rPickListEntry[j].Name == HISTORY_PROPERTYNAME_URL ) + a >>= aURL; + else if ( rPickListEntry[j].Name == HISTORY_PROPERTYNAME_FILTER ) + { + a >>= aFilter; + sal_Int32 nPos = aFilter.indexOf( '|' ); + if ( nPos >= 0 ) + { + if ( nPos < ( aFilter.getLength() - 1 ) ) + aFilterOpt = aFilter.copy( nPos+1 ); + aFilter = aFilter.copy( 0, nPos-1 ); + } + } + else if ( rPickListEntry[j].Name == HISTORY_PROPERTYNAME_TITLE ) + a >>= aTitle; + } + maRecentFiles.push_back( LoadRecentFile() ); + maRecentFiles.back().aTargetURL = aURL; + + sal_Int32 nArgs = aFilterOpt.getLength() ? 4 : 3; + Sequence< PropertyValue >& rArgsList( maRecentFiles.back().aArgSeq ); + rArgsList.realloc( nArgs ); + + nArgs--; + rArgsList[nArgs].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterName" )); + rArgsList[nArgs].Value = makeAny( aFilter ); + + if( aFilterOpt.getLength() ) + { + nArgs--; + rArgsList[nArgs].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterOptions" )); + rArgsList[nArgs].Value = makeAny( aFilterOpt ); + } + + // documents in the picklist will never be opened as templates + nArgs--; + rArgsList[nArgs].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AsTemplate" )); + rArgsList[nArgs].Value = makeAny( (sal_Bool) sal_False ); + + nArgs--; + rArgsList[nArgs].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Referer" )); + rArgsList[nArgs].Value = makeAny( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:user" ) ) ); + + // and finally create an entry in the popupmenu + rtl::OUString aMenuTitle; + INetURLObject aURLObj( aURL ); + + if ( aURLObj.GetProtocol() == INET_PROT_FILE ) + { + // Do handle file URL differently => convert it to a system + // path and abbreviate it with a special function: + String aFileSystemPath( aURLObj.getFSysPath( INetURLObject::FSYS_DETECT ) ); + + rtl::OUString aSystemPath( aFileSystemPath ); + rtl::OUString aCompactedSystemPath; + + oslFileError nError = osl_abbreviateSystemPath( aSystemPath.pData, &aCompactedSystemPath.pData, 46, NULL ); + if ( !nError ) + aMenuTitle = String( aCompactedSystemPath ); + else + aMenuTitle = aSystemPath; + } + else + { + // Use INetURLObject to abbreviate all other URLs + Reference< util::XStringWidth > xStringLength( new RecentFilesStringLength() ); + aMenuTitle = aURLObj.getAbbreviated( xStringLength, 46, INetURLObject::DECODE_UNAMBIGUOUS ); + } + rtl::OUStringBuffer aBuf( aMenuTitle.getLength() + 5 ); + if( i < 9 ) + { + aBuf.append( sal_Unicode( '~' ) ); + aBuf.append( i+1 ); + } + else if( i == 9 ) + aBuf.appendAscii( "1~0" ); + else + aBuf.append( i+1 ); + aBuf.appendAscii( ": " ); + aBuf.append( aMenuTitle ); + mpRecentMenu->InsertItem( static_cast<USHORT>(i+1), aBuf.makeStringAndClear() ); + } + maOpenButton.SetPopupMenu( mpRecentMenu ); + } +} + void BackingWindow::initBackground() { SetBackground( GetSettings().GetStyleSettings().GetWorkspaceGradient() ); @@ -327,6 +458,9 @@ void BackingWindow::initBackground() loadImage( FwkResId( BMP_BACKING_OPENFILE ), maOpenButton ); loadImage( FwkResId( BMP_BACKING_OPENTEMPLATE ), maTemplateButton ); + maOpenButton.SetMenuMode( MENUBUTTON_MENUMODE_TIMED ); + maOpenButton.SetSelectHdl( LINK( this, BackingWindow, SelectHdl ) ); + maOpenButton.SetActivateHdl( LINK( this, BackingWindow, ActivateHdl ) ); } void BackingWindow::initControls() @@ -515,7 +649,7 @@ void BackingWindow::initControls() maWriterButton.GrabFocus(); } -void BackingWindow::loadImage( const ResId& i_rId, ImageButton& i_rButton ) +void BackingWindow::loadImage( const ResId& i_rId, PushButton& i_rButton ) { BitmapEx aBmp( i_rId ); Size aImgSize( aBmp.GetSizePixel() ); @@ -530,7 +664,7 @@ void BackingWindow::layoutButton( const char* i_pURL, int nColumn, const std::set<rtl::OUString>& i_rURLS, SvtModuleOptions& i_rOpt, SvtModuleOptions::EModule i_eMod, - ImageButton& i_rBtn, + PushButton& i_rBtn, MnemonicGenerator& i_rMnemns, const String& i_rStr ) @@ -908,6 +1042,27 @@ IMPL_LINK( BackingWindow, ClickHdl, Button*, pButton ) return 0; } +IMPL_LINK( BackingWindow, SelectHdl, Button*, pButton ) +{ + if( pButton == &maOpenButton ) + { + sal_Int32 nItem = sal_Int32(maOpenButton.GetCurItemId())-1; + if( nItem >= 0 && nItem < sal_Int32(maRecentFiles.size()) ) + { + Reference< XDispatchProvider > xFrame( mxFrame, UNO_QUERY ); + dispatchURL( maRecentFiles[nItem].aTargetURL, rtl::OUString(), xFrame, maRecentFiles[nItem].aArgSeq ); + } + } + return 0; +} + +IMPL_LINK( BackingWindow, ActivateHdl, Button*, pButton ) +{ + if( pButton == &maOpenButton ) + prepareRecentFileMenu(); + return 0; +} + struct ImplDelayedDispatch { Reference< XDispatch > xDispatch; diff --git a/framework/source/services/backingwindow.hxx b/framework/source/services/backingwindow.hxx index c4d4c9b0b76b..958ebfbb243e 100644 --- a/framework/source/services/backingwindow.hxx +++ b/framework/source/services/backingwindow.hxx @@ -31,6 +31,7 @@ #include "rtl/ustring.hxx" #include "vcl/button.hxx" +#include "vcl/menubtn.hxx" #include "vcl/fixed.hxx" #include "vcl/bitmapex.hxx" #include "vcl/toolbox.hxx" @@ -77,6 +78,12 @@ namespace framework class BackingWindow : public Window { + struct LoadRecentFile + { + rtl::OUString aTargetURL; + com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aArgSeq; + }; + com::sun::star::uno::Reference<com::sun::star::frame::XDesktop> mxDesktop; com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider > mxDesktopDispatchProvider; com::sun::star::uno::Reference<com::sun::star::frame::XFrame> mxFrame; @@ -89,7 +96,7 @@ namespace framework ImageButton maWriterButton; ImageButton maCalcButton; ImageButton maImpressButton; - ImageButton maOpenButton; + MenuButton maOpenButton; ImageButton maDrawButton; ImageButton maDBButton; ImageButton maMathButton; @@ -123,6 +130,9 @@ namespace framework long mnBtnPos; long mnBtnTop; + PopupMenu* mpRecentMenu; + std::vector< LoadRecentFile > maRecentFiles; + static const int nItemId_Extensions = 1; static const int nItemId_Reg = 2; static const int nItemId_Info = 3; @@ -132,11 +142,11 @@ namespace framework static const int nShadowRight = 45; static const int nShadowBottom = 50; - void loadImage( const ResId& i_rId, ImageButton& i_rButton ); + void loadImage( const ResId& i_rId, PushButton& i_rButton ); void layoutButton( const char* i_pURL, int nColumn, const std::set<rtl::OUString>& i_rURLS, SvtModuleOptions& i_rOpt, SvtModuleOptions::EModule i_eMod, - ImageButton& i_rBtn, + PushButton& i_rBtn, MnemonicGenerator& i_rMnemonicGen, const String& i_rStr = String() ); @@ -148,10 +158,13 @@ namespace framework ); DECL_LINK( ClickHdl, Button* ); + DECL_LINK( SelectHdl, Button* ); + DECL_LINK( ActivateHdl, Button* ); DECL_LINK( ToolboxHdl, void* ); void initControls(); void initBackground(); + void prepareRecentFileMenu(); public: BackingWindow( Window* pParent ); ~BackingWindow(); @@ -160,7 +173,7 @@ namespace framework virtual void Resize(); virtual long Notify( NotifyEvent& rNEvt ); virtual void DataChanged( const DataChangedEvent& rDCEvt ); - virtual void GetFocus(); + virtual void GetFocus(); void setOwningFrame( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& xFrame ); }; diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx index 18d5a1c31bef..08a7c522831b 100644 --- a/framework/source/services/frame.cxx +++ b/framework/source/services/frame.cxx @@ -1551,8 +1551,9 @@ css::uno::Reference< css::awt::XWindow > SAL_CALL Frame::getComponentWindow() th css::uno::Reference< css::frame::XController > SAL_CALL Frame::getController() throw( css::uno::RuntimeException ) { /* UNSAFE AREA --------------------------------------------------------------------------------------------- */ + // It seems to be unavoidable that disposed frames allow to ask for a Controller (#111452) // Register transaction and reject wrong calls. - TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS ); + // TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS ); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); diff --git a/framework/source/services/fwk_services.src b/framework/source/services/fwk_services.src index 7ad8b4c3cede..ef037c75778a 100644 --- a/framework/source/services/fwk_services.src +++ b/framework/source/services/fwk_services.src @@ -51,7 +51,7 @@ Window DLG_BACKING }; String STR_BACKING_FILE { - Text [ en-US ] = "~Open a document..."; + Text [ en-US ] = "~Open..."; }; String STR_BACKING_EXTHELP { diff --git a/framework/source/services/pathsettings.cxx b/framework/source/services/pathsettings.cxx index e99e08895a3f..5227cb9f302c 100644 --- a/framework/source/services/pathsettings.cxx +++ b/framework/source/services/pathsettings.cxx @@ -855,6 +855,7 @@ void PathSettings::impl_setPathValue( sal_Int32 nID , ::rtl::OUString sVal; aVal >>= sVal; OUStringList lList = impl_convertOldStyle2Path(sVal); + impl_subst(lList, fa_getSubstitution(), sal_False); impl_purgeKnownPaths(aChangePath, lList); if (! impl_isValidPath(lList)) throw css::lang::IllegalArgumentException(); diff --git a/framework/source/threadhelp/transactionmanager.cxx b/framework/source/threadhelp/transactionmanager.cxx index 34b4892ccebe..a42c871c176e 100644 --- a/framework/source/threadhelp/transactionmanager.cxx +++ b/framework/source/threadhelp/transactionmanager.cxx @@ -319,42 +319,6 @@ sal_Bool TransactionManager::isCallRejected( ERejectReason& eReason ) const } /*-****************************************************************************************************//** - @short return a reference to a static manager - @descr Sometimes we need the global member! (e.g. in our own static methods) - We create our own "class global static" member threadsafe. - It will be created at first call only! - All other requests use these created one then directly. - - @seealso - - - @param - - @return A reference to a static member. - - @onerror No error should occure. -*//*-*****************************************************************************************************/ -TransactionManager& TransactionManager::getGlobalTransactionManager() -{ - // Initialize static member only for one time! - static TransactionManager* pManager = NULL; - // If these method first called (member not already exist!) ... - if( pManager == NULL ) - { - // ... we must create a new one. Protect follow code with the global mutex - - // It must be - we create a static variable! - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - // We must check our pointer again - because ... another instance of ouer class could be faster then these one! - if( pManager == NULL ) - { - // Create the new manager and set it for return on static variable. - static TransactionManager aManager; - pManager = &aManager; - } - } - // Return new created or already existing object. - return *pManager; -} - -/*-****************************************************************************************************//** @short throw any exceptions for rejected calls @descr If user whish to use our automaticly exception mode we use this impl-method. We check all combinations of eReason and eExceptionMode and throw right exception with some diff --git a/framework/source/uielement/macrosmenucontroller.cxx b/framework/source/uielement/macrosmenucontroller.cxx index 2905d0c0bd05..30b0fe5fec1c 100644 --- a/framework/source/uielement/macrosmenucontroller.cxx +++ b/framework/source/uielement/macrosmenucontroller.cxx @@ -93,6 +93,9 @@ void MacrosMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPo if ( pVCLPopupMenu ) pPopupMenu = (PopupMenu *)pVCLPopupMenu->GetMenu(); + if (!pPopupMenu) + return; + // insert basic String aCommand = String::CreateFromAscii( ".uno:MacroDialog" ); String aDisplayName = RetrieveLabelFromCommand( aCommand ); diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index abb263497854..f965d38f6b46 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -517,7 +517,47 @@ void ToolBarManager::UpdateControllers() } m_bUpdateControllers = sal_False; } +//for update toolbar controller via Support Visible by shizhoubo +void ToolBarManager::UpdateController( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XToolbarController > xController) +{ + RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::ToolBarManager::UpdateControllers" ); + + if ( !m_bUpdateControllers ) + { + m_bUpdateControllers = sal_True; + try + { if(xController.is()) + { + Reference< XUpdatable > xUpdatable( xController, UNO_QUERY ); + if ( xUpdatable.is() ) + xUpdatable->update(); + } + } + catch ( Exception& ) + { + } + + /* m_bUpdateControllers = sal_True; + ToolBarControllerMap::iterator pIter = m_aControllerMap.begin(); + while ( pIter != m_aControllerMap.end() ) + { + try + { + Reference< XUpdatable > xUpdatable( pIter->second, UNO_QUERY ); + if ( xUpdatable.is() ) + xUpdatable->update(); + } + catch ( Exception& ) + { + } + ++pIter; + }*/ + + } + m_bUpdateControllers = sal_False; +} +//end void ToolBarManager::frameAction( const FrameActionEvent& Action ) throw ( RuntimeException ) { @@ -1072,6 +1112,19 @@ void ToolBarManager::CreateControllers() Sequence< Any > aArgs( comphelper::containerToSequence( aPropertyVector )); xInit->initialize( aArgs ); + //for Support Visiblitly by shizhoubo + if (pController) + { + // rtl::OUString aCommandURL = pController->m_aCommandURL; + if(aCommandURL == rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:SwitchXFormsDesignMode" )) || + aCommandURL == rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ViewDataSourceBrowser" )) || + aCommandURL == rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ParaLeftToRight" )) || + aCommandURL == rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ParaRightToLeft" )) + ) + pController->setFastPropertyValue_NoBroadcast(1,makeAny(sal_True)); + } + + //end } // Request a item window from the toolbar controller and set it at the VCL toolbar @@ -1092,6 +1145,31 @@ void ToolBarManager::CreateControllers() } } } + //for update Controller via support visiable state by shizhoubo + Reference< XPropertySet > xPropSet( xController, UNO_QUERY ); + if ( xPropSet.is() ) + { + try + { + sal_Bool bSupportVisiable = sal_True; + Any a( xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "SupportsVisiable" ))) ); + a >>= bSupportVisiable; + if ( bSupportVisiable ) + { + Reference< XToolbarController > xTbxController( xController, UNO_QUERY ); + UpdateController(xTbxController); + } + } + catch ( RuntimeException& ) + { + throw; + } + catch ( Exception& ) + { + } + } + //end + } AddFrameActionListener(); |