Remember collapse state of sidebar when file is auto-reloaded

BUGS: 289010
REVIEW: 103517
This commit is contained in:
Elvis Stansvik 2011-12-28 00:49:44 +01:00 committed by Albert Astals Cid
parent cdc1b0c78d
commit d066fb0004
4 changed files with 33 additions and 13 deletions

View file

@ -1213,7 +1213,7 @@ bool Part::openFile()
} }
// if the 'OpenTOC' flag is set, open the TOC // if the 'OpenTOC' flag is set, open the TOC
if ( m_document->metaData( "OpenTOC" ).toBool() && m_sidebar->isItemEnabled( 0 ) ) if ( m_document->metaData( "OpenTOC" ).toBool() && m_sidebar->isItemEnabled( 0 ) && !m_sidebar->isCollapsed() )
{ {
const bool sidebarVisible = m_sidebar->isSidebarVisible(); const bool sidebarVisible = m_sidebar->isSidebarVisible();
m_sidebar->setCurrentIndex( 0 ); m_sidebar->setCurrentIndex( 0 );
@ -1449,6 +1449,7 @@ void Part::slotDoFileDirty()
// store the current toolbox pane // store the current toolbox pane
m_dirtyToolboxIndex = m_sidebar->currentIndex(); m_dirtyToolboxIndex = m_sidebar->currentIndex();
m_wasSidebarVisible = m_sidebar->isSidebarVisible(); m_wasSidebarVisible = m_sidebar->isSidebarVisible();
m_wasSidebarCollapsed = m_sidebar->isCollapsed();
// store if presentation view was open // store if presentation view was open
m_wasPresentationOpen = ((PresentationWidget*)m_presentationWidget != 0); m_wasPresentationOpen = ((PresentationWidget*)m_presentationWidget != 0);
@ -1469,7 +1470,8 @@ void Part::slotDoFileDirty()
m_document->setViewport( m_viewportDirty ); m_document->setViewport( m_viewportDirty );
m_viewportDirty.pageNumber = -1; m_viewportDirty.pageNumber = -1;
m_document->setRotation( m_dirtyPageRotation ); m_document->setRotation( m_dirtyPageRotation );
if ( m_sidebar->currentIndex() != m_dirtyToolboxIndex && m_sidebar->isItemEnabled( m_dirtyToolboxIndex ) ) if ( m_sidebar->currentIndex() != m_dirtyToolboxIndex && m_sidebar->isItemEnabled( m_dirtyToolboxIndex )
&& !m_sidebar->isCollapsed() )
{ {
m_sidebar->setCurrentIndex( m_dirtyToolboxIndex ); m_sidebar->setCurrentIndex( m_dirtyToolboxIndex );
} }
@ -1477,6 +1479,10 @@ void Part::slotDoFileDirty()
{ {
m_sidebar->setSidebarVisibility( m_wasSidebarVisible ); m_sidebar->setSidebarVisibility( m_wasSidebarVisible );
} }
if ( m_sidebar->isCollapsed() != m_wasSidebarCollapsed )
{
m_sidebar->setCollapsed( m_wasSidebarCollapsed );
}
if (m_wasPresentationOpen) slotShowPresentation(); if (m_wasPresentationOpen) slotShowPresentation();
emit enablePrintAction(true && m_document->printingSupport() != Okular::Document::NoPrinting); emit enablePrintAction(true && m_document->printingSupport() != Okular::Document::NoPrinting);
} }

1
part.h
View file

@ -253,6 +253,7 @@ class Part : public KParts::ReadOnlyPart, public Okular::DocumentObserver, publi
bool m_wasPresentationOpen; bool m_wasPresentationOpen;
int m_dirtyToolboxIndex; int m_dirtyToolboxIndex;
bool m_wasSidebarVisible; bool m_wasSidebarVisible;
bool m_wasSidebarCollapsed;
bool m_fileWasRemoved; bool m_fileWasRemoved;
Rotation m_dirtyPageRotation; Rotation m_dirtyPageRotation;

View file

@ -469,12 +469,12 @@ Sidebar::Sidebar( QWidget *parent )
d->stack = new QStackedWidget( d->sideContainer ); d->stack = new QStackedWidget( d->sideContainer );
d->vlay->addWidget( d->stack ); d->vlay->addWidget( d->stack );
d->sideContainer->hide();
connect( d->list, SIGNAL(customContextMenuRequested(QPoint)), connect( d->list, SIGNAL(customContextMenuRequested(QPoint)),
this, SLOT(listContextMenu(QPoint)) ); this, SLOT(listContextMenu(QPoint)) );
connect( d->splitter, SIGNAL(splitterMoved(int,int)), this, SLOT(splitterMoved(int,int)) ); connect( d->splitter, SIGNAL(splitterMoved(int,int)), this, SLOT(splitterMoved(int,int)) );
setCollapsed( true );
setFocusProxy( d->list ); setFocusProxy( d->list );
} }
@ -592,18 +592,18 @@ void Sidebar::setSidebarVisibility( bool visible )
if ( visible != d->list->isHidden() ) if ( visible != d->list->isHidden() )
return; return;
static bool sideWasVisible = !d->sideContainer->isHidden(); static bool wasCollapsed = isCollapsed();
d->list->setHidden( !visible ); d->list->setHidden( !visible );
if ( visible ) if ( visible )
{ {
d->sideContainer->setHidden( !sideWasVisible ); setCollapsed( wasCollapsed );
sideWasVisible = true; wasCollapsed = false;
} }
else else
{ {
sideWasVisible = !d->sideContainer->isHidden(); wasCollapsed = isCollapsed();
d->sideContainer->setHidden( true ); setCollapsed( true );
} }
} }
@ -612,6 +612,16 @@ bool Sidebar::isSidebarVisible() const
return !d->list->isHidden(); return !d->list->isHidden();
} }
void Sidebar::setCollapsed( bool collapsed )
{
d->sideContainer->setHidden( collapsed );
}
bool Sidebar::isCollapsed() const
{
return d->sideContainer->isHidden();
}
void Sidebar::itemClicked( QListWidgetItem *item ) void Sidebar::itemClicked( QListWidgetItem *item )
{ {
if ( !item ) if ( !item )
@ -623,22 +633,22 @@ void Sidebar::itemClicked( QListWidgetItem *item )
if ( sbItem->widget() == d->stack->currentWidget() ) if ( sbItem->widget() == d->stack->currentWidget() )
{ {
if ( d->sideContainer->isVisible() ) if ( !isCollapsed() )
{ {
d->list->selectionModel()->clear(); d->list->selectionModel()->clear();
d->sideContainer->hide(); setCollapsed( true );
} }
else else
{ {
d->sideContainer->show(); setCollapsed( false );
d->list->show(); d->list->show();
} }
} }
else else
{ {
if ( d->sideContainer->isHidden() ) if ( isCollapsed() )
{ {
d->sideContainer->show(); setCollapsed( false );
d->list->show(); d->list->show();
} }
d->stack->setCurrentWidget( sbItem->widget() ); d->stack->setCurrentWidget( sbItem->widget() );

View file

@ -36,6 +36,9 @@ class Sidebar : public QWidget
void setSidebarVisibility( bool visible ); void setSidebarVisibility( bool visible );
bool isSidebarVisible() const; bool isSidebarVisible() const;
void setCollapsed( bool collapsed );
bool isCollapsed() const;
private slots: private slots:
void itemClicked( QListWidgetItem *item ); void itemClicked( QListWidgetItem *item );
void splitterMoved( int pos, int index ); void splitterMoved( int pos, int index );