[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    make_it_cool: kdeedu/kig/kig
From:       Dominique Devriese <devriese () kde ! org>
Date:       2003-02-16 18:21:14
[Download RAW message or body]

CVS commit by domi: 

fix the resizeEvent to not do a recenter of the screen.


  M +0 -1      kig.cpp   1.23.2.1
  M +30 -7     kig_view.cpp   1.36.2.3
  M +1 -0      kig_view.h   1.27.2.3


--- kdeedu/kig/kig/kig.cpp  #1.23:1.23.2.1
@@ -78,5 +78,4 @@ Kig::Kig()
       return;
   }
-  resize (640,480);
 
   // we have drag'n'drop

--- kdeedu/kig/kig/kig_view.cpp  #1.36.2.2:1.36.2.3
@@ -161,10 +161,29 @@ void KigWidget::updateEntireWidget()
 }
 
-void KigWidget::resizeEvent(QResizeEvent*)
+void KigWidget::resizeEvent( QResizeEvent* e )
 {
-  recenterScreen();
-  curPix.resize(size());
-  stillPix.resize( size() );
+  QSize osize = e->oldSize();
+  QSize nsize = e->size();
+  Rect orect = msi.shownRect();
+
+  curPix.resize( nsize );
+  stillPix.resize( nsize );
   msi.setViewRect( rect() );
+
+  Rect nrect( 0, 0,
+              orect.width() * nsize.width() / osize.width(),
+              orect.height() * nsize.height() / osize.height() );
+  nrect = matchScreenShape( nrect );
+  nrect.setTopLeft( orect.topLeft() );
+  msi.setShownRect( nrect );
+
+  // horrible hack...  We need to somehow differentiate between the
+  // resizeEvents we get on startup, and the ones generated by the
+  // user.  The first require recentering the screen, the latter
+  // don't..
+  if ( nsize.width() / osize.width() > 4 ) recenterScreen();
+
+  updateScrollBars();
+
   redrawScreen();
 }
@@ -185,5 +204,5 @@ void KigWidget::updateCurPix( const std:
 void KigWidget::recenterScreen()
 {
-  msi.setShownRect( matchScreenShape(mdocument->suggestedRect()) );
+  msi.setShownRect( matchScreenShape( mdocument->suggestedRect() ) );
   updateScrollBars();
 }
@@ -315,7 +334,6 @@ KigView::KigView( KigDocument* doc,
   setupActions();
 
+  resize( sizeHint() );
   mrealwidget->recenterScreen();
-  // don't draw anything here, since the window size will still be wrong..
-  //   mrealwidget->redrawScreen( false );
 }
 
@@ -448,3 +466,8 @@ const KigDocument& KigWidget::document()
 {
   return *mdocument;
+}
+
+QSize KigWidget::sizeHint() const
+{
+  return QSize( 600, 400 );
 }

--- kdeedu/kig/kig/kig_view.h  #1.27.2.2:1.27.2.3
@@ -61,4 +61,5 @@ class KigWidget : public QWidget
   void paintEvent (QPaintEvent* e);
   void resizeEvent(QResizeEvent*);
+  QSize sizeHint() const;
 
   // this is called to match a rect's dimensions to the dimensions of


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic