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 |