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

List:       kde-commits
Subject:    playground/office/kraft/src
From:       Klaas Freitag <klaas () freisturz ! de>
Date:       2012-09-12 19:08:37
Message-ID: 20120912190837.57000AC7CA () svn ! kde ! org
[Download RAW message or body]

SVN commit 1316023 by freitag:

Fix focussing of a new item after it was added.


 M  +24 -12    kraftview.cpp  
 M  +1 -1      kraftview.h  


--- trunk/playground/office/kraft/src/kraftview.cpp #1316022:1316023
@@ -31,6 +31,7 @@
 #include <QResizeEvent>
 #include <QPalette>
 #include <QTimer>
+#include <QScrollBar>
 
 #include <kdebug.h>
 #include <kdialog.h>
@@ -93,17 +94,26 @@
   myWidget->setAutoFillBackground(false);
   layout = new QVBoxLayout;
   layout->setAlignment(Qt::AlignTop);
-  layout->setSizeConstraint( QLayout::QLayout::SetMinAndMaxSize );
-  layout->setMargin( 0 );
+  layout->setSizeConstraint( QLayout::SetMinAndMaxSize );
+  layout->setContentsMargins( 0,0,0,0 );
+  layout->setSpacing(0);
   myWidget->setLayout(layout);
   setWidget(myWidget);
   setWidgetResizable(true);
-
+  myWidget->resize(0,0);
+  myWidget->setMinimumHeight(0);
+  myWidget->setMaximumHeight(0);
+  myWidget->setContentsMargins(0, 0, 0, 0);
 }
 
 void KraftViewScroll::addChild( QWidget *child, int index )
 {
+    int y1 = myWidget->height();
   layout->insertWidget(index, child);
+    int y2 = y1+child->height();
+    myWidget->resize( child->width(), y2);
+    myWidget->setMinimumHeight(y2);
+    myWidget->setMaximumHeight(y2);
 }
 
 void KraftViewScroll::removeChild( PositionViewWidget *child )
@@ -399,7 +409,7 @@
   if ( list.count() == 0 ) {
     // the doc has no positions yet. Let's show a help page
     if ( ! mHelpLabel ) {
-      mHelpLabel = new QLabel(0);
+      mHelpLabel = new QLabel(this);
       mHelpLabel->setMargin( KDialog::marginHint() );
       mHelpLabel->setText( i18n( "<qt><h2>The Document Items List is still empty, \
but Items "  "can be added now.</h2>"
@@ -1056,7 +1066,7 @@
   widget->slotModified();
   widget->slotAllowIndividualTax( currentTaxSetting() == \
DocPositionBase::TaxIndividual );  
-  slotFocusPosition( widget, newpos );
+  slotFocusItem( widget, newpos );
   refreshPostCard();
 }
 
@@ -1110,7 +1120,7 @@
   PositionViewWidget *widget = createPositionViewWidget( dp, newpos );
   kDebug() << "PositionViewWiget doc position is: " << widget->position() << endl;
   widget->slotModified();
-  slotFocusPosition( widget, newpos );
+  slotFocusItem( widget, newpos );
   refreshPostCard();
 
 }
@@ -1412,30 +1422,32 @@
 
     // Save newly created templates
     if ( mNewTemplates.count() > 0 ) {
+      bool reload = false;
       CatalogTemplate *ct = 0;
       CatalogTemplateListIterator it( mNewTemplates );
       while( it.hasNext()) {
         ct = it.next();
+        if( ct->chapterId() != 0 ) reload = true; // only reload for chapters \
different from the incoming.  ct->save();
       }
       mNewTemplates.clear();
       // reload the entire katalog
+      if( reload ) {
       Katalog *defaultKat = KatalogMan::self()->defaultTemplateCatalog();
       KatalogMan::self()->notifyKatalogChange( defaultKat , dbID() );
     }
 }
+}
 
-void KraftView::slotFocusPosition( PositionViewWidget *posWidget, int pos )
+void KraftView::slotFocusItem( PositionViewWidget *posWidget, int pos )
 {
   if( posWidget && pos > 0) {
-    int w = posWidget->height();
-    kDebug() << "Focussing on widget " << posWidget << " on pos " << pos << " with \
                heigt " << w;
-    int y = (pos)*w;
-    kDebug() << "Focus on y-koord " << y << " on canvas height " << \
                (m_positionScroll->widget())->height();
-    m_positionScroll->ensureVisible( 2, y, 0, 0 );
+    int y = (1+pos)*posWidget->height();
+    m_positionScroll->ensureVisible(0, y);
   } else {
     m_positionScroll->ensureVisible( 0, 0 );
   }
+  // setting Focus within the item.
   if( posWidget ) {
     if( posWidget->m_teFloskel->toPlainText().isEmpty() ) {
       posWidget->m_teFloskel->setFocus();
--- trunk/playground/office/kraft/src/kraftview.h #1316022:1316023
@@ -126,7 +126,7 @@
 
   void slotAddExtraPosition();
   void slotImportItems();
-  void slotFocusPosition( PositionViewWidget*,  int );
+  void slotFocusItem( PositionViewWidget*,  int );
   void slotNewHeaderText( const QString& );
   void slotNewFooterText( const QString&  );
   void slotSwitchToPage( int );


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

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