Commit 8d140942 authored by jhawkins@chromium.org's avatar jhawkins@chromium.org

Activate the currently selected process when the user double clicks the task manager treeview.

BUG=11392
TEST=Open the task manager and double click different processes.  Those tabs should be activated.
Review URL: http://codereview.chromium.org/155098

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19980 0039d316-1c4b-4281-b951-d872f2087c98
parent 5fcd5432
...@@ -59,7 +59,6 @@ TaskManagerColumn TaskManagerResourceIDToColumnID(int id) { ...@@ -59,7 +59,6 @@ TaskManagerColumn TaskManagerResourceIDToColumnID(int id) {
} }
int TaskManagerColumnIDToResourceID(int id) { int TaskManagerColumnIDToResourceID(int id) {
printf("id: %d\n", id);
switch (id) { switch (id) {
case kTaskManagerPage: case kTaskManagerPage:
return IDS_TASK_MANAGER_PAGE_COLUMN; return IDS_TASK_MANAGER_PAGE_COLUMN;
...@@ -326,6 +325,8 @@ void TaskManagerGtk::Init() { ...@@ -326,6 +325,8 @@ void TaskManagerGtk::Init() {
gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview_), TRUE); gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview_), TRUE);
gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(treeview_), gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(treeview_),
GTK_TREE_VIEW_GRID_LINES_HORIZONTAL); GTK_TREE_VIEW_GRID_LINES_HORIZONTAL);
g_signal_connect(G_OBJECT(treeview_), "button-press-event",
G_CALLBACK(OnButtonPressEvent), this);
g_signal_connect(G_OBJECT(treeview_), "button-release-event", g_signal_connect(G_OBJECT(treeview_), "button-release-event",
G_CALLBACK(OnButtonReleaseEvent), this); G_CALLBACK(OnButtonReleaseEvent), this);
gtk_widget_add_events(treeview_, gtk_widget_add_events(treeview_,
...@@ -468,6 +469,17 @@ void TaskManagerGtk::ShowContextMenu() { ...@@ -468,6 +469,17 @@ void TaskManagerGtk::ShowContextMenu() {
menu_controller_->RunMenu(); menu_controller_->RunMenu();
} }
void TaskManagerGtk::ActivateFocusedTab() {
GtkTreeSelection* selection = gtk_tree_view_get_selection(
GTK_TREE_VIEW(treeview_));
// If the user has just double clicked, only one item is selected.
GtkTreeModel* model;
GList* selected = gtk_tree_selection_get_selected_rows(selection, &model);
int row = GetRowNumForPath(reinterpret_cast<GtkTreePath*>(selected->data));
task_manager_->ActivateProcess(row);
}
// static // static
void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id, void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id,
TaskManagerGtk* task_manager) { TaskManagerGtk* task_manager) {
...@@ -500,6 +512,16 @@ void TaskManagerGtk::OnSelectionChanged(GtkTreeSelection* selection, ...@@ -500,6 +512,16 @@ void TaskManagerGtk::OnSelectionChanged(GtkTreeSelection* selection,
kTaskManagerResponseKill, sensitive); kTaskManagerResponseKill, sensitive);
} }
// static
gboolean TaskManagerGtk::OnButtonPressEvent(GtkWidget* widget,
GdkEventButton* event,
TaskManagerGtk* task_manager) {
if (event->type == GDK_2BUTTON_PRESS)
task_manager->ActivateFocusedTab();
return FALSE;
}
// static // static
gboolean TaskManagerGtk::OnButtonReleaseEvent(GtkWidget* widget, gboolean TaskManagerGtk::OnButtonReleaseEvent(GtkWidget* widget,
GdkEventButton* event, GdkEventButton* event,
......
...@@ -52,6 +52,9 @@ class TaskManagerGtk : public TaskManagerModelObserver { ...@@ -52,6 +52,9 @@ class TaskManagerGtk : public TaskManagerModelObserver {
// Opens the context menu used to select the task manager columns. // Opens the context menu used to select the task manager columns.
void ShowContextMenu(); void ShowContextMenu();
// Activates the tab associated with the focused row.
void ActivateFocusedTab();
// response signal handler that notifies us of dialog responses. // response signal handler that notifies us of dialog responses.
static void OnResponse(GtkDialog* dialog, gint response_id, static void OnResponse(GtkDialog* dialog, gint response_id,
TaskManagerGtk* task_manager); TaskManagerGtk* task_manager);
...@@ -60,6 +63,10 @@ class TaskManagerGtk : public TaskManagerModelObserver { ...@@ -60,6 +63,10 @@ class TaskManagerGtk : public TaskManagerModelObserver {
static void OnSelectionChanged(GtkTreeSelection* selection, static void OnSelectionChanged(GtkTreeSelection* selection,
TaskManagerGtk* task_manager); TaskManagerGtk* task_manager);
// button-press-event handler that activates a process on double-click.
static gboolean OnButtonPressEvent(GtkWidget* widget, GdkEventButton* event,
TaskManagerGtk* task_manager);
// button-release-event handler that opens the right-click context menu. // button-release-event handler that opens the right-click context menu.
static gboolean OnButtonReleaseEvent(GtkWidget* widget, GdkEventButton* event, static gboolean OnButtonReleaseEvent(GtkWidget* widget, GdkEventButton* event,
TaskManagerGtk* task_manager); TaskManagerGtk* task_manager);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment