Add layout intelligence to View Source pane (bug #8653).

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.
This commit is contained in:
Pavel Sanda 2013-05-04 23:05:51 -07:00
parent 030326466f
commit 49c2450f3f
3 changed files with 153 additions and 122 deletions

View File

@ -32,6 +32,7 @@
#include <boost/crc.hpp> #include <boost/crc.hpp>
#include <QBoxLayout>
#include <QSettings> #include <QSettings>
#include <QTextCursor> #include <QTextCursor>
#include <QTextDocument> #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, GuiViewSource::GuiViewSource(GuiView & parent,
Qt::DockWidgetArea area, Qt::WindowFlags flags) Qt::DockWidgetArea area, Qt::WindowFlags flags)
: DockView(parent, "view-source", qt_("LaTeX Source"), area, flags) : DockView(parent, "view-source", qt_("LaTeX Source"), area, flags)
{ {
widget_ = new ViewSourceWidget; widget_ = new ViewSourceWidget;
setWidget(widget_); setWidget(widget_);
connect(this, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)),
widget_, SLOT(dockLocationChanged(Qt::DockWidgetArea)));
} }

View File

@ -49,6 +49,8 @@ public Q_SLOTS:
void updateDefaultFormat(); void updateDefaultFormat();
/// ///
void contentsChanged(); void contentsChanged();
///
void dockLocationChanged(Qt::DockWidgetArea area);
private: private:
/// ///

View File

@ -6,12 +6,12 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>430</width> <width>665</width>
<height>131</height> <height>144</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Ignored" vsizetype="Ignored">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -19,10 +19,7 @@
<property name="windowTitle"> <property name="windowTitle">
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,0"> <layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin"> <property name="topMargin">
<number>3</number> <number>3</number>
</property> </property>
@ -30,19 +27,36 @@
<number>3</number> <number>3</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
<layout class="QHBoxLayout" name="layout_" stretch="1,0">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item>
<widget class="QTextEdit" name="viewSourceTV"> <widget class="QTextEdit" name="viewSourceTV">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Ignored"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </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"> <property name="whatsThis">
<string/> <string/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item>
<layout class="QFormLayout" name="formLayout"> <layout class="QFormLayout" name="formLayout">
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum> <enum>QLayout::SetDefaultConstraint</enum>
@ -57,7 +71,7 @@
<number>-1</number> <number>-1</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>4</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1"> <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
@ -170,6 +184,8 @@
</layout> </layout>
</item> </item>
</layout> </layout>
</item>
</layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>viewSourceTV</tabstop> <tabstop>viewSourceTV</tabstop>