changeset 19880:72fe9df87fe8

improve scalability of gui objects (as discussed in bug #41938) * files-dock-widget.cc (files_dock_widget): adjust size policy of combo box * history-dock-widget.cc (history_dock_widget): adjust size policy of combo box * workspace-view.cc (workspace_view): adjust size policy of combo box * file-editor-tab.cc (file_editor_tab): make size of eol, line and col indicator depending on font size * main-window.cc (construct_tool_bar): make size of combo box for worling dir depending on font size and adjust size policy * main-window.h: remove static variable for combo box width * settings-dialog.cc (read_lexer_settings): make width of labels and font combo boxes for editor styles depeding on font size * settings-dialog.ui: adjusted size policies of several objects
author Torsten <ttl@justmail.de>
date Tue, 24 Feb 2015 07:12:13 +0100
parents 29692bc97899
children 597fc0fd8e54
files libgui/src/files-dock-widget.cc libgui/src/history-dock-widget.cc libgui/src/m-editor/file-editor-tab.cc libgui/src/main-window.cc libgui/src/main-window.h libgui/src/settings-dialog.cc libgui/src/settings-dialog.ui libgui/src/workspace-view.cc
diffstat 8 files changed, 134 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/files-dock-widget.cc	Tue Feb 24 07:12:13 2015 +0100
@@ -90,7 +90,7 @@
   _current_directory->setInsertPolicy (QComboBox::NoInsert);
   _current_directory->setSizeAdjustPolicy (
     QComboBox::AdjustToMinimumContentsLengthWithIcon);
-  QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Maximum);
+  QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Preferred);
   _current_directory->setSizePolicy (sizePol);
 
   QAction *directory_up_action = new QAction (QIcon (":/actions/icons/up.png"),
--- a/libgui/src/history-dock-widget.cc	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/history-dock-widget.cc	Tue Feb 24 07:12:13 2015 +0100
@@ -82,7 +82,7 @@
   _filter->setInsertPolicy (QComboBox::NoInsert);
   _filter->setSizeAdjustPolicy (
             QComboBox::AdjustToMinimumContentsLengthWithIcon);
-  QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Maximum);
+  QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Preferred);
   _filter->setSizePolicy (sizePol);
   _filter->completer ()->setCaseSensitivity (Qt::CaseSensitive);
 
--- a/libgui/src/m-editor/file-editor-tab.cc	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/m-editor/file-editor-tab.cc	Tue Feb 24 07:12:13 2015 +0100
@@ -91,16 +91,17 @@
   // eol mode
   QLabel *eol_label = new QLabel (tr ("eol:"), this);
   _eol_indicator = new QLabel ("",this);
-  _eol_indicator->setMinimumSize (35,0);
+  QFontMetrics fm = eol_label->fontMetrics ();
+  _eol_indicator->setMinimumSize (5*fm.averageCharWidth (),0);
   _status_bar->addPermanentWidget (eol_label, 0);
   _status_bar->addPermanentWidget (_eol_indicator, 0);
 
   // row- and col-indicator
   _row_indicator = new QLabel ("", this);
-  _row_indicator->setMinimumSize (30,0);
+  _row_indicator->setMinimumSize (5*fm.averageCharWidth (),0);
   QLabel *row_label = new QLabel (tr ("line:"), this);
   _col_indicator = new QLabel ("", this);
-  _col_indicator->setMinimumSize (25,0);
+  _col_indicator->setMinimumSize (4*fm.averageCharWidth (),0);
   QLabel *col_label = new QLabel (tr ("col:"), this);
   _status_bar->addPermanentWidget (row_label, 0);
   _status_bar->addPermanentWidget (_row_indicator, 0);
--- a/libgui/src/main-window.cc	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/main-window.cc	Tue Feb 24 07:12:13 2015 +0100
@@ -1937,14 +1937,15 @@
   _main_tool_bar->addSeparator ();
 
   _current_directory_combo_box = new QComboBox (this);
-  _current_directory_combo_box->setFixedWidth (current_directory_width);
+  QFontMetrics fm = _current_directory_combo_box->fontMetrics ();
+  _current_directory_combo_box->setFixedWidth (48*fm.averageCharWidth ());
   _current_directory_combo_box->setEditable (true);
   _current_directory_combo_box->setInsertPolicy (QComboBox::NoInsert);
   _current_directory_combo_box->setToolTip (tr ("Enter directory name"));
   _current_directory_combo_box->setMaxVisibleItems (
     current_directory_max_visible);
   _current_directory_combo_box->setMaxCount (current_directory_max_count);
-  QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Preferred);
+  QSizePolicy sizePol (QSizePolicy::Preferred, QSizePolicy::Preferred);
   _current_directory_combo_box->setSizePolicy (sizePol);
 
   // addWidget takes ownership of the objects so there is no
--- a/libgui/src/main-window.h	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/main-window.h	Tue Feb 24 07:12:13 2015 +0100
@@ -374,7 +374,6 @@
 
   // Toolbars.
   QComboBox *_current_directory_combo_box;
-  static const int current_directory_width = 300;
   static const int current_directory_max_visible = 16;
   static const int current_directory_max_count = 16;
   QLineEdit *_current_directory_line_edit;
--- a/libgui/src/settings-dialog.cc	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/settings-dialog.cc	Tue Feb 24 07:12:13 2015 +0100
@@ -450,6 +450,7 @@
   QVector<color_picker*> bg_color (max_style);
   int default_size = 10;
   QFont default_font = QFont ();
+  int label_width;
   QColor default_color = QColor ();
   QColor dummy_color = QColor (255,0,255);
 
@@ -459,12 +460,13 @@
       QFont   actual_font = lexer->font (styles[i]);
       description[i] = new QLabel (actual_name);
       description[i]->setWordWrap (true);
-      description[i]->setMaximumSize (160,QWIDGETSIZE_MAX);
-      description[i]->setMinimumSize (160,1);
+      label_width = 24*description[i]->fontMetrics ().averageCharWidth ();
+      description[i]->setMaximumSize (label_width,QWIDGETSIZE_MAX);
+      description[i]->setMinimumSize (label_width,1);
       select_font[i] = new QFontComboBox ();
       select_font[i]->setObjectName (actual_name+"_font");
-      select_font[i]->setMaximumSize (180,QWIDGETSIZE_MAX);
-      select_font[i]->setMinimumSize (180,1);
+      select_font[i]->setMaximumSize (label_width,QWIDGETSIZE_MAX);
+      select_font[i]->setMinimumSize (label_width,1);
       font_size[i] = new QSpinBox ();
       font_size[i]->setObjectName (actual_name+"_size");
       if (styles[i] == 0) // the default
--- a/libgui/src/settings-dialog.ui	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/settings-dialog.ui	Tue Feb 24 07:12:13 2015 +0100
@@ -32,7 +32,7 @@
       </size>
      </property>
      <property name="currentIndex">
-      <number>3</number>
+      <number>1</number>
      </property>
      <widget class="QWidget" name="tab_general">
       <property name="enabled">
@@ -454,7 +454,7 @@
             <x>0</x>
             <y>0</y>
             <width>662</width>
-            <height>661</height>
+            <height>673</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_16">
@@ -462,9 +462,6 @@
             <layout class="QVBoxLayout" name="verticalLayout_9">
              <item>
               <layout class="QGridLayout" name="editor_common_settings_grid">
-               <property name="horizontalSpacing">
-                <number>6</number>
-               </property>
                <item row="6" column="2">
                 <layout class="QHBoxLayout" name="horizontalLayout_3">
                  <item>
@@ -476,6 +473,12 @@
                  </item>
                  <item>
                   <widget class="QSpinBox" name="editor_long_line_column">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="minimum">
                     <number>2</number>
                    </property>
@@ -504,6 +507,12 @@
                </item>
                <item row="3" column="0">
                 <widget class="QCheckBox" name="editor_ws_checkbox">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="text">
                   <string>Show whitespace</string>
                  </property>
@@ -514,6 +523,12 @@
                  <property name="enabled">
                   <bool>true</bool>
                  </property>
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="text">
                   <string>Show line numbers</string>
                  </property>
@@ -547,6 +562,12 @@
                  <property name="enabled">
                   <bool>true</bool>
                  </property>
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="text">
                   <string>Highlight current line</string>
                  </property>
@@ -625,6 +646,12 @@
                  </item>
                  <item row="0" column="3">
                   <widget class="QSpinBox" name="editor_notebook_tab_width_min">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="minimum">
                     <number>80</number>
                    </property>
@@ -654,6 +681,12 @@
                  </item>
                  <item row="0" column="5">
                   <widget class="QSpinBox" name="editor_notebook_tab_width_max">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="minimum">
                     <number>180</number>
                    </property>
@@ -695,6 +728,12 @@
                </item>
                <item row="6" column="0">
                 <widget class="QCheckBox" name="editor_long_line_marker">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="toolTip">
                   <string>This works well for monospaced fonts. The line is drawn at a position based on the width of a space character in the default font. It may not work very well if styles use proportional fonts or if varied font sizes or bold, italic and normal texts are used.</string>
                  </property>
@@ -708,6 +747,12 @@
                </item>
                <item row="7" column="0">
                 <widget class="QCheckBox" name="cb_code_folding">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="text">
                   <string>Enable Code Folding</string>
                  </property>
@@ -718,6 +763,12 @@
                </item>
                <item row="8" column="0">
                 <widget class="QCheckBox" name="cb_edit_status_bar">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="text">
                   <string>Show status bar</string>
                  </property>
@@ -728,6 +779,12 @@
                </item>
                <item row="4" column="0">
                 <widget class="QCheckBox" name="cb_show_eol">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="text">
                   <string>Show EOL characters</string>
                  </property>
@@ -744,6 +801,12 @@
                  </item>
                  <item>
                   <widget class="QComboBox" name="combo_eol_mode">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="sizeAdjustPolicy">
                     <enum>QComboBox::AdjustToContents</enum>
                    </property>
@@ -787,6 +850,12 @@
                  <property name="enabled">
                   <bool>true</bool>
                  </property>
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="text">
                   <string>Show horizontal scroll bar</string>
                  </property>
@@ -806,9 +875,6 @@
              </item>
              <item>
               <layout class="QGridLayout" name="gridLayout_4">
-               <property name="verticalSpacing">
-                <number>0</number>
-               </property>
                <item row="0" column="0">
                 <widget class="QLabel" name="label_13">
                  <property name="text">
@@ -848,6 +914,12 @@
                </item>
                <item row="0" column="2">
                 <widget class="QSpinBox" name="editor_ind_width_spinbox">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="minimum">
                   <number>1</number>
                  </property>
@@ -875,6 +947,12 @@
                </item>
                <item row="2" column="2">
                 <widget class="QSpinBox" name="editor_tab_width_spinbox">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
                  <property name="minimum">
                   <number>1</number>
                  </property>
@@ -1406,6 +1484,12 @@
                  </item>
                  <item>
                   <widget class="QFontComboBox" name="terminal_fontName">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="editable">
                     <bool>false</bool>
                    </property>
@@ -1427,6 +1511,12 @@
                  </item>
                  <item>
                   <widget class="QSpinBox" name="terminal_fontSize">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="minimum">
                     <number>2</number>
                    </property>
@@ -1460,6 +1550,12 @@
                  </property>
                  <item>
                   <widget class="QSpinBox" name="terminal_history_buffer">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="minimum">
                     <number>0</number>
                    </property>
@@ -1554,12 +1650,6 @@
              </item>
              <item>
               <widget class="QGroupBox" name="terminal_colors_box">
-               <property name="minimumSize">
-                <size>
-                 <width>0</width>
-                 <height>81</height>
-                </size>
-               </property>
                <property name="title">
                 <string>Terminal Colors</string>
                </property>
@@ -1705,7 +1795,14 @@
                    </widget>
                   </item>
                   <item row="1" column="1">
-                   <widget class="QLineEdit" name="le_file_browser_dir"/>
+                   <widget class="QLineEdit" name="le_file_browser_dir">
+                    <property name="sizePolicy">
+                     <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                      <horstretch>0</horstretch>
+                      <verstretch>0</verstretch>
+                     </sizepolicy>
+                    </property>
+                   </widget>
                   </item>
                   <item row="0" column="1">
                    <widget class="QCheckBox" name="cb_restore_file_browser_dir">
@@ -1716,6 +1813,12 @@
                   </item>
                   <item row="1" column="2">
                    <widget class="QPushButton" name="pb_file_browser_dir">
+                    <property name="sizePolicy">
+                     <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                      <horstretch>0</horstretch>
+                      <verstretch>0</verstretch>
+                     </sizepolicy>
+                    </property>
                     <property name="text">
                      <string>Browse</string>
                     </property>
@@ -1809,12 +1912,6 @@
                  <verstretch>0</verstretch>
                 </sizepolicy>
                </property>
-               <property name="minimumSize">
-                <size>
-                 <width>0</width>
-                 <height>81</height>
-                </size>
-               </property>
                <property name="title">
                 <string>Colors for variable attributes </string>
                </property>
--- a/libgui/src/workspace-view.cc	Tue Feb 24 13:53:02 2015 +0100
+++ b/libgui/src/workspace-view.cc	Tue Feb 24 07:12:13 2015 +0100
@@ -57,7 +57,7 @@
   _filter->setInsertPolicy (QComboBox::NoInsert);
   _filter->setSizeAdjustPolicy (
             QComboBox::AdjustToMinimumContentsLengthWithIcon);
-  QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Maximum);
+  QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Preferred);
   _filter->setSizePolicy (sizePol);
   _filter->completer ()->setCaseSensitivity (Qt::CaseSensitive);