diff options
Diffstat (limited to 'framework/source')
-rw-r--r-- | framework/source/classes/fwktabwindow.cxx | 15 | ||||
-rw-r--r-- | framework/source/helper/makefile.mk | 3 | ||||
-rw-r--r-- | framework/source/helper/mischelper.cxx | 71 | ||||
-rw-r--r-- | framework/source/services/backingwindow.cxx | 8 | ||||
-rw-r--r-- | framework/source/services/frame.cxx | 9 | ||||
-rw-r--r-- | framework/source/uielement/langselectionmenucontroller.cxx | 36 | ||||
-rw-r--r-- | framework/source/uielement/langselectionstatusbarcontroller.cxx | 36 | ||||
-rw-r--r-- | framework/source/uielement/togglebuttontoolbarcontroller.cxx | 2 | ||||
-rw-r--r-- | framework/source/uielement/toolbarmanager.cxx | 16 |
9 files changed, 137 insertions, 59 deletions
diff --git a/framework/source/classes/fwktabwindow.cxx b/framework/source/classes/fwktabwindow.cxx index a7c6882751ee..71c26ecb681c 100644 --- a/framework/source/classes/fwktabwindow.cxx +++ b/framework/source/classes/fwktabwindow.cxx @@ -40,6 +40,7 @@ #include <com/sun/star/awt/XContainerWindowProvider.hpp> #include <com/sun/star/awt/XWindow.hpp> #include <com/sun/star/awt/XWindowPeer.hpp> +#include <com/sun/star/awt/XControl.hpp> #include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/graphic/XGraphic.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> @@ -90,7 +91,7 @@ FwkTabPage::FwkTabPage( const css::uno::Reference< css::awt::XContainerWindowEventHandler >& rEventHdl, const css::uno::Reference< css::awt::XContainerWindowProvider >& rProvider ) : - TabPage( pParent, WB_DIALOGCONTROL ), + TabPage( pParent, WB_DIALOGCONTROL | WB_TABSTOP | WB_CHILDDLGCTRL ), m_sPageURL ( rPageURL ), m_xEventHdl ( rEventHdl ), @@ -122,6 +123,18 @@ void FwkTabPage::CreateDialog() m_xWinProvider->createContainerWindow( m_sPageURL, rtl::OUString(), xParent, xHandler ), uno::UNO_QUERY ); + uno::Reference< awt::XControl > xPageControl( m_xPage, uno::UNO_QUERY ); + if ( xPageControl.is() ) + { + uno::Reference< awt::XWindowPeer > xWinPeer( xPageControl->getPeer() ); + if ( xWinPeer.is() ) + { + Window* pWindow = VCLUnoHelper::GetWindow( xWinPeer ); + if ( pWindow ) + pWindow->SetStyle( pWindow->GetStyle() | WB_DIALOGCONTROL | WB_CHILDDLGCTRL ); + } + } + CallMethod( INITIALIZE_METHOD ); } catch ( lang::IllegalArgumentException& ) diff --git a/framework/source/helper/makefile.mk b/framework/source/helper/makefile.mk index 29db41747e83..7a2fc1816869 100644 --- a/framework/source/helper/makefile.mk +++ b/framework/source/helper/makefile.mk @@ -66,7 +66,8 @@ SLOFILES= $(SLO)$/ocomponentaccess.obj \ $(SLO)$/configimporter.obj \ $(SLO)$/tagwindowasmodified.obj \ $(SLO)$/titlebarupdate.obj \ - $(SLO)$/titlehelper.obj + $(SLO)$/titlehelper.obj \ + $(SLO)$/mischelper.obj # --- Targets ------------------------------------------------------ diff --git a/framework/source/helper/mischelper.cxx b/framework/source/helper/mischelper.cxx new file mode 100644 index 000000000000..395d59259286 --- /dev/null +++ b/framework/source/helper/mischelper.cxx @@ -0,0 +1,71 @@ +/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: langselectionstatusbarcontroller.cxx,v $
+ * $Revision: 1.6.40.1 $
+ *
+ * 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"
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
+#include <tools/debug.hxx>
+#include <comphelper/processfactory.hxx>
+#include <helper/mischelper.hxx>
+
+
+using namespace ::com::sun::star;
+
+namespace framework
+{
+
+uno::Reference< linguistic2::XLanguageGuessing > LanguageGuessingHelper::GetGuesser() const
+{
+ if (!m_xLanguageGuesser.is())
+ {
+ try
+ {
+ uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() );
+ if (xMgr.is())
+ {
+ m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >(
+ xMgr->createInstance(
+ rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ),
+ uno::UNO_QUERY );
+ }
+ }
+ catch (uno::Exception &r)
+ {
+ (void) r;
+ DBG_ASSERT( 0, "failed to get language guessing component" );
+ }
+ }
+ return m_xLanguageGuesser;
+}
+
+} // namespace framework
+
diff --git a/framework/source/services/backingwindow.cxx b/framework/source/services/backingwindow.cxx index 03b0e1ec3dcc..660685b8bdcd 100644 --- a/framework/source/services/backingwindow.cxx +++ b/framework/source/services/backingwindow.cxx @@ -167,6 +167,10 @@ BackingWindow::BackingWindow( Window* i_pParent ) : // clean up resource stack FreeResource(); + maWelcome.SetPaintTransparent( TRUE ); + maProduct.SetPaintTransparent( TRUE ); + EnableChildTransparentMode(); + SetStyle( GetStyle() | WB_DIALOGCONTROL ); // add some breathing space for the images @@ -279,9 +283,9 @@ void BackingWindow::initBackground() } maWelcome.SetControlForeground( maWelcomeTextColor ); - maWelcome.SetControlBackground( aTextBGColor ); + maWelcome.SetBackground(); maProduct.SetControlForeground( maWelcomeTextColor ); - maProduct.SetControlBackground( aTextBGColor ); + maProduct.SetBackground(); maCreateText.SetControlForeground( maLabelTextColor ); maCreateText.SetControlBackground( aTextBGColor ); maWriterText.SetControlForeground( maLabelTextColor ); diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx index 427c2b4dc6d6..3d7b28697dd9 100644 --- a/framework/source/services/frame.cxx +++ b/framework/source/services/frame.cxx @@ -350,6 +350,15 @@ css::uno::Reference< css::lang::XComponent > SAL_CALL Frame::loadComponentFromUR css::lang::IllegalArgumentException , css::uno::RuntimeException ) { + { + // If the frame is closed the call might lead to crash even with target "_blank", + // so the DisposedException should be thrown in this case + // It still looks to be too dangerous to set the transaction for the whole loading process + // so the guard is used in scopes to let the standard check be used + + TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS ); + } + ReadGuard aReadLock(m_aLock); css::uno::Reference< css::frame::XComponentLoader > xThis(static_cast< css::frame::XComponentLoader* >(this), css::uno::UNO_QUERY); css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = m_xFactory; diff --git a/framework/source/uielement/langselectionmenucontroller.cxx b/framework/source/uielement/langselectionmenucontroller.cxx index e7d3fad09ac1..84323b3bb7ef 100644 --- a/framework/source/uielement/langselectionmenucontroller.cxx +++ b/framework/source/uielement/langselectionmenucontroller.cxx @@ -79,6 +79,8 @@ #endif #include <dispatch/uieventloghelper.hxx> +#include "helper/mischelper.hxx" + //_________________________________________________________________________________________________________________ // Defines //_________________________________________________________________________________________________________________ @@ -106,17 +108,6 @@ LanguageSelectionMenuController::LanguageSelectionMenuController( const ::com::s PopupMenuControllerBase( xServiceManager ), m_bShowMenu( sal_True ) { - if (!m_xLanguageGuesser.is()) - { - uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() ); - if (xMgr.is()) - { - m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >( - xMgr->createInstance( - rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ), - uno::UNO_QUERY ); - } - } } LanguageSelectionMenuController::~LanguageSelectionMenuController() @@ -301,12 +292,6 @@ void SAL_CALL LanguageSelectionMenuController::setPopupMenu( const Reference< cs } } -//match ScriptType -bool lcl_checkScriptType(sal_Int16 nScriptType,LanguageType nLang) -{ - return 0 != (nScriptType & SvtLanguageOptions::GetScriptTypeOfLanguage( nLang )); -} - void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopupMenu , const Mode eMode ) { VCLXPopupMenu* pVCLPopupMenu = (VCLXPopupMenu *)VCLXMenu::GetImplementation( rPopupMenu ); @@ -358,7 +343,7 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup LanguageType rSystemLanguage = rAllSettings.GetLanguage(); if(rSystemLanguage!=LANGUAGE_DONTKNOW) { - if (lcl_checkScriptType(m_nScriptType,rSystemLanguage )) + if (IsScriptTypeMatchingToLanguage(m_nScriptType,rSystemLanguage )) LangItems[::rtl::OUString(aLangTable.GetString(rSystemLanguage))]=::rtl::OUString(aLangTable.GetString(rSystemLanguage)); } @@ -366,24 +351,25 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup LanguageType rUILanguage = rAllSettings.GetUILanguage(); if(rUILanguage!=LANGUAGE_DONTKNOW) { - if (lcl_checkScriptType(m_nScriptType, rUILanguage )) + if (IsScriptTypeMatchingToLanguage(m_nScriptType, rUILanguage )) LangItems[::rtl::OUString(aLangTable.GetString(rUILanguage))]=::rtl::OUString(aLangTable.GetString(rUILanguage)); } //4--guessed language - if (m_xLanguageGuesser.is() && m_aGuessedText.getLength() > 0) + uno::Reference< linguistic2::XLanguageGuessing > xLangGuesser( m_aLangGuessHelper.GetGuesser() ); + if (xLangGuesser.is() && m_aGuessedText.getLength() > 0) { - ::com::sun::star::lang::Locale aLocale(m_xLanguageGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); + ::com::sun::star::lang::Locale aLocale(xLangGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); LanguageType nLang = MsLangId::convertLocaleToLanguageWithFallback( aLocale ); - if ((nLang != LANGUAGE_DONTKNOW) && (nLang != LANGUAGE_NONE) && (nLang != LANGUAGE_SYSTEM) - && (lcl_checkScriptType( m_nScriptType, nLang ))) + if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_NONE && nLang != LANGUAGE_SYSTEM + && IsScriptTypeMatchingToLanguage( m_nScriptType, nLang )) LangItems[aLangTable.GetString(nLang)]=aLangTable.GetString(nLang); } //5--keyboard language if(m_aKeyboardLang!=::rtl::OUString::createFromAscii("")) { - if (lcl_checkScriptType(m_nScriptType, aLanguageTable.GetType(m_aKeyboardLang))) + if (IsScriptTypeMatchingToLanguage(m_nScriptType, aLanguageTable.GetType(m_aKeyboardLang))) LangItems[m_aKeyboardLang] = m_aKeyboardLang; } @@ -417,7 +403,7 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup if (LangItems.size()==7) break; const Locale& rLocale=rLocales[i]; - if(lcl_checkScriptType(m_nScriptType, aLanguageTable.GetType(rLocale.Language))) + if(IsScriptTypeMatchingToLanguage(m_nScriptType, aLanguageTable.GetType(rLocale.Language))) LangItems[::rtl::OUString(rLocale.Language)]=::rtl::OUString(rLocale.Language); } } diff --git a/framework/source/uielement/langselectionstatusbarcontroller.cxx b/framework/source/uielement/langselectionstatusbarcontroller.cxx index 63bd51d27525..6eee84328315 100644 --- a/framework/source/uielement/langselectionstatusbarcontroller.cxx +++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx @@ -75,6 +75,8 @@ #include <com/sun/star/linguistic2/XLanguageGuessing.hpp> #include <dispatch/uieventloghelper.hxx> +#include "helper/mischelper.hxx" + using namespace ::cppu; using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -99,17 +101,6 @@ LangSelectionStatusbarController::LangSelectionStatusbarController( const uno::R m_bShowMenu( sal_True ), m_nScriptType( 7 ) { - if (!m_xLanguageGuesser.is()) - { - uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() ); - if (xMgr.is()) - { - m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >( - xMgr->createInstance( - rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ), - uno::UNO_QUERY ); - } - } } // XInterface @@ -183,12 +174,6 @@ throw (::com::sun::star::uno::RuntimeException) return sal_False; } -//match ScriptType -bool checkScriptType( sal_Int16 nScriptType, LanguageType nLang ) -{ - return 0 != ( nScriptType & SvtLanguageOptions::GetScriptTypeOfLanguage( nLang )); -} - void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::RuntimeException) { if (!m_bShowMenu) @@ -215,7 +200,7 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R LanguageType rSystemLanguage = rAllSettings.GetLanguage(); if( rSystemLanguage != LANGUAGE_DONTKNOW ) { - if ( checkScriptType( m_nScriptType, rSystemLanguage )) + if ( IsScriptTypeMatchingToLanguage( m_nScriptType, rSystemLanguage )) LangItems.insert( ::rtl::OUString( aLangTable.GetString( rSystemLanguage )) ); } @@ -223,24 +208,25 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R LanguageType rUILanguage = rAllSettings.GetUILanguage(); if( rUILanguage != LANGUAGE_DONTKNOW ) { - if ( checkScriptType( m_nScriptType, rUILanguage )) + if ( IsScriptTypeMatchingToLanguage( m_nScriptType, rUILanguage )) LangItems.insert( ::rtl::OUString( aLangTable.GetString( rUILanguage )) ); } //4--guessed language - if ( m_xLanguageGuesser.is() && m_aGuessedText.getLength() > 0) + uno::Reference< linguistic2::XLanguageGuessing > xLangGuesser( m_aLangGuessHelper.GetGuesser() ); + if ( xLangGuesser.is() && m_aGuessedText.getLength() > 0) { - ::com::sun::star::lang::Locale aLocale(m_xLanguageGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); + ::com::sun::star::lang::Locale aLocale(xLangGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); LanguageType nLang = MsLangId::convertLocaleToLanguageWithFallback( aLocale ); - if (( nLang != LANGUAGE_DONTKNOW ) && ( nLang != LANGUAGE_NONE ) && (nLang != LANGUAGE_SYSTEM) - && ( checkScriptType( m_nScriptType, nLang ))) + if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_NONE && nLang != LANGUAGE_SYSTEM + && IsScriptTypeMatchingToLanguage( m_nScriptType, nLang )) LangItems.insert( aLangTable.GetString( nLang )); } //5--keyboard language if( m_aKeyboardLang != ::rtl::OUString::createFromAscii( "" )) { - if ( checkScriptType( m_nScriptType, aLanguageTable.GetType( m_aKeyboardLang ))) + if ( IsScriptTypeMatchingToLanguage( m_nScriptType, aLanguageTable.GetType( m_aKeyboardLang ))) LangItems.insert( m_aKeyboardLang ); } @@ -274,7 +260,7 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R if ( LangItems.size() == 7 ) break; const Locale& rLocale=rLocales[i]; - if( checkScriptType( m_nScriptType, aLangTable.GetType( rLocale.Language ))) + if( IsScriptTypeMatchingToLanguage( m_nScriptType, aLangTable.GetType( rLocale.Language ))) LangItems.insert( ::rtl::OUString( rLocale.Language ) ); } } diff --git a/framework/source/uielement/togglebuttontoolbarcontroller.cxx b/framework/source/uielement/togglebuttontoolbarcontroller.cxx index 301c9a022182..9bf4ad91c6f2 100644 --- a/framework/source/uielement/togglebuttontoolbarcontroller.cxx +++ b/framework/source/uielement/togglebuttontoolbarcontroller.cxx @@ -246,7 +246,6 @@ void ToggleButtonToolbarController::executeControlCommand( const ::com::sun::sta < m_aDropdownMenuList.size() ) ) { m_aCurrentSelection = m_aDropdownMenuList[nPos]; - m_pToolbar->SetItemText( m_nID, m_aCurrentSelection ); // send notification uno::Sequence< beans::NamedValue > aInfo( 1 ); @@ -353,7 +352,6 @@ IMPL_LINK( ToggleButtonToolbarController, MenuSelectHdl, Menu *, pMenu ) if ( nItemId > 0 && nItemId <= m_aDropdownMenuList.size() ) { m_aCurrentSelection = m_aDropdownMenuList[nItemId-1]; - m_pToolbar->SetItemText( m_nID, m_aCurrentSelection ); execute( 0 ); } diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index a85cee3178c3..a105f7b281a1 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -336,11 +336,21 @@ void ToolBarManager::Destroy() delete static_cast< AddonsParams* >( m_pToolBar->GetItemData( nItemId )); } - /* #i99167# removed change for i93173 since there is some weird crash + /* #i99167# removed change for i93173 since there is some weird crash */ // #i93173# delete toolbar lazily as we can still be in one of its handlers m_pToolBar->doLazyDelete(); - */ - delete m_pToolBar; + + Link aEmpty; + m_pToolBar->SetSelectHdl( aEmpty ); + m_pToolBar->SetActivateHdl( aEmpty ); + m_pToolBar->SetDeactivateHdl( aEmpty ); + m_pToolBar->SetClickHdl( aEmpty ); + m_pToolBar->SetDropdownClickHdl( aEmpty ); + m_pToolBar->SetDoubleClickHdl( aEmpty ); + m_pToolBar->SetStateChangedHdl( aEmpty ); + m_pToolBar->SetDataChangedHdl( aEmpty ); + +// delete m_pToolBar; m_pToolBar = 0; } |