+diff -urN scribus-1.2.0.final/scribus/newfile.cpp ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/newfile.cpp
+--- scribus-1.2.0.final/scribus/newfile.cpp 2004-08-25 17:41:13.000000000 -0500
++++ ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/newfile.cpp 2004-08-31 18:27:31.000000000 -0500
+@@ -1,6 +1,12 @@
+ #include "newfile.h"
+ #include "newfile.moc"
+ #include <qtooltip.h>
++
++// definitions for clear reading the code - pv
++#define PORTRAIT 0
++#define LANDSCAPE 1
++#define USERFORMAT 30
++
+ extern QPixmap loadIcon(QString nam);
+
+ NewDoc::NewDoc( QWidget* parent, preV *Vor )
+@@ -8,27 +14,14 @@
+ {
+ QString units[] = { tr(" pt"), tr(" mm"), tr(" in"), tr(" p")};
+ int decimals;
+- ein = units[Vor->Einheit];
+- switch (Vor->Einheit)
+- {
+- case 0:
+- Umrech = 1.0;
+- decimals = 2;
+- break;
+- case 1:
+- Umrech = 0.3527777;
+- decimals = 3;
+- break;
+- case 2:
+- Umrech = 1.0 / 72.0;
+- decimals = 4;
+- break;
+- case 3:
+- Umrech = 1.0 / 12.0;
+- decimals = 2;
+- break;
+- }
++ // pv - removed switch hell
++ double umr[] = {1.0, 0.3527777, (1.0 / 72.0), (1.0 / 12.0)};
++ int dec[] = {2, 3, 4, 2};
++
+ einheit = Vor->Einheit;
++ ein = units[einheit];
++ Umrech = umr[einheit];
++ decimals = dec[einheit];
+ Orient = 0;
+ setCaption( tr( "New Document" ) );
+ setIcon(loadIcon("AppIcon.png"));
+@@ -270,6 +263,15 @@
+
+ void NewDoc::code_repeat(int m)
+ {
++ // #869 pv - auto-flip landscape/portrait based on the height:width ratio
++ if (ComboBox1->currentItem() == USERFORMAT)
++ {
++ if (Breite->value() > Hoehe->value())
++ ComboBox2->setCurrentItem(LANDSCAPE);
++ else
++ ComboBox2->setCurrentItem(PORTRAIT);
++ } // end of #869
++
+ switch (m)
+ {
+ case 0 :
+@@ -339,6 +341,10 @@
+ int decimals;
+ double AltUmrech = Umrech;
+ double val, oldB, oldBM, oldH, oldHM;
++ // pv - removed switch hell
++ double umr[] = {1.0, 0.3527777, (1.0 / 72.0), (1.0 / 12.0)};
++ int dec[] = {100, 1000, 10000, 100};
++
+ disconnect(Breite, SIGNAL(valueChanged(int)), this, SLOT(setBreite(int)));
+ disconnect(Hoehe, SIGNAL(valueChanged(int)), this, SLOT(setHoehe(int)));
+ disconnect(TopR, SIGNAL(valueChanged(int)), this, SLOT(setTop(int)));
+@@ -351,25 +357,9 @@
+ Hoehe->getValues(&oldH, &oldHM, &decimals, &val);
+ oldH /= AltUmrech;
+ oldHM /= AltUmrech;
+- switch (u)
+- {
+- case 0:
+- Umrech = 1.0;
+- decimals = 100;
+- break;
+- case 1:
+- Umrech = 0.3527777;
+- decimals = 1000;
+- break;
+- case 2:
+- Umrech = 1.0 / 72.0;
+- decimals = 10000;
+- break;
+- case 3:
+- Umrech = 1.0 / 12.0;
+- decimals = 100;
+- break;
+- }
++
++ Umrech = umr[u];
++ decimals = dec[u];
+ einheit = u;
+ Breite->setValues(oldB * Umrech, oldBM * Umrech, decimals, Pagebr * Umrech);
+ Hoehe->setValues(oldH * Umrech, oldHM * Umrech, decimals, Pageho * Umrech);
+@@ -396,20 +386,9 @@
+
+ void NewDoc::ExitOK()
+ {
+- if (ComboBox1->currentItem() == 30)
+- {
+ Pagebr = Breite->value() / Umrech;
+ Pageho = Hoehe->value() / Umrech;
+ accept();
+- return;
+- }
+- if (Orient == 1)
+- {
+- double br = Pagebr;
+- Pagebr = Pageho;
+- Pageho = br;
+- }
+- accept();
+ }
+
+ void NewDoc::setOrien(int ori)
+@@ -423,10 +402,10 @@
+ Breite->setValue(Hoehe->value());
+ Hoehe->setValue(br);
+ }
+- if (ori == 0)
+- Orient = 0;
+- else
+- Orient = 1;
++ // #869 pv - defined constants added + code repeat (check w/h)
++ (ori == PORTRAIT) ? Orient = PORTRAIT : Orient = LANDSCAPE;
++ code_repeat(666); // just check w/h
++ // end of #869
+ RightR->setMaxValue(Breite->value() - LeftR->value());
+ LeftR->setMaxValue(Breite->value() - RightR->value());
+ TopR->setMaxValue(Hoehe->value() - BottomR->value());
+@@ -437,7 +416,7 @@
+
+ void NewDoc::setPGsize()
+ {
+- if (ComboBox1->currentItem() == 30)
++ if (ComboBox1->currentItem() == USERFORMAT)
+ setSize(ComboBox1->currentItem());
+ else
+ {
+@@ -458,15 +437,22 @@
+ 355, 250, 178, 125, 89, 462, 298, 312, 542, 595, 1224, 612, 612, 792};
+ int page_y[] = {3368, 2380, 1684, 1190, 842, 595, 421, 297, 210, 148, 4008, 2836, 2004, 1418, 1002, 709,
+ 501, 355, 250, 178, 125, 649, 683, 624, 720, 935, 792, 1008, 792, 1225};
+- if (gr == 30)
++ if (gr == USERFORMAT)
+ {
+ Breite->setEnabled(true);
+ Hoehe->setEnabled(true);
+ }
+ else
+ {
++ // pv - correct handling of the disabled spins
++ if (ComboBox2->currentItem() == PORTRAIT)
++ {
+ Pagebr = page_x[gr];
+ Pageho = page_y[gr];
++ } else {
++ Pagebr = page_y[gr];
++ Pageho = page_x[gr];
++ }
+ }
+ Breite->setValue(Pagebr * Umrech);
+ Hoehe->setValue(Pageho * Umrech);
+diff -urN scribus-1.2.0.final/scribus/page.cpp ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/page.cpp
+--- scribus-1.2.0.final/scribus/page.cpp 2004-08-25 17:27:25.000000000 -0500
++++ ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/page.cpp 2004-08-31 18:27:31.000000000 -0500
+@@ -5464,12 +5464,42 @@
+ if (!inText)
+ {
+ Deselect(true);
++ slotDoCurs(true);
+ if (!SeleItem(m))
+ {
+- slotDoCurs(true);
+ emit Amode(1);
+ return;
+ }
++ else
++ {
++ b = doku->ActPage->SelItem.at(0);
++ if ((m->button() == MidButton) && (b->PType == 4))
++ {
++ Mpressed = false;
++ MidButt = false;
++ QString cc;
++ cc = QApplication::clipboard()->text(QClipboard::Selection);
++ if (cc.isNull())
++ cc = QApplication::clipboard()->text(QClipboard::Clipboard);
++ if (!cc.isNull())
++ {
++ Serializer *ss = new Serializer("");
++ ss->Objekt = cc;
++ int st = doku->CurrentABStil;
++ ss->GetText(b, st, doku->Vorlagen[st].Font, doku->Vorlagen[st].FontSize, true);
++ delete ss;
++ if (doku->Trenner->AutoCheck)
++ doku->Trenner->slotHyphenate(b);
++ }
++ else
++ {
++ if (ScApp->Buffer2.startsWith("<SCRIBUSTEXT"))
++ ScApp->slotEditPaste();
++ }
++ RefreshItem(b);
++ }
++ return;
++ }
+ }
+ b = doku->ActPage->SelItem.at(0);
+ oldCp = b->CPos;
+@@ -5494,6 +5524,34 @@
+ qApp->setOverrideCursor(QCursor(ArrowCursor), true);
+ }
+ }
++ else
++ {
++ if ((m->button() == MidButton) && (b->PType == 4))
++ {
++ Mpressed = false;
++ MidButt = false;
++ QString cc;
++ cc = QApplication::clipboard()->text(QClipboard::Selection);
++ if (cc.isNull())
++ cc = QApplication::clipboard()->text(QClipboard::Clipboard);
++ if (!cc.isNull())
++ {
++ Serializer *ss = new Serializer("");
++ ss->Objekt = cc;
++ int st = doku->CurrentABStil;
++ ss->GetText(b, st, doku->Vorlagen[st].Font, doku->Vorlagen[st].FontSize, true);
++ delete ss;
++ if (doku->Trenner->AutoCheck)
++ doku->Trenner->slotHyphenate(b);
++ }
++ else
++ {
++ if (ScApp->Buffer2.startsWith("<SCRIBUSTEXT"))
++ ScApp->slotEditPaste();
++ }
++ RefreshItem(b);
++ }
++ }
+ break;
+ case 8:
+ SeleItem(m);
+diff -urN scribus-1.2.0.final/scribus/scribus.cpp ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/scribus.cpp
+--- scribus-1.2.0.final/scribus/scribus.cpp 2004-08-23 17:06:34.000000000 -0500
++++ ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/scribus.cpp 2004-08-31 18:27:32.000000000 -0500
+@@ -4233,9 +4233,9 @@
+ {
+ QString cc;
+ #if QT_VERSION >= 0x030100
+- cc = ClipB->text(QClipboard::Clipboard);
++ cc = ClipB->text(QClipboard::Selection);
+ if (cc.isNull())
+- cc = ClipB->text(QClipboard::Selection);
++ cc = ClipB->text(QClipboard::Clipboard);
+ #else
+ cc = ClipB->text();
+ #endif
+diff -urN scribus-1.2.0.final/scribus/seiten.cpp ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/seiten.cpp
+--- scribus-1.2.0.final/scribus/seiten.cpp 2004-08-01 10:42:03.000000000 -0500
++++ ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/seiten.cpp 2004-08-31 18:27:32.000000000 -0500
+@@ -813,16 +813,18 @@
+ {
+ QString tmp;
+ QPainter p;
+- p.begin(&ret);
+- p.setBrush(white);
+- p.setBackgroundColor(white);
+- p.setBackgroundMode(QPainter::OpaqueMode);
+- p.setPen(QPen(black, 1, SolidLine, FlatCap, MiterJoin));
+- p.setFont(QFont("Helvetica", 12, QFont::Bold));
+- tmp = tmp.setNum(nr+1);
+- QRect b = p.boundingRect(3,0, ret.width(), ret.height(), Qt::AlignCenter, tmp);
+- p.drawRect(QRect(b.x()-2, b.y()-2, b.width()+4, b.height()+4));
+- p.drawText(b, Qt::AlignCenter, tmp);
+- p.end();
++ if (p.begin(&ret))
++ {
++ p.setBrush(white);
++ p.setBackgroundColor(white);
++ p.setBackgroundMode(QPainter::OpaqueMode);
++ p.setPen(QPen(black, 1, SolidLine, FlatCap, MiterJoin));
++ p.setFont(QFont("Helvetica", 12, QFont::Bold));
++ tmp = tmp.setNum(nr+1);
++ QRect b = p.boundingRect(3,0, ret.width(), ret.height(), Qt::AlignCenter, tmp);
++ p.drawRect(QRect(b.x()-2, b.y()-2, b.width()+4, b.height()+4));
++ p.drawText(b, Qt::AlignCenter, tmp);
++ p.end();
++ }
+ return ret;
+ }
+diff -urN scribus-1.2.0.final/scribus/story.cpp ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/story.cpp
+--- scribus-1.2.0.final/scribus/story.cpp 2004-08-24 16:47:54.000000000 -0500
++++ ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/story.cpp 2004-08-31 18:27:32.000000000 -0500
+@@ -159,6 +159,7 @@
+ viewport()->setAcceptDrops(false);
+ ClipData = 0;
+ connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(ClipChange()));
++ connect(QApplication::clipboard(), SIGNAL(selectionChanged()), this, SLOT(SelClipChange()));
+ }
+
+ void SEditor::keyPressEvent(QKeyEvent *k)
+@@ -1171,11 +1172,13 @@
+ if ((hasSelectedText()) && (selectedText() != ""))
+ {
+ disconnect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(ClipChange()));
++ disconnect(QApplication::clipboard(), SIGNAL(selectionChanged()), this, SLOT(SelClipChange()));
+ tBuffer = selectedText();
+ copyStyledText();
+ QApplication::clipboard()->setText(tBuffer, QClipboard::Clipboard);
+ ClipData = 1;
+ connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(ClipChange()));
++ connect(QApplication::clipboard(), SIGNAL(selectionChanged()), this, SLOT(SelClipChange()));
+ emit PasteAvail();
+ }
+ emit SideBarUp(true);
+@@ -1198,19 +1201,29 @@
+ {
+ emit SideBarUp(false);
+ int p, i;
++ QString data = "";
+ getCursorPosition(&p, &i);
+- if (ClipData == 2)
++ if (ClipData == 1)
++ insStyledText();
++ else
+ {
+- QString data = QApplication::clipboard()->text(QClipboard::Clipboard);
++ QString data = QApplication::clipboard()->text(QClipboard::Selection);
++ if (data.isNull())
++ data = QApplication::clipboard()->text(QClipboard::Clipboard);
+ if (!data.isNull())
+ {
+ data.replace(QRegExp("\r"), "");
+ data.replace(QRegExp("\n"), QChar(13));
+ insChars(data);
++ ClipData = 2;
++ emit PasteAvail();
++ }
++ else
++ {
++ emit SideBarUp(true);
++ return;
+ }
+ }
+- else
+- insStyledText();
+ updateAll();
+ emit SideBarUp(true);
+ emit SideBarUpdate();
+@@ -1226,6 +1239,12 @@
+ return p;
+ }
+
++void SEditor::SelClipChange()
++{
++ ClipData = 3;
++ emit PasteAvail();
++}
++
+ void SEditor::ClipChange()
+ {
+ ClipData = 2;
+diff -urN scribus-1.2.0.final/scribus/story.h ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/story.h
+--- scribus-1.2.0.final/scribus/story.h 2004-08-20 16:38:23.000000000 -0500
++++ ../../../2004-08-31/scribus-1.2.0.final+cvs20040831/scribus/story.h 2004-08-31 18:27:32.000000000 -0500
+@@ -114,6 +114,7 @@
+ void copy();
+ void paste();
+ void ClipChange();
++ void SelClipChange();
+
+ signals:
+ void setProps(int, int);