summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorCarsten Driesner <cd@openoffice.org>2010-11-11 11:46:35 +0100
committerCarsten Driesner <cd@openoffice.org>2010-11-11 11:46:35 +0100
commite506ebbc87e7c722d3b674b9b74efc3218bf8294 (patch)
treea0727a7d8cd4c36cd320bce1269b421c9306e946 /framework
parentd516dcef04404a01573f287526a07e53ace75de7 (diff)
dockingwindows: #i115527# Fixed broken Reset function in View-Toolbars. Refresh method must read persistent state data.
Diffstat (limited to 'framework')
-rwxr-xr-xframework/source/layoutmanager/layoutmanager.cxx9
-rwxr-xr-xframework/source/layoutmanager/toolbarlayoutmanager.cxx27
-rwxr-xr-xframework/source/layoutmanager/toolbarlayoutmanager.hxx2
3 files changed, 23 insertions, 15 deletions
diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx
index 9ab558860150..e5bf08cf0300 100755
--- a/framework/source/layoutmanager/layoutmanager.cxx
+++ b/framework/source/layoutmanager/layoutmanager.cxx
@@ -3135,13 +3135,13 @@ void SAL_CALL LayoutManager::elementReplaced( const ui::ConfigurationEvent& Even
parseResourceURL( Event.ResourceURL, aElementType, aElementName );
if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR ))
- {
- if ( xToolbarManager.is() )
+ {
+ if ( xToolbarManager.is() )
{
xToolbarManager->elementReplaced( Event );
bRefreshLayout = pToolbarManager->isLayoutDirty();
}
- }
+ }
else
{
Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL );
@@ -3200,10 +3200,11 @@ void SAL_CALL LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32 n
ReadGuard aReadLock( m_aLock );
Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager );
ToolbarLayoutManager* pToolbarManager = m_pToolbarManager;
+ bool bAutomaticToolbars( m_bAutomaticToolbars );
aReadLock.unlock();
if ( pToolbarManager )
- pToolbarManager->refreshToolbarsVisibility();
+ pToolbarManager->refreshToolbarsVisibility( bAutomaticToolbars );
}
break;
}
diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.cxx b/framework/source/layoutmanager/toolbarlayoutmanager.cxx
index 5821a6a29d37..559e7707ac36 100755
--- a/framework/source/layoutmanager/toolbarlayoutmanager.cxx
+++ b/framework/source/layoutmanager/toolbarlayoutmanager.cxx
@@ -595,27 +595,34 @@ bool ToolbarLayoutManager::hideToolbar( const ::rtl::OUString& rResourceURL )
return false;
}
-void ToolbarLayoutManager::refreshToolbarsVisibility()
+void ToolbarLayoutManager::refreshToolbarsVisibility( bool bAutomaticToolbars )
{
UIElementVector aUIElementVector;
+
+ ReadGuard aReadLock( m_aLock );
+ bool bVisible( m_bVisible );
+ aReadLock.unlock();
+
+ if ( !bVisible || !bAutomaticToolbars )
+ return;
+
implts_getUIElementVectorCopy( aUIElementVector );
+ UIElement aUIElement;
vos::OGuard aGuard( Application::GetSolarMutex() );
UIElementVector::iterator pIter;
for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ )
{
- Window* pWindow = getWindowFromXUIElement( pIter->m_xUIElement );
- if ( pWindow )
+ if ( implts_readWindowStateData( pIter->m_aName, aUIElement ) &&
+ ( pIter->m_bVisible != aUIElement.m_bVisible ) && !pIter->m_bMasterHide )
{
- if ( pIter->m_bVisible && !pIter->m_bMasterHide )
+ WriteGuard aWriteLock( m_aLock );
+ UIElement& rUIElement = impl_findToolbar( pIter->m_aName );
+ if ( rUIElement.m_aName == pIter->m_aName )
{
- if ( pIter->m_bFloating )
- pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE );
- else
- implts_setLayoutDirty();
+ rUIElement.m_bVisible = aUIElement.m_bVisible;
+ implts_setLayoutDirty();
}
- else
- pWindow->Show( FALSE );
}
}
}
diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.hxx b/framework/source/layoutmanager/toolbarlayoutmanager.hxx
index ebbfe23f1714..baf6f088cc2e 100755
--- a/framework/source/layoutmanager/toolbarlayoutmanager.hxx
+++ b/framework/source/layoutmanager/toolbarlayoutmanager.hxx
@@ -128,7 +128,7 @@ class ToolbarLayoutManager : public ::cppu::WeakImplHelper3< ::com::sun::star::a
bool showToolbar( const ::rtl::OUString& rResourceURL );
bool hideToolbar( const ::rtl::OUString& rResourceURL );
- void refreshToolbarsVisibility();
+ void refreshToolbarsVisibility( bool bAutomaticToolbars );
void setFloatingToolbarsVisibility( bool bVisible );
void setVisible(bool bVisible);
bool isVisible() { return m_bVisible; }