View Issue Details

IDProjectCategoryView StatusLast Update
0010571ScribusUsabilitypublic2012-04-29 10:53
ReporterThaddeus Assigned Tofschmid  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.4.0 
Fixed in Version1.5.0svn 
Summary0010571: Some Edit Boxes trigger an action on every user keystroke
DescriptionSuch is the case of:
Layer Palette -> Opacity
Properties Palette -> Image -> Page Number

Specially annoying and slow when doing repetitive adjustments. In the image page number, when selecting a high PDF page, such as 123, the Frame would show the page 1, then the 12 and finally 123, running GS at least 3 times.

The edit box should not trigger a reaction until the user quits the edit box or perhaps a delay elapses, just like the behaviour of, for example, Properties Palette -> X-Pos.
TagsNo tags attached.
Patch

Activities

Chelen

2012-03-22 00:26

reporter  

validupdate.diff (1,524 bytes)   
Index: scribus/ui/layers.cpp
===================================================================
--- scribus/ui/layers.cpp	(révision 17391)
+++ scribus/ui/layers.cpp	(copie de travail)
@@ -148,7 +148,7 @@
 	connect(raiseLayerButton, SIGNAL(clicked()), this, SLOT(upLayer()));
 	connect(lowerLayerButton, SIGNAL(clicked()), this, SLOT(downLayer()));
 	connect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 	connect(header, SIGNAL(sectionClicked(int)), this, SLOT(toggleAllfromHeader(int)));
 }
Index: scribus/ui/propertiespalette_image.cpp
===================================================================
--- scribus/ui/propertiespalette_image.cpp	(révision 17391)
+++ scribus/ui/propertiespalette_image.cpp	(copie de travail)
@@ -88,7 +88,7 @@
 
 	languageChange();
 
-	connect(imagePageNumber    , SIGNAL(valueChanged(int))   , this, SLOT(handleImagePageNumber()));
+	connect(imagePageNumber    , SIGNAL(editingFinished())   , this, SLOT(handleImagePageNumber()));
 	connect(imageXScaleSpinBox , SIGNAL(valueChanged(double)), this, SLOT(handleXScale()));
 	connect(imageYScaleSpinBox , SIGNAL(valueChanged(double)), this, SLOT(handleYScale()));
 	connect(imageXOffsetSpinBox, SIGNAL(valueChanged(double)), this, SLOT(handleLocalXY()));
validupdate.diff (1,524 bytes)   

Chelen

2012-03-22 00:31

reporter   ~0027843

I add juste a little diff to do that for the two cases you give but there are a lot of other box which update when we change the value and not when we valid this value. Box which have to change only when the value is validate have to be determined I think. Sometime, it easier to change the value of a percentage and seeing how it look like at the same time.

Chelen

2012-03-22 01:07

reporter  

validupdaterevised.diff (5,510 bytes)   
Index: ../scribus/ui/layers.cpp
===================================================================
--- ../scribus/ui/layers.cpp	(révision 17391)
+++ ../scribus/ui/layers.cpp	(copie de travail)
@@ -148,7 +148,7 @@
 	connect(raiseLayerButton, SIGNAL(clicked()), this, SLOT(upLayer()));
 	connect(lowerLayerButton, SIGNAL(clicked()), this, SLOT(downLayer()));
 	connect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 	connect(header, SIGNAL(sectionClicked(int)), this, SLOT(toggleAllfromHeader(int)));
 }
@@ -156,7 +156,7 @@
 void LayerPalette::ClearInhalt()
 {
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	disconnect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	Table->clearContents();
@@ -172,7 +172,7 @@
 {
 	m_Doc=doc;
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	disconnect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	if (!m_Doc)
@@ -194,14 +194,14 @@
 
 	connect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	connect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
 void LayerPalette::rebuildList()
 {
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	disconnect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	QString tmp;
@@ -253,7 +253,7 @@
 	}
 	connect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	connect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
@@ -501,7 +501,7 @@
 void LayerPalette::markActiveLayer(int layerID)
 {
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	int layerToMark=layerID;
 	if (layerID==-1)
@@ -522,7 +522,7 @@
 		lowerLayerButton->setEnabled(false);
 	}
 	connect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
@@ -534,7 +534,7 @@
 		return;
 	}
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	int layerID=m_Doc->layerIDFromLevel(m_Doc->layerCount()-1-row);
 	bool found=m_Doc->setActiveLayer(layerID);
 	if (found)
@@ -554,7 +554,7 @@
 			lowerLayerButton->setEnabled(false);
 		}
 	}
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(editingFinished()), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
Index: ../scribus/ui/propertiespalette_image.cpp
===================================================================
--- ../scribus/ui/propertiespalette_image.cpp	(révision 17391)
+++ ../scribus/ui/propertiespalette_image.cpp	(copie de travail)
@@ -88,7 +88,7 @@
 
 	languageChange();
 
-	connect(imagePageNumber    , SIGNAL(valueChanged(int))   , this, SLOT(handleImagePageNumber()));
+	connect(imagePageNumber    , SIGNAL(editingFinished())   , this, SLOT(handleImagePageNumber()));
 	connect(imageXScaleSpinBox , SIGNAL(valueChanged(double)), this, SLOT(handleXScale()));
 	connect(imageYScaleSpinBox , SIGNAL(valueChanged(double)), this, SLOT(handleYScale()));
 	connect(imageXOffsetSpinBox, SIGNAL(valueChanged(double)), this, SLOT(handleLocalXY()));
validupdaterevised.diff (5,510 bytes)   

ale

2012-03-22 08:14

manager   ~0027845

i've tried to play with the x and y positions in the properties palette.

personally, i have the feeling that it behaves well, and it's correctly selecting the value after pressing the return key.

i don't think that i would ever want to see the frame grow while i type 123.55mm in the frame width.

playing with the opacity values gave me the wish to have a similar behavior there, too. i think that i agree with thaddeus, here :-)

personally, i would suggest that no field should automatically apply the changes except those cases where it is really really useful (sadly, i have no such case in mind...). we should define which those exceptions are (if there are any) and modify all other cases to apply the changes only on request.

ah, and if you want to change a value step by step (and check how it looks like), well, just use the arrow keys (the improvement here would be to accept the shift and ctrl modifierf for 1/10 and 10x steps!)


finally, how can we get the user to discover that a/ he can set the values in the field (and not by dragging on canvas) b/ he can set the unit c/ he can do calculations d/ use arrow keys to change the values.

i guess that most people, that have discovered the properties palette are
- using the small arrow buttons (i feel the pain when the have to click 20 times on it!) or
- clicking in the field, manually selecting all the content of the field, write the new value, default unit included and finally click on the canvas to get the value applied...

but this is another topic :-)


ciao
a.l.e


p.s.: it was funny to notice that some of the most loud promoters of the story editor didn't even discover that there was a properties palette... there is really some work to be done to improve the "discoverability" in scribus!

Chelen

2012-03-24 15:03

reporter   ~0027856

Normally, I have changed every spinBox to made them work like x and y positions in the properties palette.
As you said, value change step by step if we use arrows or press key so we don't really need to have an exception. Especially because value 6 when you want 65 don't mean anything.
About the improvement to accept the shift and ctrl modifier, it already exist with wheel if you want to test. In fact it also exist with key and arrows but it is a comment. As I don't know why, I haven't touch that.

About usability, even if it is another topic, I totally agree. Even if I used Scribus, I discover a lot of functionality these last few day. I knew neither that there are different step if you press alt or ctrl using the wheel, nor that we can set the unit in the spinbox, nor that we can do calculation.
Like in many software, even if it is useful, if you don't really need a functionality, you will not search it. There are certainly something to do to improve this in scribus.

Chelen

Chelen

2012-03-24 15:03

reporter  

updatevalue.diff (97,977 bytes)   
Index: scribus/ui/movepage.cpp
===================================================================
--- scribus/ui/movepage.cpp	(révision 17391)
+++ scribus/ui/movepage.cpp	(copie de travail)
@@ -8,12 +8,12 @@
 #include "movepage.h"
 #include <QPixmap>
 #include <QLabel>
-#include <QSpinBox>
 #include <QComboBox>
 #include <QPushButton>
 
 #include "commonstrings.h"
 #include "util_icon.h"
+#include "ui/scrspinbox.h"
 
 /*
  *  Constructs a MovePages which is a child of 'parent', with the 
@@ -35,7 +35,8 @@
 	fromToLayout->setSpacing( 5 );
 	fromToLayout->setMargin( 5 );
 	moveLabel = new QLabel( (move ? tr("Move Page(s)") : tr("Copy Page")) + ":", this );
-	fromPageData = new QSpinBox(this);
+	fromPageData = new ScrSpinBox(this);
+	fromPageData->setDecimals(0);
 	fromPageData->setMinimum(1);
 	fromPageData->setMaximum(maxPages);
 	fromPageData->setValue( currentPage );
@@ -46,7 +47,8 @@
 	if (move)
 	{
 		toLabel = new QLabel( tr("To:"), this );
-		toPageData = new QSpinBox( this );
+		toPageData = new ScrSpinBox( this );
+		toPageData->setDecimals(0);
 		toPageData->setMinimum(1);
 		toPageData->setMaximum(maxPages);
 		toPageData->setValue( currentPage );
@@ -56,7 +58,8 @@
 	else
 	{
 		numberOfCopiesLabel = new QLabel( tr("Number of Copies:"), this );
-		numberOfCopiesData = new QSpinBox(this );
+		numberOfCopiesData = new ScrSpinBox(this );
+		numberOfCopiesData->setDecimals(0);
 		numberOfCopiesData->setMinimum(1);
 		numberOfCopiesData->setMaximum(999);
 		++currentRow;
@@ -69,8 +72,9 @@
 	mvWhereData->addItem( tr("After Page"));
 	mvWhereData->addItem( tr("At End"));
 	mvWhereData->setCurrentIndex(2);
-	mvWherePageData = new QSpinBox( this );
+	mvWherePageData = new ScrSpinBox( this );
 	mvWherePageData->setMinimum(1);
+	mvWherePageData->setDecimals(0);
 	mvWherePageData->setMaximum(maxPages);
 	mvWherePageData->setValue( currentPage );
 	mvWherePageData->setDisabled( true );
@@ -95,9 +99,9 @@
 
 	// signals and slots connections
 	if (move)
-		connect( toPageData, SIGNAL( editingFinished() ), this, SLOT( toChanged() ) );
+		connect( toPageData, SIGNAL( valueChanged(double) ), this, SLOT( toChanged() ) );
 	connect( mvWhereData, SIGNAL( activated(int) ), this, SLOT( mvWherePageDataDisable(int) ) );
-	connect( fromPageData, SIGNAL( editingFinished() ), this, SLOT( fromChanged() ) );
+	connect( fromPageData, SIGNAL( valueChanged(double) ), this, SLOT( fromChanged() ) );
 	connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
 	connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
 }
@@ -106,7 +110,7 @@
 {
 	if (move)
 	{
-		int pageNumber=fromPageData->value();
+		int pageNumber=static_cast<int>(fromPageData->value());
 		if (pageNumber > toPageData->value())
 			toPageData->setValue(pageNumber);
 		if ((pageNumber == 1) && (toPageData->value() == toPageData->maximum()))
@@ -116,7 +120,7 @@
 
 void MovePages::toChanged()
 {
-	int pageNumber=toPageData->value();
+	int pageNumber=static_cast<int>(toPageData->value());
 	if (pageNumber < fromPageData->value())
 		fromPageData->setValue(pageNumber);
 	if ((fromPageData->value() == 1) && (pageNumber == toPageData->maximum()))
@@ -131,12 +135,12 @@
 
 const int MovePages::getFromPage()
 {
-	return fromPageData->value();
+	return static_cast<int>(fromPageData->value());
 }
 
 const int MovePages::getToPage()
 {
-	return toPageData->value();
+	return static_cast<int>(toPageData->value());
 }
 
 const int MovePages::getWhere()
@@ -146,10 +150,10 @@
 
 const int MovePages::getWherePage()
 {
-	return mvWherePageData->value();
+	return static_cast<int>(mvWherePageData->value());
 }
 
 const int MovePages::getCopyCount()
 {
-	return numberOfCopiesData->value();
+	return static_cast<int>(numberOfCopiesData->value());
 }
Index: scribus/ui/movepage.h
===================================================================
--- scribus/ui/movepage.h	(révision 17391)
+++ scribus/ui/movepage.h	(copie de travail)
@@ -15,7 +15,7 @@
 class QComboBox;
 class QLabel;
 class QPushButton;
-class QSpinBox;
+class ScrSpinBox;
 
 #include "scribusapi.h"
 
@@ -38,10 +38,10 @@
 	QLabel* moveLabel;
 	QLabel* toLabel;
 	QLabel* numberOfCopiesLabel;
-	QSpinBox* fromPageData;
-	QSpinBox* toPageData;
-	QSpinBox* numberOfCopiesData;
-	QSpinBox* mvWherePageData;
+	ScrSpinBox* fromPageData;
+	ScrSpinBox* toPageData;
+	ScrSpinBox* numberOfCopiesData;
+	ScrSpinBox* mvWherePageData;
 	QComboBox* mvWhereData;
 	QPushButton* okButton;
 	QPushButton* cancelButton;
Index: scribus/ui/osgeditor.cpp
===================================================================
--- scribus/ui/osgeditor.cpp	(révision 17391)
+++ scribus/ui/osgeditor.cpp	(copie de travail)
@@ -77,6 +77,7 @@
 	buttonFCcolor->setIcon(pm);
 	buttonFCcolor->setText( QString::null );
 	transpSpin->setValue(qRound(currentView.addedTransparency * 100));
+	transpSpin->setDecimals(0);
 	rootnode = new osg::Group;
 	decorator = new osg::Group;
 	if (currItem->fillColor() != CommonStrings::None)
@@ -116,7 +117,7 @@
 		connect(buttonRemoveView, SIGNAL(clicked()), this, SLOT(removeView()));
 		connect(buttonACcolor, SIGNAL(clicked()), this, SLOT(changeACcolor()));
 		connect(buttonFCcolor, SIGNAL(clicked()), this, SLOT(changeFCcolor()));
-		connect(transpSpin, SIGNAL(valueChanged(int)), this, SLOT(changeTransparency(int)));
+		connect(transpSpin, SIGNAL(valueChanged(double)), this, SLOT(changeTransparency(double)));
 		groupBox_5->setEnabled(true);
 		buttonRemoveView->setEnabled(true);
 		buttonAddView->setEnabled(true);
@@ -192,7 +193,7 @@
 	disconnect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
 	disconnect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
 	disconnect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
-	disconnect(transpSpin, SIGNAL(valueChanged(int)), this, SLOT(changeTransparency(int)));
+	disconnect(transpSpin, SIGNAL(valueChanged(double)), this, SLOT(changeTransparency(double)));
 	viewMap[currentViewName] = currentView;
 	currentView = viewMap[viewName];
 	currentViewName = viewName;
@@ -221,7 +222,7 @@
 	connect(fovAngle, SIGNAL(valueChanged(double)), this, SLOT(setCameraValues()));
 	connect(renderStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeRenderMode(int)));
 	connect(lightStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLightMode(int)));
-	connect(transpSpin, SIGNAL(valueChanged(int)), this, SLOT(changeTransparency(int)));
+	connect(transpSpin, SIGNAL(valueChanged(double)), this, SLOT(changeTransparency(double)));
 }
 
 void OSGEditorDialog::addView()
@@ -536,9 +537,9 @@
 	}
 }
 
-void OSGEditorDialog::changeTransparency(int value)
+void OSGEditorDialog::changeTransparency(double value)
 {
-	currentView.addedTransparency = static_cast<double>(value) / 100.0;
+	currentView.addedTransparency = value / 100.0;
 	changeRenderMode(static_cast<int>(currentView.rendermode));
 }
 
@@ -622,7 +623,7 @@
 		disconnect(buttonRemoveView, SIGNAL(clicked()), this, SLOT(removeView()));
 		disconnect(buttonACcolor, SIGNAL(clicked()), this, SLOT(changeACcolor()));
 		disconnect(buttonFCcolor, SIGNAL(clicked()), this, SLOT(changeFCcolor()));
-		disconnect(transpSpin, SIGNAL(valueChanged(int)), this, SLOT(changeTransparency(int)));
+		disconnect(transpSpin, SIGNAL(valueChanged(double)), this, SLOT(changeTransparency(double)));
 	}
 	if (!fileName.isEmpty())
 	{
@@ -651,7 +652,7 @@
 			connect(buttonRemoveView, SIGNAL(clicked()), this, SLOT(removeView()));
 			connect(buttonACcolor, SIGNAL(clicked()), this, SLOT(changeACcolor()));
 			connect(buttonFCcolor, SIGNAL(clicked()), this, SLOT(changeFCcolor()));
-			connect(transpSpin, SIGNAL(valueChanged(int)), this, SLOT(changeTransparency(int)));
+			connect(transpSpin, SIGNAL(valueChanged(double)), this, SLOT(changeTransparency(double)));
 		}
 		dirs->set("models", fileName.left(fileName.lastIndexOf("/")));
 	}
Index: scribus/ui/osgeditor.h
===================================================================
--- scribus/ui/osgeditor.h	(révision 17391)
+++ scribus/ui/osgeditor.h	(copie de travail)
@@ -56,7 +56,7 @@
 		void changeRenderMode(int mode);
 		void changeACcolor();
 		void changeFCcolor();
-		void changeTransparency(int value);
+		void changeTransparency(double value);
 		void changeLightMode(int mode);
 		void reportCamera();
 		void openFile();
Index: scribus/ui/osgeditor.ui
===================================================================
--- scribus/ui/osgeditor.ui	(révision 17391)
+++ scribus/ui/osgeditor.ui	(copie de travail)
@@ -345,7 +345,7 @@
                 </widget>
                </item>
                <item row="2" column="1">
-                <widget class="QSpinBox" name="transpSpin">
+                <widget class="ScrSpinBox" name="transpSpin">
                  <property name="enabled">
                   <bool>false</bool>
                  </property>
Index: scribus/ui/polygonwidgetbase.ui
===================================================================
--- scribus/ui/polygonwidgetbase.ui	(révision 17391)
+++ scribus/ui/polygonwidgetbase.ui	(copie de travail)
@@ -38,7 +38,7 @@
         </widget>
        </item>
        <item row="0" column="1">
-        <widget class="QSpinBox" name="cornersSpinBox">
+        <widget class="ScrSpinBox" name="cornersSpinBox">
          <property name="toolTip">
           <string>Number of corners for polygons</string>
          </property>
@@ -61,7 +61,7 @@
         </widget>
        </item>
        <item row="1" column="1">
-        <widget class="QSpinBox" name="rotationSpinBox">
+        <widget class="ScrSpinBox" name="rotationSpinBox">
          <property name="toolTip">
           <string>Degrees of rotation for polygons</string>
          </property>
@@ -100,7 +100,7 @@
         </widget>
        </item>
        <item row="3" column="1">
-        <widget class="QSpinBox" name="innerRotationspinBox">
+        <widget class="ScrSpinBox" name="innerRotationspinBox">
          <property name="minimum">
           <number>-180</number>
          </property>
@@ -150,7 +150,7 @@
          </widget>
         </item>
         <item row="0" column="1">
-         <widget class="QSpinBox" name="factorSpinBox">
+         <widget class="ScrSpinBox" name="factorSpinBox">
           <property name="toolTip">
            <string>A negative value will make the polygon concave (or star shaped), a positive value will make it convex</string>
           </property>
@@ -195,7 +195,7 @@
          </widget>
         </item>
         <item row="2" column="1">
-         <widget class="QSpinBox" name="curvatureSpinBox">
+         <widget class="ScrSpinBox" name="curvatureSpinBox">
           <property name="suffix">
            <string> %</string>
           </property>
@@ -225,7 +225,7 @@
          </widget>
         </item>
         <item row="4" column="1">
-         <widget class="QSpinBox" name="OuterCurvatureSpinBox">
+         <widget class="ScrSpinBox" name="OuterCurvatureSpinBox">
           <property name="suffix">
            <string> %</string>
           </property>
@@ -317,6 +317,13 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QSpinBox</extends>
+   <header location="global">ui/scrspinbox.h</header>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>
Index: scribus/ui/polygonwidget.cpp
===================================================================
--- scribus/ui/polygonwidget.cpp	(révision 17391)
+++ scribus/ui/polygonwidget.cpp	(copie de travail)
@@ -24,6 +24,12 @@
 PolygonWidget::PolygonWidget(QWidget* parent) : QWidget( parent )
 {
 	setupUi(this);
+	factorSpinBox->setDecimals(0);
+	rotationSpinBox->setDecimals(0);
+	cornersSpinBox->setDecimals(0);
+	curvatureSpinBox->setDecimals(0);
+	innerRotationspinBox->setDecimals(0);
+	OuterCurvatureSpinBox->setDecimals(0);
 	editMode = false;
 }
 
@@ -43,41 +49,41 @@
 {
 	if (conn)
 	{
-		connect(factorSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setFactorSlider(int)));
-		connect(rotationSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRotationSlider(int)));
+		connect(factorSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setFactorSlider(double)));
+		connect(rotationSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setRotationSlider(double)));
 		connect(factorSlider, SIGNAL(valueChanged(int)), factorSpinBox, SLOT(setValue(int)));
 		connect(factorSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
 		connect(rotationSlider, SIGNAL(valueChanged(int)), rotationSpinBox, SLOT(setValue(int)));
 		connect(rotationSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
-		connect(cornersSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
+		connect(cornersSpinBox, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
 		connect(applyConvexGroupBox, SIGNAL(clicked()), this, SLOT(updatePreview()));
-		connect(curvatureSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setCurvatureSlider(int)));
+		connect(curvatureSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setCurvatureSlider(double)));
 		connect(curvatureSlider, SIGNAL(valueChanged(int)), curvatureSpinBox, SLOT(setValue(int)));
 		connect(curvatureSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
 		connect(innerRotationSlider, SIGNAL(valueChanged(int)), innerRotationspinBox, SLOT(setValue(int)));
 		connect(innerRotationSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
-		connect(innerRotationspinBox, SIGNAL(valueChanged(int)), this, SLOT(setInnerRotationSlider(int)));
-		connect(OuterCurvatureSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setOuterCurvatureSlider(int)));
+		connect(innerRotationspinBox, SIGNAL(valueChanged(double)), this, SLOT(setInnerRotationSlider(double)));
+		connect(OuterCurvatureSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setOuterCurvatureSlider(double)));
 		connect(OuterCurvatureSlider, SIGNAL(valueChanged(int)), OuterCurvatureSpinBox, SLOT(setValue(int)));
 		connect(OuterCurvatureSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
 	}
 	else
 	{
-		disconnect(factorSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setFactorSlider(int)));
-		disconnect(rotationSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setRotationSlider(int)));
+		disconnect(factorSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setFactorSlider(double)));
+		disconnect(rotationSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setRotationSlider(double)));
 		disconnect(factorSlider, SIGNAL(valueChanged(int)), factorSpinBox, SLOT(setValue(int)));
 		disconnect(factorSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
 		disconnect(rotationSlider, SIGNAL(valueChanged(int)), rotationSpinBox, SLOT(setValue(int)));
 		disconnect(rotationSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
-		disconnect(cornersSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
+		disconnect(cornersSpinBox, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
 		disconnect(applyConvexGroupBox, SIGNAL(clicked()), this, SLOT(updatePreview()));
-		disconnect(curvatureSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setCurvatureSlider(int)));
+		disconnect(curvatureSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setCurvatureSlider(double)));
 		disconnect(curvatureSlider, SIGNAL(valueChanged(int)), curvatureSpinBox, SLOT(setValue(int)));
 		disconnect(curvatureSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
 		disconnect(innerRotationSlider, SIGNAL(valueChanged(int)), innerRotationspinBox, SLOT(setValue(int)));
 		disconnect(innerRotationSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
-		disconnect(innerRotationspinBox, SIGNAL(valueChanged(int)), this, SLOT(setInnerRotationSlider(int)));
-		disconnect(OuterCurvatureSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setOuterCurvatureSlider(int)));
+		disconnect(innerRotationspinBox, SIGNAL(valueChanged(double)), this, SLOT(setInnerRotationSlider(double)));
+		disconnect(OuterCurvatureSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setOuterCurvatureSlider(double)));
 		disconnect(OuterCurvatureSlider, SIGNAL(valueChanged(int)), OuterCurvatureSpinBox, SLOT(setValue(int)));
 		disconnect(OuterCurvatureSlider, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
 	}
@@ -147,38 +153,38 @@
 	*polyOuterCurvature = OuterCurvatureSpinBox->value() / 100.0;
 }
 
-void PolygonWidget::setFactorSlider(int a)
+void PolygonWidget::setFactorSlider(double a)
 {
 	disconnect(factorSlider, SIGNAL(valueChanged(int)), factorSpinBox, SLOT(setValue(int)));
-	factorSlider->setValue(a);
+	factorSlider->setValue(static_cast<int>(a));
 	connect(factorSlider, SIGNAL(valueChanged(int)), factorSpinBox, SLOT(setValue(int)));
 }
 
-void PolygonWidget::setRotationSlider(int a)
+void PolygonWidget::setRotationSlider(double a)
 {
 	disconnect(rotationSlider, SIGNAL(valueChanged(int)), rotationSpinBox, SLOT(setValue(int)));
-	rotationSlider->setValue(a);
+	rotationSlider->setValue(static_cast<int>(a));
 	connect(rotationSlider, SIGNAL(valueChanged(int)), rotationSpinBox, SLOT(setValue(int)));
 }
 
-void PolygonWidget::setInnerRotationSlider(int a)
+void PolygonWidget::setInnerRotationSlider(double a)
 {
 	disconnect(innerRotationSlider, SIGNAL(valueChanged(int)), innerRotationspinBox, SLOT(setValue(int)));
-	innerRotationSlider->setValue(a);
+	innerRotationSlider->setValue(static_cast<int>(a));
 	connect(innerRotationSlider, SIGNAL(valueChanged(int)), innerRotationspinBox, SLOT(setValue(int)));
 }
 
-void PolygonWidget::setCurvatureSlider(int a)
+void PolygonWidget::setCurvatureSlider(double a)
 {
 	disconnect(curvatureSlider, SIGNAL(valueChanged(int)), curvatureSpinBox, SLOT(setValue(int)));
-	curvatureSlider->setValue(a);
+	curvatureSlider->setValue(static_cast<int>(a));
 	connect(curvatureSlider, SIGNAL(valueChanged(int)), curvatureSpinBox, SLOT(setValue(int)));
 }
 
-void PolygonWidget::setOuterCurvatureSlider(int a)
+void PolygonWidget::setOuterCurvatureSlider(double a)
 {
 	disconnect(OuterCurvatureSlider, SIGNAL(valueChanged(int)), OuterCurvatureSpinBox, SLOT(setValue(int)));
-	OuterCurvatureSlider->setValue(a);
+	OuterCurvatureSlider->setValue(static_cast<int>(a));
 	connect(OuterCurvatureSlider, SIGNAL(valueChanged(int)), OuterCurvatureSpinBox, SLOT(setValue(int)));
 }
 
Index: scribus/ui/polygonwidget.h
===================================================================
--- scribus/ui/polygonwidget.h	(révision 17391)
+++ scribus/ui/polygonwidget.h	(copie de travail)
@@ -26,11 +26,11 @@
 		void saveGuiToPrefs(struct ItemToolPrefs *prefsData);
 
 	protected slots:
-		void setFactorSlider(int a);
-		void setRotationSlider(int a);
-		void setInnerRotationSlider(int a);
-		void setCurvatureSlider(int a);
-		void setOuterCurvatureSlider(int a);
+		void setFactorSlider(double a);
+		void setRotationSlider(double a);
+		void setInnerRotationSlider(double a);
+		void setCurvatureSlider(double a);
+		void setOuterCurvatureSlider(double a);
 		void updatePreview();
 		double GetZeroFactor();
 		double GetMaxFactor();
Index: scribus/ui/preview.cpp
===================================================================
--- scribus/ui/preview.cpp	(révision 17391)
+++ scribus/ui/preview.cpp	(copie de travail)
@@ -215,9 +215,10 @@
 		Layout7->setMargin(0);
 		ThresLabel = new QLabel( tr("Threshold:"), devTitle);
 		Layout7->addWidget(ThresLabel);
-		CoverThresholdValue = new QSpinBox(devTitle);
+		CoverThresholdValue = new ScrSpinBox(devTitle);
 		CoverThresholdValue->setSuffix( tr(" %"));
 		CoverThresholdValue->setMaximum(600);
+		CoverThresholdValue->setDecimals(0);
 		CoverThresholdValue->setMinimum(0);
 		CoverThresholdValue->setSingleStep(10);
 		CoverThresholdValue->setSpecialValueText( tr("None"));
@@ -226,7 +227,7 @@
 			CoverThresholdValue->setEnabled(true);
 		else
 			CoverThresholdValue->setEnabled(false);
-		connect(CoverThresholdValue, SIGNAL(valueChanged(int)), this, SLOT(ToggleCMYK_Colour()));
+		connect(CoverThresholdValue, SIGNAL(valueChanged(double)), this, SLOT(ToggleCMYK_Colour()));
 		Layout7->addWidget(CoverThresholdValue);
 		Layout2->addLayout(Layout7);
 		connect(Table, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(doSpotTable(int)));
@@ -445,12 +446,13 @@
 
 void PPreview::ToggleCMYK()
 {
-	bool c = EnableCMYK->isChecked() ? true : false;
+	bool c = EnableCMYK->isChecked();
 	if (HaveTiffSep)
 	{
 		Table->setEnabled(c);
 		EnableInkCover->setEnabled(c);
-		CoverThresholdValue->setEnabled(c);
+		if(EnableInkCover->isChecked())
+			CoverThresholdValue->setEnabled(c);
 	}
 	else
 	{
Index: scribus/ui/preview.h
===================================================================
--- scribus/ui/preview.h	(révision 17391)
+++ scribus/ui/preview.h	(copie de travail)
@@ -19,7 +19,7 @@
 class QLabel;
 class QPushButton;
 class QComboBox;
-class QSpinBox;
+#include "ui/scrspinbox.h"
 #include "scribusapi.h"
 #include "scribusstructs.h"
 
@@ -86,7 +86,7 @@
 	QCheckBox* useGray;
 	QCheckBox* UseICC;
 	QCheckBox* EnableInkCover;
-	QSpinBox* CoverThresholdValue;
+	ScrSpinBox* CoverThresholdValue;
 	QLabel* ThresLabel;
 	QScrollArea* Anzeige;
 	QLabel* Anz;
Index: scribus/ui/propertiespalette_imagebase.ui
===================================================================
--- scribus/ui/propertiespalette_imagebase.ui	(révision 17391)
+++ scribus/ui/propertiespalette_imagebase.ui	(copie de travail)
@@ -81,7 +81,7 @@
       </widget>
      </item>
      <item row="1" column="1">
-      <widget class="QSpinBox" name="imagePageNumber">
+      <widget class="ScrSpinBox" name="imagePageNumber">
        <property name="specialValueText">
         <string>Auto</string>
        </property>
Index: scribus/ui/propertiespalette_image.cpp
===================================================================
--- scribus/ui/propertiespalette_image.cpp	(révision 17391)
+++ scribus/ui/propertiespalette_image.cpp	(copie de travail)
@@ -45,6 +45,7 @@
 	setSizePolicy( QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum));
 
 	imagePageNumber->setMinimum(0);
+	imagePageNumber->setDecimals(0);
 	imagePageNumber->setSpecialValueText(tr( "Auto" ));
 	imagePageNumberLabel->setBuddy(imagePageNumber);
 	installSniffer(imagePageNumber);
@@ -88,7 +89,7 @@
 
 	languageChange();
 
-	connect(imagePageNumber    , SIGNAL(valueChanged(int))   , this, SLOT(handleImagePageNumber()));
+	connect(imagePageNumber    , SIGNAL(valueChanged(double))   , this, SLOT(handleImagePageNumber()));
 	connect(imageXScaleSpinBox , SIGNAL(valueChanged(double)), this, SLOT(handleXScale()));
 	connect(imageYScaleSpinBox , SIGNAL(valueChanged(double)), this, SLOT(handleYScale()));
 	connect(imageXOffsetSpinBox, SIGNAL(valueChanged(double)), this, SLOT(handleLocalXY()));
@@ -712,7 +713,7 @@
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
 	bool reallynew = (m_item->pixm.imgInfo.actualPageNumber != imagePageNumber->value());
-	m_item->pixm.imgInfo.actualPageNumber = imagePageNumber->value();
+	m_item->pixm.imgInfo.actualPageNumber = static_cast<int>(imagePageNumber->value());
 	if (reallynew)
 		m_item->loadImage(m_item->externalFile(), true);
 	m_item->update();
Index: scribus/ui/propertiespalette_linebase.ui
===================================================================
--- scribus/ui/propertiespalette_linebase.ui	(révision 17391)
+++ scribus/ui/propertiespalette_linebase.ui	(copie de travail)
@@ -46,7 +46,7 @@
     </widget>
    </item>
    <item row="5" column="1">
-    <widget class="QSpinBox" name="startArrowScale">
+    <widget class="ScrSpinBox" name="startArrowScale">
      <property name="minimum">
       <number>1</number>
      </property>
@@ -56,7 +56,7 @@
     </widget>
    </item>
    <item row="5" column="3">
-    <widget class="QSpinBox" name="endArrowScale">
+    <widget class="ScrSpinBox" name="endArrowScale">
      <property name="minimum">
       <number>1</number>
      </property>
Index: scribus/ui/propertiespalette_line.cpp
===================================================================
--- scribus/ui/propertiespalette_line.cpp	(révision 17391)
+++ scribus/ui/propertiespalette_line.cpp	(copie de travail)
@@ -55,9 +55,11 @@
 
 	startArrowScale->setMaximum( 300 );
 	startArrowScale->setMinimum( 1 );
+	startArrowScale->setDecimals(0);
 
 	endArrowScale->setMaximum( 300 );
 	endArrowScale->setMinimum( 1 );
+	endArrowScale->setDecimals(0);
 
 	lineWidthLabel->setBuddy(lineWidth);
 	lineJoinLabel->setBuddy(lineJoinStyle);
@@ -82,8 +84,8 @@
 	connect(bottomLine, SIGNAL(clicked())           , this, SLOT(handleTLines()));
 	connect(startArrow, SIGNAL(activated(int))      , this, SLOT(handleStartArrow(int )));
 	connect(endArrow  , SIGNAL(activated(int))      , this, SLOT(handleEndArrow(int )));
-	connect(startArrowScale, SIGNAL(valueChanged(int)), this, SLOT(handleStartArrowScale(int )));
-	connect(endArrowScale  , SIGNAL(valueChanged(int)), this, SLOT(handleEndArrowScale(int )));
+	connect(startArrowScale, SIGNAL(valueChanged(double)), this, SLOT(handleStartArrowScale(double )));
+	connect(endArrowScale  , SIGNAL(valueChanged(double)), this, SLOT(handleEndArrowScale(double )));
 	connect(lineStyles, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(handleLineStyle(QListWidgetItem*)));
 
 	stackedWidget->setCurrentIndex(0);
@@ -633,18 +635,18 @@
 	m_doc->itemSelection_ApplyArrowHead(-1, id);
 }
 
-void PropertiesPalette_Line::handleStartArrowScale(int sc)
+void PropertiesPalette_Line::handleStartArrowScale(double sc)
 {
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
-	m_doc->itemSelection_ApplyArrowScale(sc, -1, NULL);
+	m_doc->itemSelection_ApplyArrowScale(static_cast<int>(sc), -1, NULL);
 }
 
-void PropertiesPalette_Line::handleEndArrowScale(int sc)
+void PropertiesPalette_Line::handleEndArrowScale(double sc)
 {
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
-	m_doc->itemSelection_ApplyArrowScale(-1, sc, NULL);
+	m_doc->itemSelection_ApplyArrowScale(-1, static_cast<int>(sc), NULL);
 }
 
 void PropertiesPalette_Line::handleDashChange()
Index: scribus/ui/propertiespalette_line.h
===================================================================
--- scribus/ui/propertiespalette_line.h	(révision 17391)
+++ scribus/ui/propertiespalette_line.h	(copie de travail)
@@ -79,8 +79,8 @@
 	void handleTLines();
 	void handleStartArrow(int id);
 	void handleEndArrow(int id);
-	void handleStartArrowScale(int sc);
-	void handleEndArrowScale(int sc);
+	void handleStartArrowScale(double sc);
+	void handleEndArrowScale(double sc);
 	void handleLineStyle(QListWidgetItem *c);
 
 signals:
Index: scribus/ui/propertywidget_distancebase.ui
===================================================================
--- scribus/ui/propertywidget_distancebase.ui	(révision 17391)
+++ scribus/ui/propertywidget_distancebase.ui	(copie de travail)
@@ -34,7 +34,7 @@
     </widget>
    </item>
    <item row="0" column="1">
-    <widget class="QSpinBox" name="columns">
+    <widget class="ScrSpinBox" name="columns">
      <property name="minimum">
       <number>1</number>
      </property>
Index: scribus/ui/propertywidget_distance.cpp
===================================================================
--- scribus/ui/propertywidget_distance.cpp	(révision 17391)
+++ scribus/ui/propertywidget_distance.cpp	(copie de travail)
@@ -31,6 +31,8 @@
 	columnsLabel->setBuddy(columns);
 	columnGap->setValues(0, 300, 2, 0);
 
+	columns->setDecimals(0);
+
 	topDistance->setValues(0, 300, 2, 0);
 	topLabel->setBuddy(topDistance);
 
@@ -150,7 +152,7 @@
 
 void PropertyWidget_Distance::connectSignals()
 {
-	connect(columns       , SIGNAL(valueChanged(int))   , this, SLOT(handleColumns()), Qt::UniqueConnection);
+	connect(columns       , SIGNAL(valueChanged(double))   , this, SLOT(handleColumns()), Qt::UniqueConnection);
 	connect(columnGap     , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()), Qt::UniqueConnection);
 	connect(columnGapLabel, SIGNAL(activated(int))      , this, SLOT(handleGapSwitch()), Qt::UniqueConnection);
 	connect(topDistance   , SIGNAL(valueChanged(double)), this, SLOT(handleTextDistances()), Qt::UniqueConnection);
@@ -162,7 +164,7 @@
 
 void PropertyWidget_Distance::disconnectSignals()
 {
-	disconnect(columns       , SIGNAL(valueChanged(int))   , this, SLOT(handleColumns()));
+	disconnect(columns       , SIGNAL(valueChanged(double))   , this, SLOT(handleColumns()));
 	disconnect(columnGap     , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()));
 	disconnect(columnGapLabel, SIGNAL(activated(int))      , this, SLOT(handleGapSwitch()));
 	disconnect(topDistance   , SIGNAL(valueChanged(double)), this, SLOT(handleTextDistances()));
@@ -278,9 +280,9 @@
 
 	if (textItem)
 	{
-		textItem->Cols = columns->value();
+		textItem->Cols = static_cast<int>(columns->value());
 		displayColumns(textItem->Cols, textItem->ColGap);
-		if (columns->value() == 1)
+		if (static_cast<int>(columns->value()) == 1)
 		{
 			columnGap->setEnabled(false);
 			columnGapLabel->setEnabled(false);
@@ -464,4 +466,4 @@
 	topDistance->blockSignals(false);
 	bottomDistance->blockSignals(false);
 	rightDistance->blockSignals(false);
-}
\ No newline at end of file
+}
Index: scribus/ui/propertywidget_dropcapbase.ui
===================================================================
--- scribus/ui/propertywidget_dropcapbase.ui	(révision 17391)
+++ scribus/ui/propertywidget_dropcapbase.ui	(copie de travail)
@@ -25,7 +25,7 @@
     </widget>
    </item>
    <item row="1" column="1">
-    <widget class="QSpinBox" name="dropCapLines">
+    <widget class="ScrSpinBox" name="dropCapLines">
      <property name="suffix">
       <string> lines</string>
      </property>
Index: scribus/ui/propertywidget_dropcap.cpp
===================================================================
--- scribus/ui/propertywidget_dropcap.cpp	(révision 17391)
+++ scribus/ui/propertywidget_dropcap.cpp	(copie de travail)
@@ -25,6 +25,8 @@
 
 	languageChange();
 
+	dropCapLines->setDecimals(0);
+
 	if (!m_doc) return;
 	dropCapCharStyleCombo->updateFormatList();
 }
@@ -135,7 +137,7 @@
 void PropertyWidget_DropCap::connectSignals()
 {
 	connect(dropCapBox, SIGNAL(stateChanged(int)), this, SLOT(handleDropCapUse()), Qt::UniqueConnection);
-	connect(dropCapLines, SIGNAL(valueChanged(int)), this, SLOT(handleDropCapLines()), Qt::UniqueConnection);
+	connect(dropCapLines, SIGNAL(valueChanged(double)), this, SLOT(handleDropCapLines()), Qt::UniqueConnection);
 	connect(dropCapOffset, SIGNAL(valueChanged(double)), this, SLOT(handleDropCapOffset()), Qt::UniqueConnection);
 	connect(dropCapCharStyleCombo, SIGNAL(activated(int)), this, SLOT(handleDropCapCharStyle()), Qt::UniqueConnection);
 }
@@ -143,7 +145,7 @@
 void PropertyWidget_DropCap::disconnectSignals()
 {
 	disconnect(dropCapBox, SIGNAL(stateChanged(int)), this, SLOT(handleDropCapUse()));
-	disconnect(dropCapLines, SIGNAL(valueChanged(int)), this, SLOT(handleDropCapLines()));
+	disconnect(dropCapLines, SIGNAL(valueChanged(double)), this, SLOT(handleDropCapLines()));
 	disconnect(dropCapOffset, SIGNAL(valueChanged(double)), this, SLOT(handleDropCapOffset()));
 	disconnect(dropCapCharStyleCombo, SIGNAL(activated(int)), this, SLOT(handleDropCapCharStyle()));
 }
@@ -212,7 +214,7 @@
 	if (!m_doc || !m_item)
 		return;
 	ParagraphStyle newStyle;
-	newStyle.setDropCapLines(dropCapLines->value());
+	newStyle.setDropCapLines(static_cast<int>(dropCapLines->value()));
 	newStyle.setHasDropCap(dropCapBox->isChecked());
 	PageItem *item = m_doc->m_Selection->itemAt(0);
 	if (m_doc->appMode == modeEditTable)
Index: scribus/ui/propertywidget_orphansbase.ui
===================================================================
--- scribus/ui/propertywidget_orphansbase.ui	(révision 17391)
+++ scribus/ui/propertywidget_orphansbase.ui	(copie de travail)
@@ -25,7 +25,7 @@
     </widget>
    </item>
    <item row="0" column="1">
-    <widget class="QSpinBox" name="keepLinesStart">
+    <widget class="ScrSpinBox" name="keepLinesStart">
      <property name="suffix">
       <string> lines</string>
      </property>
@@ -42,7 +42,7 @@
     </widget>
    </item>
    <item row="1" column="1">
-    <widget class="QSpinBox" name="keepLinesEnd">
+    <widget class="ScrSpinBox" name="keepLinesEnd">
      <property name="suffix">
       <string> lines</string>
      </property>
@@ -67,6 +67,13 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QSpinBox</extends>
+   <header location="global">ui/scrspinbox.h</header>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>
Index: scribus/ui/propertywidget_orphans.cpp
===================================================================
--- scribus/ui/propertywidget_orphans.cpp	(révision 17391)
+++ scribus/ui/propertywidget_orphans.cpp	(copie de travail)
@@ -12,7 +12,8 @@
 PropertyWidget_Orphans::PropertyWidget_Orphans(QWidget* parent) : QFrame(parent)
 {
 	setupUi(this);
-
+	keepLinesStart->setDecimals(0);
+	keepLinesEnd->setDecimals(0);
 	setFrameStyle(QFrame::Box | QFrame::Plain);
 	setLineWidth(1);
 	layout()->setAlignment( Qt::AlignTop );
@@ -22,16 +23,16 @@
 
 void PropertyWidget_Orphans::connectSignals()
 {
-	connect(keepLinesStart, SIGNAL(valueChanged(int)), this, SLOT(handleKeepLinesStart()));
-	connect(keepLinesEnd, SIGNAL(valueChanged(int)), this, SLOT(handleKeepLinesEnd()));
+	connect(keepLinesStart, SIGNAL(valueChanged(double)), this, SLOT(handleKeepLinesStart()));
+	connect(keepLinesEnd, SIGNAL(valueChanged(double)), this, SLOT(handleKeepLinesEnd()));
 	connect(keepTogether, SIGNAL(stateChanged(int)), this, SLOT(handleKeepTogether()));
 	connect(keepWithNext, SIGNAL(stateChanged(int)), this, SLOT(handleKeepWithNext()));
 }
 
 void PropertyWidget_Orphans::disconnectSignals()
 {
-	disconnect(keepLinesStart, SIGNAL(valueChanged(int)), this, SLOT(handleKeepLinesStart()));
-	disconnect(keepLinesEnd, SIGNAL(valueChanged(int)), this, SLOT(handleKeepLinesEnd()));
+	disconnect(keepLinesStart, SIGNAL(valueChanged(double)), this, SLOT(handleKeepLinesStart()));
+	disconnect(keepLinesEnd, SIGNAL(valueChanged(double)), this, SLOT(handleKeepLinesEnd()));
 	disconnect(keepTogether, SIGNAL(stateChanged(int)), this, SLOT(handleKeepTogether()));
 	disconnect(keepWithNext, SIGNAL(stateChanged(int)), this, SLOT(handleKeepWithNext()));
 }
Index: scribus/ui/spiralvectorbase.ui
===================================================================
--- scribus/ui/spiralvectorbase.ui	(révision 17391)
+++ scribus/ui/spiralvectorbase.ui	(copie de travail)
@@ -73,7 +73,7 @@
       </widget>
      </item>
      <item row="2" column="1">
-      <widget class="QSpinBox" name="arcFactor">
+      <widget class="ScrSpinBox" name="arcFactor">
        <property name="suffix">
         <string> %</string>
        </property>
Index: scribus/ui/spiralvectordialog.cpp
===================================================================
--- scribus/ui/spiralvectordialog.cpp	(révision 17391)
+++ scribus/ui/spiralvectordialog.cpp	(copie de travail)
@@ -30,9 +30,10 @@
 	startAngle->setValues(0, 36000, 1, 0);
 	sweepAngle->setNewUnit(6);
 	sweepAngle->setValues(0, 36000, 1, 0);
+	arcFactor->setDecimals(0);
 	connect(startAngle,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
 	connect(sweepAngle,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
-	connect(arcFactor,   SIGNAL(valueChanged(int)), this, SLOT(changeVectors()));
+	connect(arcFactor,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
 	connect(exitButton, SIGNAL(clicked()), this, SIGNAL(endEdit()));
 	languageChange();
 	resize(minimumSizeHint());
@@ -58,7 +59,7 @@
 {
 	disconnect(startAngle,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
 	disconnect(sweepAngle,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
-	disconnect(arcFactor,   SIGNAL(valueChanged(int)), this, SLOT(changeVectors()));
+	disconnect(arcFactor,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
 	startAngle->setValue(start);
 	sweepAngle->setValue(sweep);
 	startAngle->setMaximum(sweep - 1);
@@ -66,7 +67,7 @@
 	arcFactor->setValue(qRound(factor * 100) - 100);
 	connect(startAngle,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
 	connect(sweepAngle,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
-	connect(arcFactor,   SIGNAL(valueChanged(int)), this, SLOT(changeVectors()));
+	connect(arcFactor,   SIGNAL(valueChanged(double)), this, SLOT(changeVectors()));
 }
 
 void SpiralVectorDialog::changeVectors()
Index: scribus/ui/spiralwidgetbase.ui
===================================================================
--- scribus/ui/spiralwidgetbase.ui	(révision 17391)
+++ scribus/ui/spiralwidgetbase.ui	(copie de travail)
@@ -78,7 +78,7 @@
         </widget>
        </item>
        <item row="2" column="1">
-        <widget class="QSpinBox" name="arcFactor">
+        <widget class="ScrSpinBox" name="arcFactor">
          <property name="suffix">
           <string> %</string>
          </property>
Index: scribus/ui/spiralwidget.cpp
===================================================================
--- scribus/ui/spiralwidget.cpp	(révision 17391)
+++ scribus/ui/spiralwidget.cpp	(copie de travail)
@@ -23,6 +23,7 @@
 {
 	setupUi(this);
 	startAngle->setNewUnit(6);
+	arcFactor->setDecimals(0);
 	startAngle->setValues(0, 36000, 1, 0);
 	endAngle->setNewUnit(6);
 	endAngle->setValues(0, 36000, 1, 0);
@@ -34,13 +35,13 @@
 	{
 		connect(startAngle, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
 		connect(endAngle, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
-		connect(arcFactor, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
+		connect(arcFactor, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
 	}
 	else
 	{
 		disconnect(startAngle, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
 		disconnect(endAngle, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
-		disconnect(arcFactor, SIGNAL(valueChanged(int)), this, SLOT(updatePreview()));
+		disconnect(arcFactor, SIGNAL(valueChanged(double)), this, SLOT(updatePreview()));
 	}
 }
 
@@ -59,7 +60,7 @@
 {
 	prefsData->spiralStartAngle = startAngle->value();
 	prefsData->spiralEndAngle = endAngle->value();
-	prefsData->spiralFactor = (arcFactor->value() + 100) / 100.0;
+	prefsData->spiralFactor = (static_cast<int>(arcFactor->value()) + 100) / 100.0;
 }
 
 void SpiralWidget::updatePreview()
@@ -72,7 +73,7 @@
 	p.begin(&pm);
 	p.setBrush(Qt::NoBrush);
 	p.setPen(Qt::black);
-	QPainterPath path = SpiralPath(pm.width() - 6, pm.height() - 6, startAngle->value(), endAngle->value(), (arcFactor->value() + 100) / 100.0);
+	QPainterPath path = SpiralPath(pm.width() - 6, pm.height() - 6, startAngle->value(), endAngle->value(), (static_cast<int>(arcFactor->value()) + 100) / 100.0);
 	path.translate(3, 3);
 	p.strokePath(path, p.pen());
 	p.end();
Index: scribus/ui/transparencypalette.cpp
===================================================================
--- scribus/ui/transparencypalette.cpp	(révision 17391)
+++ scribus/ui/transparencypalette.cpp	(copie de travail)
@@ -41,11 +41,13 @@
 	editLineSelector->setIcon(QIcon(loadIcon("16/color-stroke.png")));
 	editFillSelector->setIcon(QIcon(loadIcon("16/color-fill.png")));
 	editFillSelector->setChecked(true);
+	strokeOpacity->setDecimals(0);
+	fillOpacity->setDecimals(0);
 	editFillSelectorButton();
 	connect(editLineSelector, SIGNAL(clicked()), this, SLOT(editLineSelectorButton()));
 	connect(editFillSelector, SIGNAL(clicked()), this, SLOT(editFillSelectorButton()));
-	connect(strokeOpacity, SIGNAL(valueChanged(int)), this, SLOT(slotTransS(int)));
-	connect(fillOpacity, SIGNAL(valueChanged(int)), this, SLOT(slotTransF(int)));
+	connect(strokeOpacity, SIGNAL(valueChanged(double)), this, SLOT(slotTransS(double)));
+	connect(fillOpacity, SIGNAL(valueChanged(double)), this, SLOT(slotTransF(double)));
 	connect(blendModeFill, SIGNAL(activated(int)), this, SIGNAL(NewBlend(int)));
 	connect(blendModeStroke, SIGNAL(activated(int)), this, SIGNAL(NewBlendS(int)));
 	connect(namedGradient, SIGNAL(activated(const QString &)), this, SLOT(setNamedGradient(const QString &)));
@@ -516,12 +518,12 @@
 
 void Tpalette::setActTrans(double val, double val2)
 {
-	disconnect(strokeOpacity, SIGNAL(valueChanged(int)), this, SLOT(slotTransS(int)));
-	disconnect(fillOpacity, SIGNAL(valueChanged(int)), this, SLOT(slotTransF(int)));
+	disconnect(strokeOpacity, SIGNAL(valueChanged(double)), this, SLOT(slotTransS(double)));
+	disconnect(fillOpacity, SIGNAL(valueChanged(double)), this, SLOT(slotTransF(double)));
 	strokeOpacity->setValue(qRound(100 - (val2 * 100)));
 	fillOpacity->setValue(qRound(100 - (val * 100)));
-	connect(strokeOpacity, SIGNAL(valueChanged(int)), this, SLOT(slotTransS(int)));
-	connect(fillOpacity, SIGNAL(valueChanged(int)), this, SLOT(slotTransF(int)));
+	connect(strokeOpacity, SIGNAL(valueChanged(double)), this, SLOT(slotTransS(double)));
+	connect(fillOpacity, SIGNAL(valueChanged(double)), this, SLOT(slotTransF(double)));
 }
 
 void Tpalette::setActBlend(int val, int val2)
@@ -534,14 +536,14 @@
 	connect(blendModeStroke, SIGNAL(activated(int)), this, SIGNAL(NewBlendS(int)));
 }
 
-void Tpalette::slotTransS(int val)
+void Tpalette::slotTransS(double val)
 {
-	emit NewTransS(static_cast<double>(100 - val) / 100.0);
+	emit NewTransS((100 - val) / 100.0);
 }
 
-void Tpalette::slotTransF(int val)
+void Tpalette::slotTransF(double val)
 {
-	emit NewTrans(static_cast<double>(100 - val) / 100.0);
+	emit NewTrans((100 - val) / 100.0);
 }
 
 void Tpalette::editLineSelectorButton()
Index: scribus/ui/transparencypalette.h
===================================================================
--- scribus/ui/transparencypalette.h	(révision 17391)
+++ scribus/ui/transparencypalette.h	(copie de travail)
@@ -94,8 +94,8 @@
 	void setSpecialGradient(double x1, double y1, double x2, double y2, double fx, double fy, double sg, double sk);
 	void setActTrans(double, double);
 	void setActBlend(int, int);
-	void slotTransS(int val);
-	void slotTransF(int val);
+	void slotTransS(double val);
+	void slotTransF(double val);
 	void unitChange(double, double, int unitIndex);
 
 signals:
Index: scribus/ui/transparencypalette.ui
===================================================================
--- scribus/ui/transparencypalette.ui	(révision 17391)
+++ scribus/ui/transparencypalette.ui	(copie de travail)
@@ -92,7 +92,7 @@
           </widget>
          </item>
          <item row="0" column="1">
-          <widget class="QSpinBox" name="strokeOpacity">
+          <widget class="ScrSpinBox" name="strokeOpacity">
            <property name="toolTip">
             <string>Set the transparency for the color selected</string>
            </property>
@@ -246,7 +246,7 @@
               </widget>
              </item>
              <item>
-              <widget class="QSpinBox" name="fillOpacity">
+              <widget class="ScrSpinBox" name="fillOpacity">
                <property name="toolTip">
                 <string>Set the transparency for the color selected</string>
                </property>
@@ -532,6 +532,11 @@
  </widget>
  <customwidgets>
   <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QSpinBox</extends>
+   <header location="global">ui/scrspinbox.h</header>
+  </customwidget>
+  <customwidget>
    <class>ScComboBox</class>
    <extends>QComboBox</extends>
    <header>ui/sccombobox.h</header>
Index: scribus/ui/layers.cpp
===================================================================
--- scribus/ui/layers.cpp	(révision 17391)
+++ scribus/ui/layers.cpp	(copie de travail)
@@ -25,7 +25,6 @@
 #include <QPixmap>
 #include <QPushButton>
 #include <QSpacerItem>
-#include <QSpinBox>
 #include <QTableWidget>
 #include <QTableWidgetItem>
 #include <QToolButton>
@@ -36,6 +35,7 @@
 #include "scribus.h"
 #include "undomanager.h"
 #include "util_icon.h"
+#include "ui/scrspinbox.h"
 
 LayerPalette::LayerPalette(QWidget* parent) : ScDockPalette( parent, "Layers", 0 ), m_Doc(0)
 {
@@ -56,10 +56,11 @@
 	textLabel2 = new QLabel( this);
 	textLabel2->setText( tr( "Opacity:" ) );
 	layout1->addWidget( textLabel2 );
-	opacitySpinBox = new QSpinBox( this);
+	opacitySpinBox = new ScrSpinBox( this);
 	opacitySpinBox->setMinimum(0);
 	opacitySpinBox->setMaximum(100);
 	opacitySpinBox->setSingleStep(10);
+	opacitySpinBox->setDecimals(0);
 	opacitySpinBox->setSuffix( tr(" %"));
 	opacitySpinBox->setFocusPolicy(Qt::ClickFocus);
 	layout1->addWidget( opacitySpinBox );
@@ -148,7 +149,7 @@
 	connect(raiseLayerButton, SIGNAL(clicked()), this, SLOT(upLayer()));
 	connect(lowerLayerButton, SIGNAL(clicked()), this, SLOT(downLayer()));
 	connect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 	connect(header, SIGNAL(sectionClicked(int)), this, SLOT(toggleAllfromHeader(int)));
 }
@@ -156,7 +157,7 @@
 void LayerPalette::ClearInhalt()
 {
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	disconnect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	Table->clearContents();
@@ -172,7 +173,7 @@
 {
 	m_Doc=doc;
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	disconnect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	if (!m_Doc)
@@ -194,14 +195,14 @@
 
 	connect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	connect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
 void LayerPalette::rebuildList()
 {
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	disconnect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	QString tmp;
@@ -253,7 +254,7 @@
 	}
 	connect(Table, SIGNAL(cellChanged(int, int)), this, SLOT(changeName(int, int)));
 	connect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
@@ -501,7 +502,7 @@
 void LayerPalette::markActiveLayer(int layerID)
 {
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	disconnect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
 	int layerToMark=layerID;
 	if (layerID==-1)
@@ -522,7 +523,7 @@
 		lowerLayerButton->setEnabled(false);
 	}
 	connect(Table, SIGNAL(cellClicked(int, int)), this, SLOT(setActiveLayer(int, int)));
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
@@ -534,7 +535,7 @@
 		return;
 	}
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	disconnect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	int layerID=m_Doc->layerIDFromLevel(m_Doc->layerCount()-1-row);
 	bool found=m_Doc->setActiveLayer(layerID);
 	if (found)
@@ -554,7 +555,7 @@
 			lowerLayerButton->setEnabled(false);
 		}
 	}
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changeOpacity()));
+	connect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changeOpacity()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changeBlendMode(int)));
 }
 
Index: scribus/ui/layers.h
===================================================================
--- scribus/ui/layers.h	(révision 17391)
+++ scribus/ui/layers.h	(copie de travail)
@@ -20,7 +20,7 @@
 class QHeaderView;
 class QLabel;
 class QPushButton;
-class QSpinBox;
+class ScrSpinBox;
 class QTableWidget;
 class QTableWidgetItem;
 class QToolButton;
@@ -78,7 +78,7 @@
 	QLabel* textLabel1;
 	ScComboBox* blendMode;
 	QLabel* textLabel2;
-	QSpinBox* opacitySpinBox;
+	ScrSpinBox* opacitySpinBox;
 	QHeaderView* Header;
 	QPushButton* newLayerButton;
 	QPushButton* duplicateLayerButton;
Index: scribus/ui/guidemanager.cpp
===================================================================
--- scribus/ui/guidemanager.cpp	(révision 17391)
+++ scribus/ui/guidemanager.cpp	(copie de travail)
@@ -49,6 +49,8 @@
 	horizontalAutoGapSpin->setMaximum(10000.0);
 	verticalAutoGapSpin->setMinimum(0.0);
 	verticalAutoGapSpin->setMaximum(10000.0);
+	horizontalAutoCountSpin->setDecimals(0);
+	verticalAutoCountSpin->setDecimals(0);
 
 	// MVC
 	horizontalModel = new GuidesModel(this);
@@ -75,10 +77,10 @@
 
 	connect(applyToAllStdButton, SIGNAL(clicked()),
 			this, SLOT(applyToAllStdButton_clicked()));
-	connect(horizontalAutoCountSpin, SIGNAL(valueChanged(int)),
-			this, SLOT(horizontalAutoCountSpin_valueChanged(int)));
-	connect(verticalAutoCountSpin, SIGNAL(valueChanged(int)),
-			this, SLOT(verticalAutoCountSpin_valueChanged(int)));
+	connect(horizontalAutoCountSpin, SIGNAL(valueChanged(double)),
+			this, SLOT(horizontalAutoCountSpin_valueChanged(double)));
+	connect(verticalAutoCountSpin, SIGNAL(valueChanged(double)),
+			this, SLOT(verticalAutoCountSpin_valueChanged(double)));
 	connect(horizontalAutoGapCheck, SIGNAL(stateChanged(int)),
 			this, SLOT(horizontalAutoGapCheck_stateChanged(int)));
 	connect(verticalAutoGapCheck, SIGNAL(stateChanged(int)),
@@ -389,7 +391,7 @@
 	copyGuidesToAllPages(GuideManagerCore::Auto);
 }
 
-void GuideManager::horizontalAutoCountSpin_valueChanged(int val)
+void GuideManager::horizontalAutoCountSpin_valueChanged(double val)
 {
 	bool enable = (val == 0) ? false : true;
 	horizontalAutoGapCheck->setEnabled(enable);
@@ -420,7 +422,7 @@
 	m_Doc->changed();
 }
 
-void GuideManager::verticalAutoCountSpin_valueChanged(int val)
+void GuideManager::verticalAutoCountSpin_valueChanged(double val)
 {
 	bool enable = (val == 0) ? false : true;
 	verticalAutoGapCheck->setEnabled(enable);
Index: scribus/ui/guidemanager.h
===================================================================
--- scribus/ui/guidemanager.h	(révision 17391)
+++ scribus/ui/guidemanager.h	(copie de travail)
@@ -148,8 +148,8 @@
 	void horizontalAutoGapCheck_stateChanged( int );
 	void verticalAutoGapCheck_stateChanged( int );
 	void applyToAllAutoButton_clicked();
-	void horizontalAutoCountSpin_valueChanged( int );
-	void verticalAutoCountSpin_valueChanged( int );
+	void horizontalAutoCountSpin_valueChanged( double );
+	void verticalAutoCountSpin_valueChanged( double );
 	void horizontalAutoGapSpin_valueChanged(double);
 	void verticalAutoGapSpin_valueChanged(double);
 	void horizontalPageAutoButton_toggled(bool);
Index: scribus/ui/guidemanager.ui
===================================================================
--- scribus/ui/guidemanager.ui	(révision 17391)
+++ scribus/ui/guidemanager.ui	(copie de travail)
@@ -161,7 +161,10 @@
            </widget>
           </item>
           <item row="0" column="1">
-           <widget class="QSpinBox" name="horizontalAutoCountSpin">
+           <widget class="ScrSpinBox" name="horizontalAutoCountSpin">
+            <property name="suffix">
+             <string> </string>
+            </property>
             <property name="minimum">
              <number>0</number>
             </property>
@@ -248,7 +251,7 @@
            </widget>
           </item>
           <item row="0" column="1">
-           <widget class="QSpinBox" name="verticalAutoCountSpin">
+           <widget class="ScrSpinBox" name="verticalAutoCountSpin">
             <property name="minimum">
              <number>0</number>
             </property>
@@ -384,8 +387,8 @@
  <customwidgets>
   <customwidget>
    <class>ScrSpinBox</class>
-   <extends>QDoubleSpinBox</extends>
-   <header>ui/scrspinbox.h</header>
+   <extends>QSpinBox</extends>
+   <header location="global">ui/scrspinbox.h</header>
   </customwidget>
   <customwidget>
    <class>ScrPaletteBase</class>
Index: scribus/ui/gradienteditor.cpp
===================================================================
--- scribus/ui/gradienteditor.cpp	(révision 17391)
+++ scribus/ui/gradienteditor.cpp	(copie de travail)
@@ -34,10 +34,13 @@
 GradientEditor::GradientEditor(QWidget *pa) : QFrame(pa)
 {
 	setupUi(this);
-	connect(stopPos    , SIGNAL(valueChanged(int)), this, SLOT(changePos(int)));
+	stopPos->setDecimals(0);
+	stopOpacity->setDecimals(0);
+	stopShade->setDecimals(0);
+	connect(stopPos    , SIGNAL(valueChanged(double)), this, SLOT(changePos(double)));
 	connect(stopColor  , SIGNAL(activated(const QString &)), this, SLOT(setStopColor(const QString &)));
-	connect(stopOpacity, SIGNAL(valueChanged(int)), this, SLOT(setStopTrans(int)));
-	connect(stopShade  , SIGNAL(valueChanged(int)), this, SLOT(setStopShade(int)));
+	connect(stopOpacity, SIGNAL(valueChanged(double)), this, SLOT(setStopTrans(double)));
+	connect(stopShade  , SIGNAL(valueChanged(double)), this, SLOT(setStopShade(double)));
 	connect(Preview, SIGNAL(selectedStop(VColorStop*)), this, SLOT(slotDisplayStop(VColorStop*)));
 	connect(Preview, SIGNAL(currStep(double)), this, SLOT(setPos(double)));
 	connect(Preview, SIGNAL(currStep(double)), this, SIGNAL(gradientChanged()));
@@ -113,9 +116,9 @@
 	Preview->setGradientEditable(val);
 }
 
-void GradientEditor::changePos(int v)
+void GradientEditor::changePos(double v)
 {
-	Preview->setActStep(static_cast<double>(v) / 100.0);
+	Preview->setActStep(v / 100.0);
 	emit gradientChanged();
 }
 
@@ -144,13 +147,13 @@
 	emit gradientChanged();
 }
 
-void GradientEditor::setStopTrans(int val)
+void GradientEditor::setStopTrans(double val)
 {
-	Preview->setActTrans(static_cast<double>(val) / 100.0);
+	Preview->setActTrans(val / 100.0);
 	emit gradientChanged();
 }
 
-void GradientEditor::setStopShade(int val)
+void GradientEditor::setStopShade(double val)
 {
 	Preview->setActColor(setColor(stopColor->currentText(), val), stopColor->currentText(), val);
 	emit gradientChanged();
Index: scribus/ui/gradienteditor.h
===================================================================
--- scribus/ui/gradienteditor.h	(révision 17391)
+++ scribus/ui/gradienteditor.h	(copie de travail)
@@ -54,13 +54,13 @@
 
 public slots:
 	void setPos(double);
-	void changePos(int);
+	void changePos(double);
 	void slotColor(QString name, int shade);
 	void slotDisplayStop(VColorStop* stop);
 	void setGradTrans(double val);
 	void setStopColor(const QString &);
-	void setStopTrans(int val);
-	void setStopShade(int val);
+	void setStopTrans(double val);
+	void setStopShade(double val);
 	void languageChange();
 
 signals:
Index: scribus/ui/gradienteditor.ui
===================================================================
--- scribus/ui/gradienteditor.ui	(révision 17391)
+++ scribus/ui/gradienteditor.ui	(copie de travail)
@@ -65,7 +65,7 @@
     </widget>
    </item>
    <item row="1" column="1">
-    <widget class="QSpinBox" name="stopPos">
+    <widget class="ScrSpinBox" name="stopPos">
      <property name="suffix">
       <string> %</string>
      </property>
@@ -92,7 +92,7 @@
     </widget>
    </item>
    <item row="3" column="1">
-    <widget class="QSpinBox" name="stopOpacity">
+    <widget class="ScrSpinBox" name="stopOpacity">
      <property name="suffix">
       <string> %</string>
      </property>
@@ -115,7 +115,7 @@
     </widget>
    </item>
    <item row="4" column="1">
-    <widget class="QSpinBox" name="stopShade">
+    <widget class="ScrSpinBox" name="stopShade">
      <property name="suffix">
       <string> %</string>
      </property>
@@ -144,6 +144,11 @@
    <header>ui/gradientpreview.h</header>
    <container>1</container>
   </customwidget>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QSpinBox</extends>
+   <header location="global">ui/scrspinbox.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
Index: scribus/ui/gradientpreview.cpp
===================================================================
--- scribus/ui/gradientpreview.cpp	(révision 17391)
+++ scribus/ui/gradientpreview.cpp	(copie de travail)
@@ -228,8 +228,11 @@
 		}
 	}
 	Mpressed = false;
-	if (!onlyselect)
+	if (!onlyselect){
 		emit gradientChanged();
+		QList<VColorStop*> cstops = fill_gradient.colorStops();
+		emit currStep(cstops.at(ActStop)->rampPoint);
+	}
 }
 
 void GradientPreview::mouseMoveEvent(QMouseEvent *m)
@@ -271,7 +274,6 @@
 				StopM[ActStop] = m->x();
 				QList<VColorStop*> cstops = fill_gradient.colorStops();
 				cstops.at(ActStop)->rampPoint = newStop;
-				emit currStep(cstops.at(ActStop)->rampPoint);
 				qSort(cstops.begin(), cstops.end());
 				onlyselect = false;
 				repaint();
Index: scribus/ui/extimageprops.cpp
===================================================================
--- scribus/ui/extimageprops.cpp	(révision 17391)
+++ scribus/ui/extimageprops.cpp	(copie de travail)
@@ -14,7 +14,6 @@
 #include <QLabel>
 #include <QCheckBox>
 #include <QPushButton>
-#include <QSpinBox>
 #include <QToolTip>
 #include <QPainter>
 #include <QWidget>
@@ -31,6 +30,7 @@
 #include "util_icon.h"
 #include "util_math.h"
 #include "util.h"
+#include "ui/scrspinbox.h"
 
 ExtImageProps::ExtImageProps( QWidget* parent, ImageInfoRecord *info, PageItem *item, ScribusView *view )
 	: QDialog( parent )
@@ -120,8 +120,9 @@
 		textLabel2 = new QLabel( tab );
 		textLabel2->setText( tr( "Opacity:" ) );
 		layout1->addWidget( textLabel2 );
-		opacitySpinBox = new QSpinBox( tab );
+		opacitySpinBox = new ScrSpinBox( tab );
 		opacitySpinBox->setMinimum(0);
+		opacitySpinBox->setDecimals(0);
 		opacitySpinBox->setMaximum(100);
 		opacitySpinBox->setSingleStep(10);
 		opacitySpinBox->setSuffix( tr(" %"));
@@ -295,7 +296,7 @@
 	if (info->layerInfo.count() != 0)
 	{
 		connect(layerTable, SIGNAL(cellClicked(int, int)), this, SLOT(selLayer(int)));
-		connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changedLayer()));
+		connect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changedLayer()));
 		connect(blendMode, SIGNAL(activated(int)), this, SLOT(changedLayer()));
 	}
 }
@@ -385,7 +386,7 @@
 		if (currentLayer == layerTable->rowCount() - r - 1)
 		{
 			loadingInfo.blend = blendModesRev[blendMode->currentText()];
-			loadingInfo.opacity = qRound(opacitySpinBox->value() / 100.0 * 255);
+			loadingInfo.opacity = qRound(static_cast<int>(opacitySpinBox->value()) / 100.0 * 255);
 		}
 		else
 		{
@@ -408,7 +409,7 @@
 
 void ExtImageProps::selLayer(int layer)
 {
-	disconnect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changedLayer()));
+	disconnect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changedLayer()));
 	disconnect(blendMode, SIGNAL(activated(int)), this, SLOT(changedLayer()));
 	if ((currentItem->pixm.imgInfo.isRequest) && (currentItem->pixm.imgInfo.RequestProps.contains(layerTable->rowCount() - layer - 1)))
 	{
@@ -423,7 +424,7 @@
 	opacitySpinBox->setEnabled(true);
 	blendMode->setEnabled(true);
 	currentLayer = layerTable->rowCount() - layer - 1;
-	connect(opacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(changedLayer()));
+	connect(opacitySpinBox, SIGNAL(valueChanged(double)), this, SLOT(changedLayer()));
 	connect(blendMode, SIGNAL(activated(int)), this, SLOT(changedLayer()));
 }
 
Index: scribus/ui/extimageprops.h
===================================================================
--- scribus/ui/extimageprops.h	(révision 17391)
+++ scribus/ui/extimageprops.h	(copie de travail)
@@ -17,7 +17,7 @@
 class QLabel;
 class QComboBox;
 class QCheckBox;
-class QSpinBox;
+class ScrSpinBox;
 class QListWidget;
 class QListWidgetItem;
 class QPushButton;
@@ -41,7 +41,7 @@
 	QLabel* textLabel1;
 	QComboBox* blendMode;
 	QLabel* textLabel2;
-	QSpinBox* opacitySpinBox;
+	ScrSpinBox* opacitySpinBox;
 	QTableWidget* layerTable;
 	QWidget* tab_2;
 	QListWidget* pathList;
Index: scribus/ui/delpages.cpp
===================================================================
--- scribus/ui/delpages.cpp	(révision 17391)
+++ scribus/ui/delpages.cpp	(copie de travail)
@@ -6,11 +6,11 @@
 */
 #include <QLabel>
 #include <QPushButton>
-#include <QSpinBox>
 
 #include "delpages.h"
 #include "util_icon.h"
 #include "commonstrings.h"
+#include "ui/scrspinbox.h"
 
 DelPages::DelPages( QWidget* parent, int currentPage, int maxPage ) : QDialog( parent )
 {
@@ -25,7 +25,8 @@
 	fromToLayout->setMargin( 5 );
 	fromLabel = new QLabel( tr( "Delete From:" ), this );
 	fromToLayout->addWidget( fromLabel );
-	fromPageData = new QSpinBox(this );
+	fromPageData = new ScrSpinBox(this );
+	fromPageData->setDecimals(0);
 	fromPageData->setMinimum(1);
 	fromPageData->setMaximum(maxPage);
 	fromPageData->setValue( currentPage );
@@ -33,7 +34,8 @@
 	toLabel = new QLabel( this );
 	toLabel->setText( tr( "to:" ) );
 	fromToLayout->addWidget( toLabel );
-	toPageData = new QSpinBox( this );
+	toPageData = new ScrSpinBox( this );
+	toPageData->setDecimals(0);
 	toPageData->setMinimum(1);
 	toPageData->setMaximum(maxPage);
 	toPageData->setValue( currentPage );
@@ -57,13 +59,13 @@
 	// signals and slots connections
 	connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
 	connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
-	connect( fromPageData, SIGNAL( editingFinished() ), this, SLOT( fromChanged() ) );
-	connect( toPageData, SIGNAL( editingFinished() ), this, SLOT( toChanged() ) );
+	connect( fromPageData, SIGNAL( valueChanged(double) ), this, SLOT( fromChanged() ) );
+	connect( toPageData, SIGNAL( valueChanged(double) ), this, SLOT( toChanged() ) );
 }
 
 void DelPages::fromChanged()
 {
-	int pageNumber=fromPageData->value();
+	int pageNumber=static_cast<int>(fromPageData->value());
 	if (pageNumber > toPageData->value())
 		toPageData->setValue(pageNumber);
 	if ((pageNumber == 1) && (toPageData->value() == toPageData->maximum()))
@@ -81,7 +83,7 @@
 
 int DelPages::getFromPage() const
 {
-	return fromPageData->value();
+	return static_cast<int>(fromPageData->value());
 }
 
 int DelPages::getToPage() const
Index: scribus/ui/delpages.h
===================================================================
--- scribus/ui/delpages.h	(révision 17391)
+++ scribus/ui/delpages.h	(copie de travail)
@@ -14,7 +14,7 @@
 
 class QLabel;
 class QPushButton;
-class QSpinBox;
+class ScrSpinBox;
 
 class SCRIBUS_API DelPages : public QDialog
 {
@@ -36,8 +36,8 @@
 	QPushButton* okButton;
 	QLabel* fromLabel;
 	QLabel* toLabel;
-	QSpinBox* toPageData;
-	QSpinBox* fromPageData;
+	ScrSpinBox* toPageData;
+	ScrSpinBox* fromPageData;
 
 private slots:
 	virtual void fromChanged();
Index: scribus/ui/createrange.cpp
===================================================================
--- scribus/ui/createrange.cpp	(révision 17391)
+++ scribus/ui/createrange.cpp	(copie de travail)
@@ -27,10 +27,13 @@
 	pageCountValueLabel->setText(QString("%1").arg(pageCount));
 	basicConsecutiveFromSpinBox->setMinimum(1);
 	basicConsecutiveToSpinBox->setMinimum(1);
+	basicConsecutiveFromSpinBox->setDecimals(0);
+	basicConsecutiveToSpinBox->setDecimals(0);
 	basicConsecutiveFromSpinBox->setMaximum(pageCount);
 	basicConsecutiveToSpinBox->setMaximum(pageCount);
 	basicSelectRangeType(m_BasicRangeType);
 	advPageGroupSizeSpinBox->setMaximum(pageCount);
+	advPageGroupSizeSpinBox->setDecimals(0);
 	if (m_PageCount==1)
 		basicEvenRadioButton->setShown(false);
 	if (currText.length()>0)
@@ -45,7 +48,7 @@
 	connect(basicOddRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeOdd()));
 	connect(basicRangeUpButton, SIGNAL(clicked()), this, SLOT(basicMoveUp()));
 	connect(basicRangeDownButton, SIGNAL(clicked()), this, SLOT(basicMoveDown()));
-	connect(advPageGroupSizeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(advSpinChange(int)));
+	connect(advPageGroupSizeSpinBox, SIGNAL(valueChanged(double)), this, SLOT(advSpinChange()));
 	connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
 	connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
 	advPageGroupSizeSpinBox->setValue(4);
@@ -85,8 +88,8 @@
 	{
 		case 0:
 			{
-				int from=basicConsecutiveFromSpinBox->value();
-				int to=basicConsecutiveToSpinBox->value();
+				int from=static_cast<int>(basicConsecutiveFromSpinBox->value());
+				int to=static_cast<int>(basicConsecutiveToSpinBox->value());
 				if (from==to)
 					newEntry=QString("%1").arg(from);
 				else
@@ -190,7 +193,7 @@
 }
 
 
-void CreateRange::advSpinChange(int /*v*/)
+void CreateRange::advSpinChange()
 {
 	m_PageString="";
 	int mp1=m_PageCount+1;
Index: scribus/ui/createrange.h
===================================================================
--- scribus/ui/createrange.h	(révision 17391)
+++ scribus/ui/createrange.h	(copie de travail)
@@ -33,7 +33,7 @@
 		void basicSelectRangeTypeEven();
 		void basicSelectRangeTypeOdd();
 		void basicSelectRangeType(int);
-		void advSpinChange(int);
+		void advSpinChange();
 		
 	protected:
 		int m_PageCount;
Index: scribus/ui/createrange.ui
===================================================================
--- scribus/ui/createrange.ui	(révision 17391)
+++ scribus/ui/createrange.ui	(copie de travail)
@@ -264,10 +264,10 @@
            </widget>
           </item>
           <item row="1" column="3" >
-           <widget class="QSpinBox" name="basicConsecutiveToSpinBox" />
+           <widget class="ScrSpinBox" name="basicConsecutiveToSpinBox" />
           </item>
           <item row="1" column="1" >
-           <widget class="QSpinBox" name="basicConsecutiveFromSpinBox" />
+           <widget class="ScrSpinBox" name="basicConsecutiveFromSpinBox" />
           </item>
           <item row="1" column="4" >
            <spacer>
@@ -470,7 +470,7 @@
         </spacer>
        </item>
        <item row="0" column="1" colspan="2" >
-        <widget class="QSpinBox" name="advPageGroupSizeSpinBox" />
+        <widget class="ScrSpinBox" name="advPageGroupSizeSpinBox" />
        </item>
        <item row="0" column="0" >
         <widget class="QLabel" name="advPageGroupSizeLabel" >
@@ -544,6 +544,13 @@
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="11" />
+ <customwidgets>
+  <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QSpinBox</extends>
+   <header location="global">ui/scrspinbox.h</header>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>
Index: scribus/ui/cpalette.cpp
===================================================================
--- scribus/ui/cpalette.cpp	(révision 17391)
+++ scribus/ui/cpalette.cpp	(copie de travail)
@@ -76,6 +76,17 @@
 	setupUi(this);
 	fillModeCombo->addItem( tr("Solid") );
 	fillModeCombo->addItem( tr("Gradient") );
+	fillShade->setDecimals(0);
+	strokeShade->setDecimals(0);
+	color1Alpha->setDecimals(0);
+	color2Alpha->setDecimals(0);
+	color3Alpha->setDecimals(0);
+	color4Alpha->setDecimals(0);
+	color1Shade->setDecimals(0);
+	color2Shade->setDecimals(0);
+	color3Shade->setDecimals(0);
+	color4Shade->setDecimals(0);
+	shadeMeshPoint->setDecimals(0);
 	strokeModeCombo->addItem( tr("Solid") );
 	strokeModeCombo->addItem( tr("Gradient") );
 
@@ -96,8 +107,8 @@
 	connect(editFillColorSelector, SIGNAL(clicked()), this, SLOT(editFillColorSelectorButton()));*/
 	connect(tabFillStroke, SIGNAL(currentChanged(int)), this, SLOT(fillStrokeSelector(int)));
 	connect(patternBox, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(selectPattern(QListWidgetItem*)));
-	connect(fillShade, SIGNAL(valueChanged(int)), this, SIGNAL(NewBrushShade(int)));
-	connect(strokeShade, SIGNAL(valueChanged(int)), this, SIGNAL(NewPenShade(int)));
+	connect(fillShade, SIGNAL(valueChanged(double)), this, SIGNAL(NewBrushShade(double)));
+	connect(strokeShade, SIGNAL(valueChanged(double)), this, SIGNAL(NewPenShade(double)));
 	connect(colorListStroke, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(selectColorS(QListWidgetItem*)));
 	connect(colorListFill, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(selectColorF(QListWidgetItem*)));
 	connect(gradEditButton, SIGNAL(clicked()), this, SLOT(editGradientVector()));
@@ -131,17 +142,17 @@
 	connect(colorPoint2, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
 	connect(colorPoint3, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
 	connect(colorPoint4, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
-	connect(color1Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color2Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color3Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color4Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color1Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color2Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color3Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color4Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
+	connect(color1Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color2Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color3Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color4Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color1Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color2Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color3Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color4Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
 	connect(colorMeshPoint, SIGNAL(activated(int)), this, SLOT(updateMeshPoint()));
-	connect(shadeMeshPoint, SIGNAL(valueChanged(int)), this, SLOT(updateMeshPoint()));
-	connect(transparencyMeshPoint, SIGNAL(valueChanged(int)), this, SLOT(updateMeshPoint()));
+	connect(shadeMeshPoint, SIGNAL(valueChanged(double)), this, SLOT(updateMeshPoint()));
+	connect(transparencyMeshPoint, SIGNAL(valueChanged(double)), this, SLOT(updateMeshPoint()));
 	tabFillStroke->setCurrentIndex(0);
 	updateFromItem();
 	/*editFillColorSelector->setChecked(true);
@@ -164,8 +175,8 @@
 {
 	disconnect(this, SIGNAL(NewPen(QString)), 0, 0);
 	disconnect(this, SIGNAL(NewBrush(QString)), 0, 0);
-	disconnect(this, SIGNAL(NewPenShade(int)), 0, 0);
-	disconnect(this, SIGNAL(NewBrushShade(int)), 0, 0);
+	disconnect(this, SIGNAL(NewPenShade(double)), 0, 0);
+	disconnect(this, SIGNAL(NewBrushShade(double)), 0, 0);
 	disconnect(this, SIGNAL(NewGradient(int)), 0, 0);
 	disconnect(this, SIGNAL(NewGradientS(int)), 0, 0);
 	disconnect(this, SIGNAL(NewPattern(QString)), 0, 0);
@@ -201,8 +212,8 @@
 
 		connect(this, SIGNAL(NewPen(QString))      , doc, SLOT(itemSelection_SetItemPen(QString)));
 		connect(this, SIGNAL(NewBrush(QString))    , doc, SLOT(itemSelection_SetItemBrush(QString)));
-		connect(this, SIGNAL(NewPenShade(int))     , this, SLOT(handleStrokeShade(int)));
-		connect(this, SIGNAL(NewBrushShade(int))   , this, SLOT(handleFillShade(int)));
+		connect(this, SIGNAL(NewPenShade(double))     , this, SLOT(handleStrokeShade(double)));
+		connect(this, SIGNAL(NewBrushShade(double))   , this, SLOT(handleFillShade(double)));
 		connect(this, SIGNAL(NewGradient(int))     , doc, SLOT(itemSelection_SetItemGradFill(int)));
 		connect(this, SIGNAL(NewGradientS(int))    , doc, SLOT(itemSelection_SetItemGradStroke(int)));
 		connect(this, SIGNAL(NewPattern(QString))  , doc, SLOT(itemSelection_SetItemPatternFill(QString)));
@@ -240,17 +251,17 @@
 	disconnect(colorPoint2, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
 	disconnect(colorPoint3, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
 	disconnect(colorPoint4, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
-	disconnect(color1Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	disconnect(color2Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	disconnect(color3Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	disconnect(color4Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	disconnect(color1Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	disconnect(color2Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	disconnect(color3Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	disconnect(color4Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
+	disconnect(color1Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	disconnect(color2Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	disconnect(color3Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	disconnect(color4Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	disconnect(color1Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	disconnect(color2Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	disconnect(color3Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	disconnect(color4Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
 	disconnect(colorMeshPoint, SIGNAL(activated(int)), this, SLOT(updateMeshPoint()));
-	disconnect(shadeMeshPoint, SIGNAL(valueChanged(int)), this, SLOT(updateMeshPoint()));
-	disconnect(transparencyMeshPoint, SIGNAL(valueChanged(int)), this, SLOT(updateMeshPoint()));
+	disconnect(shadeMeshPoint, SIGNAL(valueChanged(double)), this, SLOT(updateMeshPoint()));
+	disconnect(transparencyMeshPoint, SIGNAL(valueChanged(double)), this, SLOT(updateMeshPoint()));
 	updateCList();
 	displayOverprint(currentItem->doOverprint ? 1 : 0);
 	displayColorValues(currentItem->lineColor(), currentItem->fillColor(), currentItem->lineShade(), currentItem->fillShade());
@@ -328,17 +339,17 @@
 	connect(colorPoint2, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
 	connect(colorPoint3, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
 	connect(colorPoint4, SIGNAL(activated(int)), this, SLOT(setGradientColors()));
-	connect(color1Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color2Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color3Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color4Alpha, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color1Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color2Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color3Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
-	connect(color4Shade, SIGNAL(valueChanged(int)), this, SLOT(setGradientColors()));
+	connect(color1Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color2Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color3Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color4Alpha, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color1Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color2Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color3Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
+	connect(color4Shade, SIGNAL(valueChanged(double)), this, SLOT(setGradientColors()));
 	connect(colorMeshPoint, SIGNAL(activated(int)), this, SLOT(updateMeshPoint()));
-	connect(shadeMeshPoint, SIGNAL(valueChanged(int)), this, SLOT(updateMeshPoint()));
-	connect(transparencyMeshPoint, SIGNAL(valueChanged(int)), this, SLOT(updateMeshPoint()));
+	connect(shadeMeshPoint, SIGNAL(valueChanged(double)), this, SLOT(updateMeshPoint()));
+	connect(transparencyMeshPoint, SIGNAL(valueChanged(double)), this, SLOT(updateMeshPoint()));
 }
 
 PageItem* Cpalette::currentItemFromSelection()
@@ -441,22 +452,22 @@
 	connect(overPrintCombo, SIGNAL(activated(int)), this, SIGNAL(NewOverprint(int)));
 }
 
-void Cpalette::handleFillShade(int val)
+void Cpalette::handleFillShade(double val)
 {
 	if (currentDoc)
 	{
 		blockUpdates(true);
-		currentDoc->itemSelection_SetItemBrushShade(val);
+		currentDoc->itemSelection_SetItemBrushShade(static_cast<int>(val));
 		blockUpdates(false);
 	}
 }
 
-void Cpalette::handleStrokeShade(int val)
+void Cpalette::handleStrokeShade(double val)
 {
 	if (currentDoc)
 	{
 		blockUpdates(true);
-		currentDoc->itemSelection_SetItemPenShade(val);
+		currentDoc->itemSelection_SetItemPenShade(static_cast<int>(val));
 		blockUpdates(false);
 	}
 }
@@ -500,8 +511,8 @@
 
 void Cpalette::displayColorValues(QString stroke, QString fill, int sShade, int fShade)
 {
-	disconnect(fillShade, SIGNAL(valueChanged(int)), this, SIGNAL(NewBrushShade(int)));
-	disconnect(strokeShade, SIGNAL(valueChanged(int)), this, SIGNAL(NewPenShade(int)));
+	disconnect(fillShade, SIGNAL(valueChanged(double)), this, SIGNAL(NewBrushShade(double)));
+	disconnect(strokeShade, SIGNAL(valueChanged(double)), this, SIGNAL(NewPenShade(double)));
 	disconnect(colorListStroke, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(selectColorS(QListWidgetItem*)));
 	disconnect(colorListFill, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(selectColorF(QListWidgetItem*)));
 	strokeShade->setValue(sShade);
@@ -522,8 +533,8 @@
 	}
 	else
 		colorListFill->setCurrentRow(0);
-	connect(fillShade, SIGNAL(valueChanged(int)), this, SIGNAL(NewBrushShade(int)));
-	connect(strokeShade, SIGNAL(valueChanged(int)), this, SIGNAL(NewPenShade(int)));
+	connect(fillShade, SIGNAL(valueChanged(double)), this, SIGNAL(NewBrushShade(double)));
+	connect(strokeShade, SIGNAL(valueChanged(double)), this, SIGNAL(NewPenShade(double)));
 	connect(colorListStroke, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(selectColorS(QListWidgetItem*)));
 	connect(colorListFill, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(selectColorF(QListWidgetItem*)));
 }
@@ -644,7 +655,7 @@
 	double t2 = color2Alpha->value() / 100.0;
 	double t3 = color3Alpha->value() / 100.0;
 	double t4 = color4Alpha->value() / 100.0;
-	currentItem->set4ColorShade(color1Shade->value(), color2Shade->value(), color3Shade->value(), color4Shade->value());
+	currentItem->set4ColorShade(static_cast<int>(color1Shade->value()), static_cast<int>(color2Shade->value()), static_cast<int>(color3Shade->value()), static_cast<int>(color4Shade->value()));
 	currentItem->set4ColorTransparency(t1, t2, t3, t4);
 	currentItem->set4ColorColors(color1, color2, color3, color4);
 	currentItem->update();
@@ -1406,7 +1417,7 @@
 	if (color == CommonStrings::tr_NoneColor)
 		color = CommonStrings::None;
 	double t = transparencyMeshPoint->value() / 100.0;
-	currentItem->setMeshPointColor(currentItem->selectedMeshPointX, currentItem->selectedMeshPointY, color, shadeMeshPoint->value(), t, currentDoc->view()->editStrokeGradient == 8);
+	currentItem->setMeshPointColor(currentItem->selectedMeshPointX, currentItem->selectedMeshPointY, color, static_cast<int>(shadeMeshPoint->value()), t, currentDoc->view()->editStrokeGradient == 8);
 	currentItem->update();
 	currentDoc->regionsChanged()->update(QRect());
 }
Index: scribus/ui/cpalette.h
===================================================================
--- scribus/ui/cpalette.h	(révision 17391)
+++ scribus/ui/cpalette.h	(copie de travail)
@@ -84,8 +84,8 @@
 	void displayColorValues(QString stroke, QString fille, int sShade, int fShade);
 	void displayGradient(int nr);
 	void displayOverprint(int);
-	void handleFillShade(int);
-	void handleStrokeShade(int);
+	void handleFillShade(double);
+	void handleStrokeShade(double);
 	void handleOverprint(int);
 	void handleFillGradient();
 	void handleStrokeGradient();
@@ -131,8 +131,8 @@
 signals:
 	void NewPen(QString);
 	void NewBrush(QString);
-	void NewPenShade(int);
-	void NewBrushShade(int);
+	void NewPenShade(double);
+	void NewBrushShade(double);
 	void NewGradient(int);
 	void NewGradientS(int);
 	void NewPattern(QString);
Index: scribus/ui/colorpalette.ui
===================================================================
--- scribus/ui/colorpalette.ui	(révision 17391)
+++ scribus/ui/colorpalette.ui	(copie de travail)
@@ -80,7 +80,7 @@
               </widget>
              </item>
              <item>
-              <widget class="QSpinBox" name="fillShade">
+              <widget class="ScrSpinBox" name="fillShade">
                <property name="suffix">
                 <string>%</string>
                </property>
@@ -221,7 +221,7 @@
                   </widget>
                  </item>
                  <item row="1" column="1">
-                  <widget class="QSpinBox" name="color1Shade">
+                  <widget class="ScrSpinBox" name="color1Shade">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -240,7 +240,7 @@
                   </widget>
                  </item>
                  <item row="1" column="2">
-                  <widget class="QSpinBox" name="color1Alpha">
+                  <widget class="ScrSpinBox" name="color1Alpha">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -266,7 +266,7 @@
                   </widget>
                  </item>
                  <item row="2" column="1">
-                  <widget class="QSpinBox" name="color2Shade">
+                  <widget class="ScrSpinBox" name="color2Shade">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -285,7 +285,7 @@
                   </widget>
                  </item>
                  <item row="2" column="2">
-                  <widget class="QSpinBox" name="color2Alpha">
+                  <widget class="ScrSpinBox" name="color2Alpha">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -311,7 +311,7 @@
                   </widget>
                  </item>
                  <item row="3" column="1">
-                  <widget class="QSpinBox" name="color3Shade">
+                  <widget class="ScrSpinBox" name="color3Shade">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -330,7 +330,7 @@
                   </widget>
                  </item>
                  <item row="3" column="2">
-                  <widget class="QSpinBox" name="color3Alpha">
+                  <widget class="ScrSpinBox" name="color3Alpha">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -356,7 +356,7 @@
                   </widget>
                  </item>
                  <item row="4" column="1">
-                  <widget class="QSpinBox" name="color4Shade">
+                  <widget class="ScrSpinBox" name="color4Shade">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -375,7 +375,7 @@
                   </widget>
                  </item>
                  <item row="4" column="2">
-                  <widget class="QSpinBox" name="color4Alpha">
+                  <widget class="ScrSpinBox" name="color4Alpha">
                    <property name="suffix">
                     <string> %</string>
                    </property>
@@ -439,7 +439,7 @@
                   </widget>
                  </item>
                  <item row="1" column="1">
-                  <widget class="QSpinBox" name="shadeMeshPoint">
+                  <widget class="ScrSpinBox" name="shadeMeshPoint">
                    <property name="enabled">
                     <bool>false</bool>
                    </property>
@@ -468,7 +468,7 @@
                   </widget>
                  </item>
                  <item row="2" column="1">
-                  <widget class="QSpinBox" name="transparencyMeshPoint">
+                  <widget class="ScrSpinBox" name="transparencyMeshPoint">
                    <property name="enabled">
                     <bool>false</bool>
                    </property>
@@ -655,7 +655,7 @@
               </widget>
              </item>
              <item>
-              <widget class="QSpinBox" name="strokeShade">
+              <widget class="ScrSpinBox" name="strokeShade">
                <property name="suffix">
                 <string>%</string>
                </property>
@@ -842,6 +842,11 @@
  </widget>
  <customwidgets>
   <customwidget>
+   <class>ScrSpinBox</class>
+   <extends>QSpinBox</extends>
+   <header location="global">ui/scrspinbox.h</header>
+  </customwidget>
+  <customwidget>
    <class>ScComboBox</class>
    <extends>QComboBox</extends>
    <header>ui/sccombobox.h</header>
Index: scribus/ui/annota.cpp
===================================================================
--- scribus/ui/annota.cpp	(révision 17391)
+++ scribus/ui/annota.cpp	(copie de travail)
@@ -24,7 +24,6 @@
 #include <QGroupBox>
 #include <QLineEdit>
 #include <QPushButton>
-#include <QSpinBox>
 #include <QPixmap>
 #include <QStringList>
 #include <QCheckBox>
@@ -40,6 +39,7 @@
 #include "scribusview.h"
 #include "util_icon.h"
 #include "util_formats.h"
+#include "ui/scrspinbox.h"
 
 Annota::Annota(QWidget* parent, PageItem *it, int Seite, int b, int h, ScribusView* vie) : QDialog(parent)
 {
@@ -141,7 +141,8 @@
 		useAbsolute->hide();
 	}
 
-	SpinBox1 = new QSpinBox( GroupBox1);
+	SpinBox1 = new ScrSpinBox( GroupBox1);
+	SpinBox1->setDecimals(0);
 	SpinBox1->setMinimum(1);
 	SpinBox1->setMaximum(((item->annotation().ActionType() == 7) || (item->annotation().ActionType() == 9)) ? 1000 : Seite);
 	TextLabel3 = new QLabel( tr("&Page:"), GroupBox1);
@@ -164,7 +165,8 @@
 	Pg->setMinimumSize(QSize(Pg->pmx.width(), Pg->pmx.height()));
 	GroupBox1Layout->addWidget(Pg, 2, 2, 3, 1);
 
-	SpinBox2 = new QSpinBox( GroupBox1);
+	SpinBox2 = new ScrSpinBox( GroupBox1);
+	SpinBox2->setDecimals(0);
 	SpinBox2->setSuffix( tr( " pt" ) );
 	SpinBox2->setMaximum(Width);
 	SpinBox2->setValue(tl[0].toInt());
@@ -172,7 +174,8 @@
 	TextLabel4->setBuddy(SpinBox2);
 	GroupBox1Layout->addWidget( TextLabel4, 3, 0 );
 	GroupBox1Layout->addWidget( SpinBox2, 3, 1 );
-	SpinBox3 = new QSpinBox( GroupBox1 );
+	SpinBox3 = new ScrSpinBox( GroupBox1 );
+	SpinBox3->setDecimals(0);
 	SpinBox3->setMaximum(Height);
 	SpinBox3->setSuffix( tr( " pt" ) );
 	SpinBox3->setValue(Height-tl[1].toInt());
@@ -198,10 +201,10 @@
 	connect(PushButton1, SIGNAL(clicked()), this, SLOT(SetValues()));
 	connect(PushButton2, SIGNAL(clicked()), this, SLOT(reject()));
 	connect(ComboBox1, SIGNAL(activated(int)), this, SLOT(SetTarget(int)));
-	connect(SpinBox1, SIGNAL(valueChanged(int)), this, SLOT(SetPage(int)));
+	connect(SpinBox1, SIGNAL(valueChanged(double)), this, SLOT(SetPage(double)));
 	connect(Pg, SIGNAL(Coords(double, double)), this, SLOT(SetCoords(double, double)));
-	connect(SpinBox2, SIGNAL(valueChanged(int)), this, SLOT(SetCross()));
-	connect(SpinBox3, SIGNAL(valueChanged(int)), this, SLOT(SetCross()));
+	connect(SpinBox2, SIGNAL(valueChanged(double)), this, SLOT(SetCross()));
+	connect(SpinBox3, SIGNAL(valueChanged(double)), this, SLOT(SetCross()));
 	connect(ChFile, SIGNAL(clicked()), this, SLOT(GetFile()));
 	if (view->Doc->masterPageMode())
 		SetTarget(item->annotation().Type() - 1);
@@ -216,15 +219,15 @@
 	SpinBox3->setValue(static_cast<int>(y*Height));
 }
 
-void Annota::SetPage(int v)
+void Annota::SetPage(double v)
 {
-	disconnect(SpinBox1, SIGNAL(valueChanged(int)), this, SLOT(SetPage(int)));
+	disconnect(SpinBox1, SIGNAL(valueChanged(double)), this, SLOT(SetPage(double)));
 	int link = 2;
 	if (view->Doc->masterPageMode())
 		link = 1;
 	if (ComboBox1->currentIndex() == link)
 	{
-		if (!Pg->SetSeite(v, 100, Destfile->text()))
+		if (!Pg->SetSeite(static_cast<int>(v), 100, Destfile->text()))
 		{
 			SpinBox1->setValue(1);
 			Pg->SetSeite(1, 100, Destfile->text());
@@ -234,22 +237,22 @@
 	}
 	else
 	{
-		Pg->SetSeite(qMin(v-1, MaxSeite-1), 100);
-		SpinBox1->setValue(qMin(v, MaxSeite));
+		Pg->SetSeite(qMin(static_cast<int>(v)-1, MaxSeite-1), 100);
+		SpinBox1->setValue(qMin(static_cast<int>(v), MaxSeite));
 		Width = OriWidth;
 		Height = OriHeight;
 	}
 	SpinBox2->setMaximum(Width);
 	SpinBox3->setMaximum(Height);
-	connect(SpinBox1, SIGNAL(valueChanged(int)), this, SLOT(SetPage(int)));
+	connect(SpinBox1, SIGNAL(valueChanged(double)), this, SLOT(SetPage(double)));
 }
 
 void Annota::SetCross()
 {
 	int x,y;
 	disconnect(Pg, SIGNAL(Coords(double, double)), this, SLOT(SetCoords(double, double)));
-	x = static_cast<int>(static_cast<double>(SpinBox2->value())/static_cast<double>(Width)*Pg->pmx.width());
-	y = static_cast<int>(static_cast<double>(SpinBox3->value())/static_cast<double>(Height)*Pg->pmx.height());
+	x = static_cast<int>(SpinBox2->value()/static_cast<double>(Width)*Pg->pmx.width());
+	y = static_cast<int>(SpinBox3->value()/static_cast<double>(Height)*Pg->pmx.height());
 	Pg->drawMark(x, y);
 	connect(Pg, SIGNAL(Coords(double, double)), this, SLOT(SetCoords(double, double)));
 }
@@ -319,7 +322,7 @@
 		ChFile->hide();
 		useAbsolute->hide();
 		item->annotation().setActionType(2);
-		SetPage(qMin(SpinBox1->value(), MaxSeite));
+		SetPage(qMin(static_cast<int>(SpinBox1->value()), MaxSeite));
 		break;
 	case 2:
 		Fram->setCurrentIndex(1);
@@ -351,7 +354,7 @@
 			else
 				item->annotation().setActionType(7);
 		}
-		SetPage(qMin(SpinBox1->value(), MaxSeite));
+		SetPage(qMin(static_cast<int>(SpinBox1->value()), MaxSeite));
 		break;
 	case 3:
 		Fram->setCurrentIndex(1);
@@ -392,7 +395,7 @@
 			SpinBox3->hide();
 		}
 		if (Pg->isVisible())
-			SetPage(qMin(SpinBox1->value(), MaxSeite));
+			SetPage(qMin(static_cast<int>(SpinBox1->value()), MaxSeite));
 		break;
 	default:
 		Fram->setCurrentIndex(0);
Index: scribus/ui/annota.h
===================================================================
--- scribus/ui/annota.h	(révision 17391)
+++ scribus/ui/annota.h	(copie de travail)
@@ -26,7 +26,7 @@
 class QGroupBox;
 class QLineEdit;
 class QPushButton;
-class QSpinBox;
+class ScrSpinBox;
 class QCheckBox;
 
 #include "scribusapi.h"
@@ -53,9 +53,9 @@
 	QPushButton* ChFile;
 	QCheckBox* useAbsolute;
 	Navigator* Pg;
-	QSpinBox* SpinBox1;
-	QSpinBox* SpinBox2;
-	QSpinBox* SpinBox3;
+	ScrSpinBox* SpinBox1;
+	ScrSpinBox* SpinBox2;
+	ScrSpinBox* SpinBox3;
 	QFrame* Frame9;
 	QPushButton* PushButton1;
 	QPushButton* PushButton2;
@@ -69,7 +69,7 @@
 
 public slots:
 	void SetCoords(double x, double y);
-	void SetPage(int v);
+	void SetPage(double v);
 	void SetCross();
 	void SetValues();
 	void SetTarget(int i);
Index: scribus/ui/applytemplatedialog.cpp
===================================================================
--- scribus/ui/applytemplatedialog.cpp	(révision 17391)
+++ scribus/ui/applytemplatedialog.cpp	(copie de travail)
@@ -96,17 +96,19 @@
 	useRangeCheckBox->setEnabled( false );	
 	rangeLayout->addWidget( useRangeCheckBox );
 
-	fromPageSpinBox = new QSpinBox( applyToPageButtonGroup );
+	fromPageSpinBox = new ScrSpinBox( applyToPageButtonGroup );
 	fromPageSpinBox->setEnabled( false );
 	fromPageSpinBox->setMinimum( 1 );
+	fromPageSpinBox->setDecimals(0);
 	rangeLayout->addWidget( fromPageSpinBox );
 
 	toPageLabel = new QLabel( applyToPageButtonGroup );
 	rangeLayout->addWidget( toPageLabel );
 
-	toPageSpinBox = new QSpinBox( applyToPageButtonGroup );
+	toPageSpinBox = new ScrSpinBox( applyToPageButtonGroup );
 	toPageSpinBox->setEnabled( false );
 	toPageSpinBox->setMinimum( 1 );
+	toPageSpinBox->setDecimals(0);
 	rangeLayout->addWidget( toPageSpinBox );
 	spacer3 = new QSpacerItem( 1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum );
 	rangeLayout->addItem( spacer3 );
@@ -134,8 +136,8 @@
 	connect( evenPagesRadioButton, SIGNAL( clicked() ), this, SLOT( rangeSelectable() ) );
 	connect( oddPagesRadioButton, SIGNAL( clicked() ), this, SLOT( rangeSelectable() ) );
 	connect( allPagesRadioButton, SIGNAL( clicked() ), this, SLOT( rangeSelectable() ) );
-	connect( fromPageSpinBox, SIGNAL( valueChanged(const QString&) ), this, SLOT( checkRangeFrom() ) );
-	connect( toPageSpinBox, SIGNAL( valueChanged(int) ), this, SLOT( checkRangeTo() ) );
+	connect( fromPageSpinBox, SIGNAL( valueChanged(double) ), this, SLOT( checkRangeFrom() ) );
+	connect( toPageSpinBox, SIGNAL( valueChanged(double) ), this, SLOT( checkRangeTo() ) );
 	connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
 	connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
 
@@ -193,22 +195,22 @@
 
 void ApplyMasterPageDialog::checkRangeFrom()
 {
-	disconnect(fromPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeFrom()));
-	disconnect(toPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeTo()));
+	disconnect(fromPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeFrom()));
+	disconnect(toPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeTo()));
 	if (fromPageSpinBox->value() > toPageSpinBox->value())
 		toPageSpinBox->setValue(fromPageSpinBox->value());
-	connect(fromPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeFrom()));
-	connect(toPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeTo()));
+	connect(fromPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeFrom()));
+	connect(toPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeTo()));
 }
 
 void ApplyMasterPageDialog::checkRangeTo()
 {
-	disconnect(fromPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeFrom()));
-	disconnect(toPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeTo()));
+	disconnect(fromPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeFrom()));
+	disconnect(toPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeTo()));
 	if (toPageSpinBox->value() < fromPageSpinBox->value())
 		fromPageSpinBox->setValue(toPageSpinBox->value());
-	connect(fromPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeFrom()));
-	connect(toPageSpinBox, SIGNAL(valueChanged(int)), this, SLOT(checkRangeTo()));
+	connect(fromPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeFrom()));
+	connect(toPageSpinBox, SIGNAL(valueChanged(double)), this, SLOT(checkRangeTo()));
 }
 
 void ApplyMasterPageDialog::enableRange( bool enabled )
@@ -240,7 +242,7 @@
 int ApplyMasterPageDialog::getFromPage()
 {
 	if (useRangeCheckBox->isChecked())
-		return fromPageSpinBox->value();
+		return static_cast<int>(fromPageSpinBox->value());
 	return -1;
 }
 
@@ -248,7 +250,7 @@
 int ApplyMasterPageDialog::getToPage()
 {
 	if (useRangeCheckBox->isChecked())
-		return toPageSpinBox->value();
+		return static_cast<int>(toPageSpinBox->value());
 	return -1;
 }
 
Index: scribus/ui/applytemplatedialog.h
===================================================================
--- scribus/ui/applytemplatedialog.h	(révision 17391)
+++ scribus/ui/applytemplatedialog.h	(copie de travail)
@@ -21,6 +21,7 @@
 #include "scribusapi.h"
 #include "scribusdoc.h"
 #include "scpage.h"
+#include "ui/scrspinbox.h"
 
 class QCheckBox;
 class QComboBox;
@@ -31,7 +32,6 @@
 class QPushButton;
 class QRadioButton;
 class QSpacerItem;
-class QSpinBox;
 class QVBoxLayout;
 
 class SCRIBUS_API ApplyMasterPageDialog : public QDialog
@@ -52,9 +52,9 @@
 	QRadioButton* oddPagesRadioButton;
 	QRadioButton* allPagesRadioButton;
 	QCheckBox* useRangeCheckBox;
-	QSpinBox* fromPageSpinBox;
+	ScrSpinBox* fromPageSpinBox;
 	QLabel* toPageLabel;
-	QSpinBox* toPageSpinBox;
+	ScrSpinBox* toPageSpinBox;
 	QPushButton* okButton;
 	QPushButton* cancelButton;
 
updatevalue.diff (97,977 bytes)   

plinnell

2012-04-06 05:33

viewer   ~0027903

Reminder sent to: cbradney, fschmid, jghali

please review this patch with an eye towards GSOC

fschmid

2012-04-06 09:36

developer   ~0027904

I'm feeling uncomfortable with that editingFinished() signal use, as this will require the user to set focus on the spinbox first and then pressing enter even if he will only use the up/down buttons.

Chelen

2012-04-06 11:01

reporter   ~0027905

Yes, I notice that. That is why in the last diff, I remove editingFinished() and change QPsinBox in ScrSpinBox to have the correct behaviour.

Issue History

Date Modified Username Field Change
2012-02-04 02:58 Thaddeus New Issue
2012-03-22 00:26 Chelen File Added: validupdate.diff
2012-03-22 00:31 Chelen Note Added: 0027843
2012-03-22 01:07 Chelen File Added: validupdaterevised.diff
2012-03-22 08:14 ale Note Added: 0027845
2012-03-24 15:03 Chelen Note Added: 0027856
2012-03-24 15:03 Chelen File Added: updatevalue.diff
2012-04-06 05:33 plinnell Note Added: 0027903
2012-04-06 09:36 fschmid Note Added: 0027904
2012-04-06 11:01 Chelen Note Added: 0027905
2012-04-07 20:01 fschmid Status new => resolved
2012-04-07 20:01 fschmid Fixed in Version => 1.5.0svn
2012-04-07 20:01 fschmid Resolution open => fixed
2012-04-07 20:01 fschmid Assigned To => fschmid
2012-04-29 10:53 cbradney Status resolved => closed