]> git.lyx.org Git - features.git/commitdiff
Add layout intelligence to View Source pane (bug #8653).
authorPavel Sanda <sanda@lyx.org>
Sun, 5 May 2013 06:05:51 +0000 (23:05 -0700)
committerPavel Sanda <sanda@lyx.org>
Sun, 5 May 2013 06:05:51 +0000 (23:05 -0700)
View Source pane layout now automatically switches between horizontal
and vertical design when docked in vertical or horizontal way.

Original idea and patch from Edwin.

http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg178801.html

Note: the long standing-fight with too bulky minimal QTextEdit size
is now solved via ViewSourceUi.sizePolicy=Ignored.

src/frontends/qt4/GuiViewSource.cpp
src/frontends/qt4/GuiViewSource.h
src/frontends/qt4/ui/ViewSourceUi.ui

index 70d932466edd91968657ac140998b1b875fbcca8..0875c82df33430c4df6cb98d21d3935f2dbba215 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <boost/crc.hpp>
 
+#include <QBoxLayout>
 #include <QSettings>
 #include <QTextCursor>
 #include <QTextDocument>
@@ -227,12 +228,24 @@ void ViewSourceWidget::updateDefaultFormat()
 }
 
 
+void ViewSourceWidget::dockLocationChanged(Qt::DockWidgetArea area)
+{
+       if (area == Qt::RightDockWidgetArea || area == Qt::LeftDockWidgetArea) {
+               layout_->setDirection(QBoxLayout::TopToBottom);
+       } else {
+               layout_->setDirection(QBoxLayout::LeftToRight);
+       }
+}
+
+
 GuiViewSource::GuiViewSource(GuiView & parent,
                Qt::DockWidgetArea area, Qt::WindowFlags flags)
        : DockView(parent, "view-source", qt_("LaTeX Source"), area, flags)
 {
        widget_ = new ViewSourceWidget;
        setWidget(widget_);
+       connect(this, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)),
+               widget_, SLOT(dockLocationChanged(Qt::DockWidgetArea)));
 }
 
 
index 6d16142249718b09f6d5ba6652e1df302bd97cda..1722ac94fcea5bcf3b8346872a221221b0ea4095 100644 (file)
@@ -49,6 +49,8 @@ public Q_SLOTS:
        void updateDefaultFormat();
        ///
        void contentsChanged();
+       ///
+       void dockLocationChanged(Qt::DockWidgetArea area);
 
 private:
        ///
index 3255234e2b934da29c19eefb7eef40657dc36e2b..cc413e025f6f0f25692105277408d496829860dd 100644 (file)
@@ -6,12 +6,12 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>430</width>
-    <height>131</height>
+    <width>665</width>
+    <height>144</height>
    </rect>
   </property>
   <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+   <sizepolicy hsizetype="Ignored" vsizetype="Ignored">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
   <property name="windowTitle">
    <string/>
   </property>
-  <layout class="QGridLayout" name="gridLayout" columnstretch="1,0">
-   <property name="leftMargin">
-    <number>9</number>
-   </property>
+  <layout class="QGridLayout" name="gridLayout_2">
    <property name="topMargin">
     <number>3</number>
    </property>
     <number>3</number>
    </property>
    <item row="0" column="0">
-    <widget class="QTextEdit" name="viewSourceTV">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Ignored">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="whatsThis">
-      <string/>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1">
-    <layout class="QFormLayout" name="formLayout">
+    <layout class="QHBoxLayout" name="layout_" stretch="1,0">
      <property name="sizeConstraint">
-      <enum>QLayout::SetDefaultConstraint</enum>
-     </property>
-     <property name="fieldGrowthPolicy">
-      <enum>QFormLayout::ExpandingFieldsGrow</enum>
+      <enum>QLayout::SetMaximumSize</enum>
      </property>
-     <property name="labelAlignment">
-      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-     </property>
-     <property name="horizontalSpacing">
-      <number>-1</number>
-     </property>
-     <property name="verticalSpacing">
-      <number>2</number>
-     </property>
-     <item row="0" column="0">
-      <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
-       <property name="spacing">
-        <number>3</number>
+     <item>
+      <widget class="QTextEdit" name="viewSourceTV">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="baseSize">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
        </property>
+       <property name="whatsThis">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QFormLayout" name="formLayout">
        <property name="sizeConstraint">
-        <enum>QLayout::SetMinAndMaxSize</enum>
+        <enum>QLayout::SetDefaultConstraint</enum>
        </property>
-       <property name="bottomMargin">
-        <number>3</number>
+       <property name="fieldGrowthPolicy">
+        <enum>QFormLayout::ExpandingFieldsGrow</enum>
        </property>
-       <item>
-        <widget class="QLabel" name="outputFormatLA">
-         <property name="text">
-          <string>F&amp;ormat:</string>
+       <property name="labelAlignment">
+        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+       </property>
+       <property name="horizontalSpacing">
+        <number>-1</number>
+       </property>
+       <property name="verticalSpacing">
+        <number>4</number>
+       </property>
+       <item row="0" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
+         <property name="spacing">
+          <number>3</number>
          </property>
-         <property name="buddy">
-          <cstring>outputFormatCO</cstring>
+         <property name="sizeConstraint">
+          <enum>QLayout::SetMinAndMaxSize</enum>
          </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QComboBox" name="outputFormatCO">
-         <property name="enabled">
-          <bool>true</bool>
+         <property name="bottomMargin">
+          <number>3</number>
          </property>
+         <item>
+          <widget class="QLabel" name="outputFormatLA">
+           <property name="text">
+            <string>F&amp;ormat:</string>
+           </property>
+           <property name="buddy">
+            <cstring>outputFormatCO</cstring>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QComboBox" name="outputFormatCO">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="toolTip">
+            <string>Select the output format</string>
+           </property>
+           <property name="sizeAdjustPolicy">
+            <enum>QComboBox::AdjustToContents</enum>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="2" column="0">
+        <widget class="QCheckBox" name="masterPerspectiveCB">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
            <horstretch>0</horstretch>
           </sizepolicy>
          </property>
          <property name="toolTip">
-          <string>Select the output format</string>
+          <string>Show the source as the master document gets it</string>
          </property>
-         <property name="sizeAdjustPolicy">
-          <enum>QComboBox::AdjustToContents</enum>
+         <property name="text">
+          <string>&amp;Master's perspective</string>
          </property>
         </widget>
        </item>
-      </layout>
-     </item>
-     <item row="2" column="0">
-      <widget class="QCheckBox" name="masterPerspectiveCB">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="toolTip">
-        <string>Show the source as the master document gets it</string>
-       </property>
-       <property name="text">
-        <string>&amp;Master's perspective</string>
-       </property>
-      </widget>
-     </item>
-     <item row="3" column="0">
-      <widget class="QCheckBox" name="autoUpdateCB">
-       <property name="text">
-        <string>Automatic update</string>
-       </property>
-       <property name="checked">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item row="4" column="0" colspan="2">
-      <widget class="QPushButton" name="updatePB">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="text">
-        <string>&amp;Update</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0" colspan="2">
-      <widget class="QComboBox" name="contentsCO">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <item>
-        <property name="text">
-         <string>Current Paragraph</string>
-        </property>
-       </item>
-       <item>
-        <property name="text">
-         <string>Complete Source</string>
-        </property>
+       <item row="3" column="0">
+        <widget class="QCheckBox" name="autoUpdateCB">
+         <property name="text">
+          <string>Automatic update</string>
+         </property>
+         <property name="checked">
+          <bool>true</bool>
+         </property>
+        </widget>
        </item>
-       <item>
-        <property name="text">
-         <string>Preamble Only</string>
-        </property>
+       <item row="4" column="0" colspan="2">
+        <widget class="QPushButton" name="updatePB">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="text">
+          <string>&amp;Update</string>
+         </property>
+        </widget>
        </item>
-       <item>
-        <property name="text">
-         <string>Body Only</string>
-        </property>
+       <item row="1" column="0" colspan="2">
+        <widget class="QComboBox" name="contentsCO">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <item>
+          <property name="text">
+           <string>Current Paragraph</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Complete Source</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Preamble Only</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Body Only</string>
+          </property>
+         </item>
+        </widget>
        </item>
-      </widget>
+      </layout>
      </item>
     </layout>
    </item>