Index: Scribus/scribus/hyphenator.cpp
===================================================================
--- Scribus/scribus/hyphenator.cpp	(wersja 16448)
+++ Scribus/scribus/hyphenator.cpp	(kopia robocza)
@@ -215,9 +215,15 @@
        while ((firstC+Ccount < signed(text.length())) && (firstC != -1) &&
                        (lastC < signed(text.length())))
        {
+		int parHyphMode = it->itemText.paragraphStyle(firstC).hyphenationMode();
                firstC = text.indexOf(wordBoundary, firstC+Ccount);
                if (firstC < 0)
                        break;
+		if (parHyphMode == ParagraphStyle::NoHyphenation)
+		{
+			firstC = it->itemText.endOfParagraph(it->itemText.nrOfParagraph(firstC));
+			continue;
+		}
                if (firstC > 0 && text.at(firstC-1) == SpecialChars::SHYPHEN)
                {
                        Ccount = 1;
@@ -274,7 +280,7 @@
                                {
                                        if (!hasHyphen)
                                                it->itemText.hyphenateWord(startC + firstC, found.length(), NULL);
-					else if (Automatic)
+					else if (Automatic && parHyphMode == ParagraphStyle::AutomaticHyphenation)
                                        {
                                                if (specialWords.contains(found2))
                                                {
Index: Scribus/scribus/smpstylewidget.h
===================================================================
--- Scribus/scribus/smpstylewidget.h	(wersja 16448)
+++ Scribus/scribus/smpstylewidget.h	(kopia robocza)
@@ -47,6 +47,7 @@
        void showCStyle(QList<ParagraphStyle*> &pstyles, QList<CharStyle> &cstyles, const QString &defLang, int unitIndex);
        void showParent(QList<ParagraphStyle*> &pstyles);
        void setOpticalMargins(int o, bool inhO=false, const ParagraphStyle *parent=NULL);
+	void showHyphenationMode(QList<ParagraphStyle*> &pstyles);

        friend class SMParagraphStyle;

Index: Scribus/scribus/smpstylewidget.cpp
===================================================================
--- Scribus/scribus/smpstylewidget.cpp	(wersja 16448)
+++ Scribus/scribus/smpstylewidget.cpp	(kopia robocza)
@@ -7,6 +7,7 @@

 #include <QEvent>

+#include "styles/paragraphstyle.h"
 #include "smpstylewidget.h"
 #include "units.h"
 #include "util.h"
@@ -39,6 +40,10 @@
        lineSpacing_->setSuffix(unitGetSuffixFromIndex(0));
        spaceAbove_->setSuffix(unitGetSuffixFromIndex(0));
        spaceBelow_->setSuffix(unitGetSuffixFromIndex(0));
+
+	hyphenationMode->addItem(tr("No Hyphenation"));
+	hyphenationMode->addItem(tr("Manual Hyphenation"));
+	hyphenationMode->addItem(tr("Automatic Hyphenation"));

 //	optMarginCombo->addItem(tr("None"), ParagraphStyle::OM_None);
 //	optMarginCombo->addItem(tr("Left Protruding"), ParagraphStyle::OM_LeftProtruding);
@@ -93,6 +98,7 @@
        //dropCapsBox->setToolTip(      tr("Enable or disable drop cap"));
        dropCapLines_->setToolTip(    tr("Drop Cap Lines"));
        dropCapOffset_->setToolTip(   tr("Drop Cap Offset"));
+	hyphenationMode->setToolTip( tr("Hyphenation Mode"));
        alignement_->setToolTip(      tr("Alignment"));
        tabList_->first_->setToolTip( tr("First Line Indent"));
        tabList_->left_->setToolTip(  tr("Left Indent"));
@@ -117,6 +123,10 @@
        lineSpacingMode_->addItem( tr("Automatic Linespacing"));
        lineSpacingMode_->addItem( tr("Align to Baseline Grid"));

+	hyphenationMode->addItem(tr("No Hyphenation"));
+	hyphenationMode->addItem(tr("Manual Hyphenation"));
+	hyphenationMode->addItem(tr("Automatic Hyphenation"));
+
 //	optMarginCombo->clear();
 //	optMarginCombo->addItem(tr("None"), ParagraphStyle::OM_None);
 //	optMarginCombo->addItem(tr("Left Protruding"), ParagraphStyle::OM_LeftProtruding);
@@ -140,6 +150,7 @@
        glyphExtensionLabel->setText(tr("Glyph Extension"));
        minGlyphExtLabel->setText(tr("Min:", "Glyph Extension"));
        maxGlyphExtLabel->setText(tr("Max:", "Glyph Extension"));
+	hyphenationModeLabel->setText(tr("Hyphenation Mode"));
 }

 void SMPStyleWidget::unitChange(double oldRatio, double newRatio, int unitIndex)
@@ -159,7 +170,13 @@
        lineSpacingMode_->addItem( tr("Fixed Linespacing"));
        lineSpacingMode_->addItem( tr("Automatic Linespacing"));
        lineSpacingMode_->addItem( tr("Align to Baseline Grid"));
+
+	hyphenationMode->clear();
+	hyphenationMode->addItem(tr("No Hyphenation"));
+	hyphenationMode->addItem(tr("Manual Hyphenation"));
+	hyphenationMode->addItem(tr("Automatic Hyphenation"));

+
 //	optMarginCombo->clear();
 //	optMarginCombo->addItem(tr("None"), ParagraphStyle::OM_None);
 //	optMarginCombo->addItem(tr("Left Protruding"), ParagraphStyle::OM_LeftProtruding);
@@ -214,6 +231,8 @@

                dropCapOffset_->setValue(pstyle->dropCapOffset() * unitRatio, pstyle->isInhDropCapOffset());
                dropCapOffset_->setParentValue(parent->dropCapOffset() * unitRatio);
+
+		hyphenationMode->setCurrentItem(pstyle->hyphenationMode(), pstyle->isInhHyphenationMode());

                alignement_->setStyle(pstyle->alignment(), pstyle->isInhAlignment());
                alignement_->setParentItem(parent->alignment());
@@ -255,6 +274,7 @@
                dropCapLines_->setValue(pstyle->dropCapLines());
                dropCapOffset_->setValue(pstyle->dropCapOffset() * unitRatio);
                parentDropCapButton->hide();
+		hyphenationMode->setCurrentItem(pstyle->hyphenationMode());
                alignement_->setStyle(pstyle->alignment());
                tabList_->setTabs(pstyle->tabValues(), unitIndex);
                tabList_->setLeftIndentValue(pstyle->leftMargin() * unitRatio);
@@ -759,6 +779,25 @@
        }
 }

+void SMPStyleWidget::showHyphenationMode(QList<ParagraphStyle*> &pstyles)
+{
+	if(pstyles.isEmpty())
+	{
+		qDebug()<<"Warning showMaxGlyphExt called with an empty list of styles";
+		return;
+	}
+	int hm = (pstyles[0]->hyphenationMode());
+	for (int i = 0; i < pstyles.count(); ++i)
+	{
+		if (hm != (pstyles[i]->hyphenationMode()))
+		{
+			hyphenationMode->setCurrentItem(pstyles[i]->hyphenationMode());
+			return;
+		}
+	}
+	hyphenationMode->setCurrentItem(hm);
+}
+
 void SMPStyleWidget::slotDefaultOpticalMargins()
 {
 // 	optMarginCheckLeftProtruding->setChecked(false);
Index: Scribus/scribus/smtextstyles.h
===================================================================
--- Scribus/scribus/smtextstyles.h	(wersja 16448)
+++ Scribus/scribus/smtextstyles.h	(kopia robocza)
@@ -75,6 +75,7 @@
        void slotDropCap(bool isOn);
        void slotDropCapLines(int lines);
        void slotDropCapOffset();
+	void slotHyphenationMode(int hm);
        void slotSpaceAbove();
        void slotSpaceBelow();
        void slotAlignment();
Index: Scribus/scribus/scribusdoc.cpp
===================================================================
--- Scribus/scribus/scribusdoc.cpp	(wersja 16448)
+++ Scribus/scribus/scribusdoc.cpp	(kopia robocza)
@@ -5415,7 +5414,9 @@
        ParagraphStyle newStyle;
        newStyle.setParent(name.isEmpty()? Style::INHERIT_PARENT : name);
	itemSelection_ApplyParagraphStyle(newStyle, customSelection, true);
+	if (newStyle.hyphenationMode() != ParagraphStyle::AutomaticHyphenation)
+		itemSelection_DoDeHyphenate();
 }


Index: Scribus/scribus/smpstylewidget.ui
===================================================================
--- Scribus/scribus/smpstylewidget.ui	(wersja 16448)
+++ Scribus/scribus/smpstylewidget.ui	(kopia robocza)
@@ -326,95 +327,126 @@
             </widget>
            </item>
            <item>
-            <widget class="QToolButton" name="parentDropCapButton" >
-             <property name="enabled" >
+            <widget class="QToolButton" name="parentDropCapButton">
+             <property name="enabled">
               <bool>true</bool>
              </property>
-             <property name="text" >
+             <property name="text">
               <string>Use Parent Value</string>
              </property>
             </widget>
            </item>
            <item>
             <spacer>
-             <property name="orientation" >
+             <property name="orientation">
               <enum>Qt::Vertical</enum>
              </property>
-             <property name="sizeType" >
+             <property name="sizeType">
               <enum>QSizePolicy::MinimumExpanding</enum>
              </property>
-             <property name="sizeHint" stdset="0" >
+             <property name="sizeHint" stdset="0">
               <size>
                <width>272</width>
-               <height>0</height>
+               <height>13</height>
               </size>
              </property>
             </spacer>
            </item>
+           <item>
+            <layout class="QHBoxLayout" name="horizontalLayout_7">
+             <item>
+              <widget class="QLabel" name="hyphenationModeLabel">
+               <property name="text">
+                <string>Hyphenation Mode</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="SMScComboBox" name="hyphenationMode">
+               <property name="text" stdset="0">
+                <string>Disable Hyphenation</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <spacer name="horizontalSpacer_2">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>40</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </item>
           </layout>
          </item>
          <item>
-          <layout class="QVBoxLayout" name="verticalLayout_3" >
+          <layout class="QVBoxLayout" name="verticalLayout_3">
            <item>
-            <widget class="QGroupBox" name="groupBox" >
-             <property name="font" >
+            <widget class="QGroupBox" name="groupBox">
+             <property name="font">
               <font>
                <weight>50</weight>
                <bold>false</bold>
               </font>
              </property>
-             <property name="title" >
+             <property name="title">
               <string>Optical Margins</string>
              </property>
-             <layout class="QFormLayout" name="formLayout" >
-              <property name="fieldGrowthPolicy" >
+             <layout class="QFormLayout" name="formLayout">
+              <property name="fieldGrowthPolicy">
                <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
               </property>
-              <item row="4" column="1" >
-               <layout class="QHBoxLayout" name="horizontalLayout_4" >
+              <item row="4" column="1">
+               <layout class="QHBoxLayout" name="horizontalLayout_4">
                 <item>
-                 <widget class="QPushButton" name="optMarginDefaultButton" >
-                  <property name="text" >
+                 <widget class="QPushButton" name="optMarginDefaultButton">
+                  <property name="text">
                    <string>Reset to Default</string>
                   </property>
                  </widget>
                 </item>
                 <item>
-                 <widget class="QPushButton" name="optMarginParentButton" >
-                  <property name="text" >
+                 <widget class="QPushButton" name="optMarginParentButton">
+                  <property name="text">
                    <string>Use Parent Value</string>
                   </property>
                  </widget>
                 </item>
                </layout>
               </item>
-              <item row="0" column="1" >
-               <widget class="SMRadioButton" name="optMarginRadioNone" >
-                <property name="text" >
+              <item row="0" column="1">
+               <widget class="SMRadioButton" name="optMarginRadioNone">
+                <property name="text">
                  <string>None</string>
                 </property>
-                <property name="checked" >
+                <property name="checked">
                  <bool>true</bool>
                 </property>
                </widget>
               </item>
-              <item row="1" column="1" >
-               <widget class="SMRadioButton" name="optMarginRadioBoth" >
-                <property name="text" >
+              <item row="1" column="1">
+               <widget class="SMRadioButton" name="optMarginRadioBoth">
+                <property name="text">
                  <string>Both Sides</string>
                 </property>
                </widget>
               </item>
-              <item row="2" column="1" >
-               <widget class="SMRadioButton" name="optMarginRadioLeft" >
-                <property name="text" >
+              <item row="2" column="1">
+               <widget class="SMRadioButton" name="optMarginRadioLeft">
+                <property name="text">
                  <string>Left Only</string>
                 </property>
                </widget>
               </item>
-              <item row="3" column="1" >
-               <widget class="SMRadioButton" name="optMarginRadioRight" >
-                <property name="text" >
+              <item row="3" column="1">
+               <widget class="SMRadioButton" name="optMarginRadioRight">
+                <property name="text">
                  <string>Right Only</string>
                 </property>
                </widget>
Index: Scribus/scribus/smtextstyles.cpp
===================================================================
--- Scribus/scribus/smtextstyles.cpp	(wersja 16448)
+++ Scribus/scribus/smtextstyles.cpp	(kopia robocza)
@@ -509,6 +509,8 @@
        connect(pwidget_->dropCapLines_, SIGNAL(valueChanged(int)), this, SLOT(slotDropCapLines(int)));
        connect(pwidget_->dropCapOffset_, SIGNAL(valueChanged(double)), this, SLOT(slotDropCapOffset()));

+	connect(pwidget_->hyphenationMode, SIGNAL(activated(int)), this, SLOT(slotHyphenationMode(int)));
+
        connect(pwidget_->tabList_, SIGNAL(tabsChanged()), this, SLOT(slotTabRuler()));
        connect(pwidget_->tabList_, SIGNAL(mouseReleased()), this, SLOT(slotTabRuler()));
        connect(pwidget_->tabList_->left_, SIGNAL(valueChanged(double)), this, SLOT(slotLeftIndent()));
@@ -581,6 +583,8 @@
        disconnect(pwidget_->dropCapLines_, SIGNAL(valueChanged(int)), this, SLOT(slotDropCapLines(int)));
        disconnect(pwidget_->dropCapOffset_, SIGNAL(valueChanged(double)), this, SLOT(slotDropCapOffset()));

+	disconnect(pwidget_->hyphenationMode, SIGNAL(activated(int)), this, SLOT(slotHyphenationMode(int)));
+
        disconnect(pwidget_->parentCombo, SIGNAL(activated(const QString&)),
                        this, SLOT(slotParentChanged(const QString&)));

@@ -894,6 +898,18 @@
        }
 }

+void SMParagraphStyle::slotHyphenationMode(int mh)
+{
+	for (int i = 0; i < selection_.count(); ++i)
+		selection_[i]->setHyphenationMode(mh);
+
+	if (!selectionIsDirty_)
+	{
+		selectionIsDirty_ = true;
+		emit selectionDirty();
+	}
+}
+
 void SMParagraphStyle::slotTabRuler()
 {
        if (pwidget_->tabList_->useParentTabs())
