avoid the jumping of the pageview to the next (hidden) focus form widget when hiding them

svn path=/trunk/playground/graphics/okular/; revision=637148
remotes/origin/KDE/4.0
Pino Toscano 19 years ago
parent 1ea8792482
commit a5f6538d43
  1. 8
      ui/formwidgets.cpp
  2. 2
      ui/formwidgets.h
  3. 5
      ui/pageview.cpp
  4. 6
      ui/pageviewutils.cpp
  5. 2
      ui/pageviewutils.h

@ -80,12 +80,16 @@ void FormWidgetIface::moveTo( int x, int y )
m_widget->move( x, y );
}
void FormWidgetIface::setVisibility( bool visible )
bool FormWidgetIface::setVisibility( bool visible )
{
if ( !m_ff->isVisible() )
return;
return false;
bool hadfocus = m_widget->hasFocus();
if ( hadfocus )
m_widget->clearFocus();
m_widget->setVisible( visible );
return hadfocus;
}

@ -44,7 +44,7 @@ class FormWidgetIface
Okular::NormalizedRect rect() const;
void setWidthHeight( int w, int h );
void moveTo( int x, int y );
void setVisibility( bool visible );
bool setVisibility( bool visible );
private:
QWidget * m_widget;

@ -2392,11 +2392,14 @@ void PageView::center(int cx, int cy)
void PageView::toggleFormWidgets( bool on )
{
bool somehadfocus = false;
QVector< PageViewItem * >::const_iterator dIt = d->items.begin(), dEnd = d->items.end();
for ( ; dIt != dEnd; ++dIt )
{
(*dIt)->setFormWidgetsVisible( on );
somehadfocus = somehadfocus || (*dIt)->setFormWidgetsVisible( on );
}
if ( somehadfocus )
setFocus();
d->m_formsVisible = on;
if ( d->m_formsVisible )
{

@ -119,11 +119,13 @@ void PageViewItem::invalidate()
m_geometry.setRect( 0, 0, 0, 0 );
}
void PageViewItem::setFormWidgetsVisible( bool visible )
bool PageViewItem::setFormWidgetsVisible( bool visible )
{
bool somehadfocus = false;
QHash<QString, FormWidgetIface*>::iterator it = m_formWidgets.begin(), itEnd = m_formWidgets.end();
for ( ; it != itEnd; ++it )
(*it)->setVisibility( visible );
somehadfocus = somehadfocus || (*it)->setVisibility( visible );
return somehadfocus;
}
/*********************/

@ -50,7 +50,7 @@ class PageViewItem
void setWHZ( int w, int h, double zoom );
void moveTo( int x, int y );
void invalidate();
void setFormWidgetsVisible( bool visible );
bool setFormWidgetsVisible( bool visible );
private:
const Okular::Page * m_page;

Loading…
Cancel
Save