| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/gtk/task_manager_gtk.h" | 5 #include "chrome/browser/gtk/task_manager_gtk.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
| 10 #include "base/gfx/gtk_util.h" | 10 #include "base/gfx/gtk_util.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 return kTaskManagerNetwork; | 52 return kTaskManagerNetwork; |
| 53 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: | 53 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: |
| 54 return kTaskManagerProcessID; | 54 return kTaskManagerProcessID; |
| 55 default: | 55 default: |
| 56 NOTREACHED(); | 56 NOTREACHED(); |
| 57 return static_cast<TaskManagerColumn>(-1); | 57 return static_cast<TaskManagerColumn>(-1); |
| 58 } | 58 } |
| 59 } | 59 } |
| 60 | 60 |
| 61 int TaskManagerColumnIDToResourceID(int id) { | 61 int TaskManagerColumnIDToResourceID(int id) { |
| 62 printf("id: %d\n", id); | |
| 63 switch (id) { | 62 switch (id) { |
| 64 case kTaskManagerPage: | 63 case kTaskManagerPage: |
| 65 return IDS_TASK_MANAGER_PAGE_COLUMN; | 64 return IDS_TASK_MANAGER_PAGE_COLUMN; |
| 66 case kTaskManagerPhysicalMem: | 65 case kTaskManagerPhysicalMem: |
| 67 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN; | 66 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN; |
| 68 case kTaskManagerSharedMem: | 67 case kTaskManagerSharedMem: |
| 69 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN; | 68 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN; |
| 70 case kTaskManagerPrivateMem: | 69 case kTaskManagerPrivateMem: |
| 71 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN; | 70 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN; |
| 72 case kTaskManagerCPU: | 71 case kTaskManagerCPU: |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 g_signal_connect(G_OBJECT(dialog_), "response", G_CALLBACK(OnResponse), this); | 318 g_signal_connect(G_OBJECT(dialog_), "response", G_CALLBACK(OnResponse), this); |
| 320 g_signal_connect(G_OBJECT(dialog_), "button-release-event", | 319 g_signal_connect(G_OBJECT(dialog_), "button-release-event", |
| 321 G_CALLBACK(OnButtonReleaseEvent), this); | 320 G_CALLBACK(OnButtonReleaseEvent), this); |
| 322 gtk_widget_add_events(dialog_, | 321 gtk_widget_add_events(dialog_, |
| 323 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); | 322 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); |
| 324 | 323 |
| 325 CreateTaskManagerTreeview(); | 324 CreateTaskManagerTreeview(); |
| 326 gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview_), TRUE); | 325 gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview_), TRUE); |
| 327 gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(treeview_), | 326 gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(treeview_), |
| 328 GTK_TREE_VIEW_GRID_LINES_HORIZONTAL); | 327 GTK_TREE_VIEW_GRID_LINES_HORIZONTAL); |
| 328 g_signal_connect(G_OBJECT(treeview_), "button-press-event", |
| 329 G_CALLBACK(OnButtonPressEvent), this); |
| 329 g_signal_connect(G_OBJECT(treeview_), "button-release-event", | 330 g_signal_connect(G_OBJECT(treeview_), "button-release-event", |
| 330 G_CALLBACK(OnButtonReleaseEvent), this); | 331 G_CALLBACK(OnButtonReleaseEvent), this); |
| 331 gtk_widget_add_events(treeview_, | 332 gtk_widget_add_events(treeview_, |
| 332 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); | 333 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); |
| 333 | 334 |
| 334 // Hide some columns by default | 335 // Hide some columns by default |
| 335 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false); | 336 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false); |
| 336 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false); | 337 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false); |
| 337 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false); | 338 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false); |
| 338 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false); | 339 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false); |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 g_list_free(paths); | 462 g_list_free(paths); |
| 462 } | 463 } |
| 463 | 464 |
| 464 void TaskManagerGtk::ShowContextMenu() { | 465 void TaskManagerGtk::ShowContextMenu() { |
| 465 if (!menu_controller_.get()) | 466 if (!menu_controller_.get()) |
| 466 menu_controller_.reset(new ContextMenuController(this)); | 467 menu_controller_.reset(new ContextMenuController(this)); |
| 467 | 468 |
| 468 menu_controller_->RunMenu(); | 469 menu_controller_->RunMenu(); |
| 469 } | 470 } |
| 470 | 471 |
| 472 void TaskManagerGtk::ActivateFocusedTab() { |
| 473 GtkTreeSelection* selection = gtk_tree_view_get_selection( |
| 474 GTK_TREE_VIEW(treeview_)); |
| 475 |
| 476 // If the user has just double clicked, only one item is selected. |
| 477 GtkTreeModel* model; |
| 478 GList* selected = gtk_tree_selection_get_selected_rows(selection, &model); |
| 479 int row = GetRowNumForPath(reinterpret_cast<GtkTreePath*>(selected->data)); |
| 480 task_manager_->ActivateProcess(row); |
| 481 } |
| 482 |
| 471 // static | 483 // static |
| 472 void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id, | 484 void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id, |
| 473 TaskManagerGtk* task_manager) { | 485 TaskManagerGtk* task_manager) { |
| 474 if (response_id == GTK_RESPONSE_DELETE_EVENT) { | 486 if (response_id == GTK_RESPONSE_DELETE_EVENT) { |
| 475 instance_ = NULL; | 487 instance_ = NULL; |
| 476 delete task_manager; | 488 delete task_manager; |
| 477 } else if (response_id == kTaskManagerResponseKill) { | 489 } else if (response_id == kTaskManagerResponseKill) { |
| 478 task_manager->KillSelectedProcesses(); | 490 task_manager->KillSelectedProcesses(); |
| 479 } | 491 } |
| 480 } | 492 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 494 } | 506 } |
| 495 } | 507 } |
| 496 g_list_free(paths); | 508 g_list_free(paths); |
| 497 | 509 |
| 498 bool sensitive = (paths != NULL) && !selection_contains_browser_process; | 510 bool sensitive = (paths != NULL) && !selection_contains_browser_process; |
| 499 gtk_dialog_set_response_sensitive(GTK_DIALOG(task_manager->dialog_), | 511 gtk_dialog_set_response_sensitive(GTK_DIALOG(task_manager->dialog_), |
| 500 kTaskManagerResponseKill, sensitive); | 512 kTaskManagerResponseKill, sensitive); |
| 501 } | 513 } |
| 502 | 514 |
| 503 // static | 515 // static |
| 516 gboolean TaskManagerGtk::OnButtonPressEvent(GtkWidget* widget, |
| 517 GdkEventButton* event, |
| 518 TaskManagerGtk* task_manager) { |
| 519 if (event->type == GDK_2BUTTON_PRESS) |
| 520 task_manager->ActivateFocusedTab(); |
| 521 |
| 522 return FALSE; |
| 523 } |
| 524 |
| 525 // static |
| 504 gboolean TaskManagerGtk::OnButtonReleaseEvent(GtkWidget* widget, | 526 gboolean TaskManagerGtk::OnButtonReleaseEvent(GtkWidget* widget, |
| 505 GdkEventButton* event, | 527 GdkEventButton* event, |
| 506 TaskManagerGtk* task_manager) { | 528 TaskManagerGtk* task_manager) { |
| 507 // We don't want to open the context menu in the treeview. | 529 // We don't want to open the context menu in the treeview. |
| 508 if (widget == task_manager->treeview_) | 530 if (widget == task_manager->treeview_) |
| 509 return TRUE; | 531 return TRUE; |
| 510 | 532 |
| 511 if (event->button == 3) | 533 if (event->button == 3) |
| 512 task_manager->ShowContextMenu(); | 534 task_manager->ShowContextMenu(); |
| 513 | 535 |
| 514 return FALSE; | 536 return FALSE; |
| 515 } | 537 } |
| OLD | NEW |