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

List:       kde-commits
Subject:    koffice/lib/kofficeui
From:       Thomas Zander <zander () kde ! org>
Date:       2005-12-30 18:25:41
Message-ID: 1135967141.256469.13624.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 492667 by zander:

Fix bug that changing units changed the values also (was only visible in kspread)


 M  +13 -5     KoPageLayoutSize.cpp  
 M  +2 -1      KoPageLayoutSize.h  


--- trunk/koffice/lib/kofficeui/KoPageLayoutSize.cpp #492666:492667
@@ -25,6 +25,7 @@
 #include <klocale.h>
 #include <kiconloader.h>
 #include <kmessagebox.h>
+#include <kdebug.h>
 
 #include <qlabel.h>
 #include <qlayout.h>
@@ -34,7 +35,7 @@
 #include <qhbuttongroup.h>
 
 KoPageLayoutSize::KoPageLayoutSize(QWidget *parent, const KoPageLayout& layout, \
                KoUnit::Unit unit,const KoColumns& columns,  bool unitChooser, bool \
                enableBorders)
-    : QWidget(parent) {
+    : QWidget(parent), m_blockSignals(false) {
     m_layout = layout;
     m_unit = unit;
 
@@ -43,14 +44,14 @@
         // ------------- unit _______________
         QWidget* unitFrame = new QWidget( this );
         grid1->addWidget( unitFrame, 0, 0, Qt::AlignLeft );
-        QBoxLayout* unitLayout = new QHBoxLayout( unitFrame, KDialog::marginHint(), \
KDialog::spacingHint() ); +        QBoxLayout* unitLayout = new QHBoxLayout( \
unitFrame, 0, KDialog::spacingHint() );  
         // label unit
         QLabel *lpgUnit = new QLabel( i18n( "Unit:" ), unitFrame );
         unitLayout->addWidget( lpgUnit, 0, Qt::AlignRight | Qt::AlignVCenter );
 
         // combo unit
-        cpgUnit = new QComboBox( false, unitFrame, "cpgUnit" );
+        QComboBox *cpgUnit = new QComboBox( false, unitFrame, "cpgUnit" );
         lpgUnit->setBuddy( cpgUnit );
         cpgUnit->insertStringList( KoUnit::listOfUnitName() );
         cpgUnit->setCurrentItem( unit );
@@ -205,8 +206,8 @@
 
 void KoPageLayoutSize::setUnit( KoUnit::Unit unit ) {
     m_unit = unit;
+    m_blockSignals = true; // due to non-atomic changes the propertyChange emits \
should be blocked  
-    //setUnit always befor changeValue
     epgWidth->setUnit( m_unit );
     epgWidth->setMinMaxStep( 0, KoUnit::fromUserValue( 9999, m_unit ), \
KoUnit::fromUserValue( 0.01, m_unit ) );  epgWidth->changeValue( m_layout.ptWidth );
@@ -232,7 +233,8 @@
     ebrBottom->setUnit( m_unit );
     ebrBottom->changeValue( m_layout.ptBottom );
     ebrBottom->setMinMaxStep( 0, m_layout.ptHeight, dStep );
-    emit propertyChange(m_layout);
+
+    m_blockSignals = false;
 }
 
 void KoPageLayoutSize::setUnitInt( int unit ) {
@@ -290,31 +292,37 @@
 }
 
 void KoPageLayoutSize::widthChanged(double width) {
+    if(m_blockSignals) return;
     m_layout.ptWidth = width;
     updatePreview();
     emit propertyChange(m_layout);
 }
 void KoPageLayoutSize::heightChanged(double height) {
+    if(m_blockSignals) return;
     m_layout.ptHeight = height;
     updatePreview( );
     emit propertyChange(m_layout);
 }
 void KoPageLayoutSize::leftChanged( double left ) {
+    if(m_blockSignals) return;
     m_layout.ptLeft = left;
     updatePreview();
     emit propertyChange(m_layout);
 }
 void KoPageLayoutSize::rightChanged(double right) {
+    if(m_blockSignals) return;
     m_layout.ptRight = right;
     updatePreview();
     emit propertyChange(m_layout);
 }
 void KoPageLayoutSize::topChanged(double top) {
+    if(m_blockSignals) return;
     m_layout.ptTop = top;
     updatePreview();
     emit propertyChange(m_layout);
 }
 void KoPageLayoutSize::bottomChanged(double bottom) {
+    if(m_blockSignals) return;
     m_layout.ptBottom = bottom;
     updatePreview();
     emit propertyChange(m_layout);
--- trunk/koffice/lib/kofficeui/KoPageLayoutSize.h #492666:492667
@@ -82,7 +82,6 @@
     void propertyChange(KoPageLayout &layout);
 
 protected:
-    QComboBox *cpgUnit;
     QComboBox *cpgFormat;
     KoUnitDoubleSpinBox *epgWidth;
     KoUnitDoubleSpinBox *epgHeight;
@@ -110,6 +109,8 @@
 
     KoUnit::Unit m_unit;
     KoPageLayout m_layout;
+
+    bool m_blockSignals;
 };
 
 #endif


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

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