Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(652)

Unified Diff: chrome/browser/gtk/task_manager_gtk.cc

Issue 173308: Linux: set the initial size of the "Page" column in the task manager to fit the dialog. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/gtk/task_manager_gtk.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/task_manager_gtk.cc
===================================================================
--- chrome/browser/gtk/task_manager_gtk.cc (revision 24167)
+++ chrome/browser/gtk/task_manager_gtk.cc (working copy)
@@ -17,6 +17,7 @@
#include "chrome/browser/browser_window.h"
#include "chrome/browser/gtk/gtk_chrome_link_button.h"
#include "chrome/browser/gtk/menu_gtk.h"
+#include "chrome/common/gtk_tree.h"
#include "chrome/common/gtk_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/pref_service.h"
@@ -130,6 +131,8 @@
gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
gtk_tree_view_column_add_attribute(column, text_renderer, "text", colid);
gtk_tree_view_column_set_resizable(column, TRUE);
+ // This is temporary: we'll turn expanding off after getting the size.
+ gtk_tree_view_column_set_expand(column, TRUE);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
}
@@ -153,14 +156,15 @@
l10n_util::GetStringUTF8(resid).c_str());
}
-// Get the row number corresponding to |path|.
-gint GetRowNumForPath(GtkTreePath* path) {
- gint* indices = gtk_tree_path_get_indices(path);
- if (!indices) {
- NOTREACHED();
- return -1;
- }
- return indices[0];
+// Set the current width of the column without forcing a minimum width as
+// gtk_tree_view_column_set_fixed_width() would. This would basically be
+// gtk_tree_view_column_set_width() except that there is no such function.
+void TreeViewColumnSetWidth(GtkTreeViewColumn* column, gint width) {
+ column->width = width;
+ column->resized_width = width;
+ column->use_resized_width = TRUE;
+ // Needed for use_resized_width to be effective.
+ gtk_widget_queue_resize(column->tree_view);
}
} // namespace
@@ -392,6 +396,10 @@
}
void TaskManagerGtk::SetInitialDialogSize() {
+ // Hook up to the realize event so we can size the page column to the
+ // size of the leftover space after packing the other columns.
+ g_signal_connect(G_OBJECT(treeview_), "realize",
+ G_CALLBACK(OnTreeViewRealize), this);
// If we previously saved the dialog's bounds, use them.
if (g_browser_process->local_state()) {
const DictionaryValue* placement_pref =
@@ -532,7 +540,8 @@
GtkTreeModel* model;
GList* paths = gtk_tree_selection_get_selected_rows(selection, &model);
for (GList* item = paths; item; item = item->next) {
- int row = GetRowNumForPath(reinterpret_cast<GtkTreePath*>(item->data));
+ int row = gtk_tree::GetRowNumForPath(
+ reinterpret_cast<GtkTreePath*>(item->data));
task_manager_->KillProcess(row);
}
g_list_free(paths);
@@ -553,7 +562,8 @@
GtkTreeModel* model;
GList* selected = gtk_tree_selection_get_selected_rows(selection, &model);
if (selected) {
- int row = GetRowNumForPath(reinterpret_cast<GtkTreePath*>(selected->data));
+ int row = gtk_tree::GetRowNumForPath(
+ reinterpret_cast<GtkTreePath*>(selected->data));
task_manager_->ActivateProcess(row);
}
}
@@ -607,6 +617,20 @@
}
// static
+void TaskManagerGtk::OnTreeViewRealize(GtkTreeView* treeview,
+ TaskManagerGtk* task_manager) {
+ GtkTreeViewColumn* column = gtk_tree_view_get_column(
+ GTK_TREE_VIEW(task_manager->treeview_),
+ TreeViewColumnIndexFromID(kTaskManagerPage));
+ gint width = gtk_tree_view_column_get_width(column);
+ // Turn expanding back off to make resizing columns behave sanely.
+ gtk_tree_view_column_set_expand(column, FALSE);
+ // Subtract 1 to work around some sort of fencepost error in GTK: without
+ // it, a horizontal scroll bar with one pixel of wiggle room will appear.
+ TreeViewColumnSetWidth(column, width - 1);
+}
+
+// static
void TaskManagerGtk::OnSelectionChanged(GtkTreeSelection* selection,
TaskManagerGtk* task_manager) {
bool selection_contains_browser_process = false;
@@ -614,7 +638,8 @@
GtkTreeModel* model;
GList* paths = gtk_tree_selection_get_selected_rows(selection, &model);
for (GList* item = paths; item; item = item->next) {
- int row = GetRowNumForPath(reinterpret_cast<GtkTreePath*>(item->data));
+ int row = gtk_tree::GetRowNumForPath(
+ reinterpret_cast<GtkTreePath*>(item->data));
if (task_manager->task_manager_->IsBrowserProcess(row)) {
selection_contains_browser_process = true;
break;
« no previous file with comments | « chrome/browser/gtk/task_manager_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698