# HG changeset patch # User Daniel J Sebald # Date 1365756536 18000 # Node ID 17941fedd4ce4fd2ec168cf33ae2396222396b14 # Parent 4d8462fe15b93f06b687b447b4242d64d6850b1d Change workspace row height to font height. * main-window.cc (main_window::construct): Connect workspace_model signal to workspace_view slot. * workspace-view.cc, workspace-view.h (workspace_view::workspace_view): New variable view_previous_row_count initialized to zero. (workspace_view::contextmenu_requested): Rename pos from shadow to qpos. (workspace_view::handle_model_changed): New slot to adjust appearance. diff -r 4d8462fe15b9 -r 17941fedd4ce libgui/src/main-window.cc --- a/libgui/src/main-window.cc Fri Apr 26 14:25:09 2013 +0200 +++ b/libgui/src/main-window.cc Fri Apr 12 03:48:56 2013 -0500 @@ -670,6 +670,8 @@ setWindowIcon (QIcon (":/actions/icons/logo.png")); workspace_window->setModel (_workspace_model); + connect (_workspace_model, SIGNAL (model_changed (void)), + workspace_window, SLOT (handle_model_changed (void))); // Create and set the central widget. QMainWindow takes ownership of // the widget (pointer) so there is no need to delete the object upon diff -r 4d8462fe15b9 -r 17941fedd4ce libgui/src/workspace-view.cc --- a/libgui/src/workspace-view.cc Fri Apr 26 14:25:09 2013 +0200 +++ b/libgui/src/workspace-view.cc Fri Apr 12 03:48:56 2013 -0500 @@ -49,6 +49,7 @@ view->setWordWrap (false); view->setContextMenuPolicy (Qt::CustomContextMenu); + view_previous_row_count = 0; // Set an empty widget, so we can assign a layout to it. setWidget (new QWidget (this)); @@ -96,11 +97,11 @@ } void -workspace_view::contextmenu_requested (const QPoint& pos) +workspace_view::contextmenu_requested (const QPoint& qpos) { QMenu menu (this); - QModelIndex index = view->indexAt (pos); + QModelIndex index = view->indexAt (qpos); QAbstractItemModel *m = view->model (); // if it isnt Local, Glocal etc, allow the ctx menu @@ -137,7 +138,7 @@ menu.addAction ("stem(" + var_name + ")", this, SLOT (handle_contextmenu_stem ())); - menu.exec (view->mapToGlobal (pos)); + menu.exec (view->mapToGlobal (qpos)); } } @@ -228,3 +229,16 @@ emit command_requested (cmdname + "(" + var_name + ")\n"); } } + +void +workspace_view::handle_model_changed (void) +{ + // Just modify those rows that have been added rather than go through + // the whole list. For-loop test will handle when number of rows reduced. + QFontMetrics fm = view->fontMetrics (); + int row_height = fm.height (); + int new_row_count = view->model ()->rowCount (); + for (int i = view_previous_row_count; i < new_row_count; i++) + view->setRowHeight (i, row_height); + view_previous_row_count = new_row_count; +} diff -r 4d8462fe15b9 -r 17941fedd4ce libgui/src/workspace-view.h --- a/libgui/src/workspace-view.h Fri Apr 26 14:25:09 2013 +0200 +++ b/libgui/src/workspace-view.h Fri Apr 12 03:48:56 2013 -0500 @@ -65,11 +65,14 @@ void handle_contextmenu_plot (void); void handle_contextmenu_stem (void); + void handle_model_changed (void); + private: void relay_contextmenu_command (const QString& cmdname); QTableView *view; + int view_previous_row_count; }; #endif