# HG changeset patch # User Torsten # Date 1424758333 -3600 # Node ID 72fe9df87fe8f620566a3cb4fcc6e14b6fefbf31 # Parent 29692bc97899e0124f8de47c8c05b41b879640bf 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 diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/files-dock-widget.cc --- 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"), diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/history-dock-widget.cc --- 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); diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/m-editor/file-editor-tab.cc --- 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); diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/main-window.cc --- 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 diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/main-window.h --- 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; diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/settings-dialog.cc --- 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 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 diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/settings-dialog.ui --- 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 @@ - 3 + 1 @@ -454,7 +454,7 @@ 0 0 662 - 661 + 673 @@ -462,9 +462,6 @@ - - 6 - @@ -476,6 +473,12 @@ + + + 0 + 0 + + 2 @@ -504,6 +507,12 @@ + + + 0 + 0 + + Show whitespace @@ -514,6 +523,12 @@ true + + + 0 + 0 + + Show line numbers @@ -547,6 +562,12 @@ true + + + 0 + 0 + + Highlight current line @@ -625,6 +646,12 @@ + + + 0 + 0 + + 80 @@ -654,6 +681,12 @@ + + + 0 + 0 + + 180 @@ -695,6 +728,12 @@ + + + 0 + 0 + + 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. @@ -708,6 +747,12 @@ + + + 0 + 0 + + Enable Code Folding @@ -718,6 +763,12 @@ + + + 0 + 0 + + Show status bar @@ -728,6 +779,12 @@ + + + 0 + 0 + + Show EOL characters @@ -744,6 +801,12 @@ + + + 0 + 0 + + QComboBox::AdjustToContents @@ -787,6 +850,12 @@ true + + + 0 + 0 + + Show horizontal scroll bar @@ -806,9 +875,6 @@ - - 0 - @@ -848,6 +914,12 @@ + + + 0 + 0 + + 1 @@ -875,6 +947,12 @@ + + + 0 + 0 + + 1 @@ -1406,6 +1484,12 @@ + + + 0 + 0 + + false @@ -1427,6 +1511,12 @@ + + + 0 + 0 + + 2 @@ -1460,6 +1550,12 @@ + + + 0 + 0 + + 0 @@ -1554,12 +1650,6 @@ - - - 0 - 81 - - Terminal Colors @@ -1705,7 +1795,14 @@ - + + + + 0 + 0 + + + @@ -1716,6 +1813,12 @@ + + + 0 + 0 + + Browse @@ -1809,12 +1912,6 @@ 0 - - - 0 - 81 - - Colors for variable attributes diff -r 29692bc97899 -r 72fe9df87fe8 libgui/src/workspace-view.cc --- 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);