| 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 <gdk/gdkkeysyms.h> | 7 #include <gdk/gdkkeysyms.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 process_count_(0) { | 242 process_count_(0) { |
| 243 Init(); | 243 Init(); |
| 244 } | 244 } |
| 245 | 245 |
| 246 // static | 246 // static |
| 247 TaskManagerGtk* TaskManagerGtk::instance_ = NULL; | 247 TaskManagerGtk* TaskManagerGtk::instance_ = NULL; |
| 248 | 248 |
| 249 TaskManagerGtk::~TaskManagerGtk() { | 249 TaskManagerGtk::~TaskManagerGtk() { |
| 250 task_manager_->OnWindowClosed(); | 250 task_manager_->OnWindowClosed(); |
| 251 model_->RemoveObserver(this); | 251 model_->RemoveObserver(this); |
| 252 |
| 253 gtk_accel_group_disconnect_key(accel_group_, GDK_w, GDK_CONTROL_MASK); |
| 254 gtk_window_remove_accel_group(GTK_WINDOW(dialog_), accel_group_); |
| 255 g_object_unref(accel_group_); |
| 256 accel_group_ = NULL; |
| 257 |
| 258 gtk_widget_destroy(dialog_); |
| 252 } | 259 } |
| 253 | 260 |
| 254 //////////////////////////////////////////////////////////////////////////////// | 261 //////////////////////////////////////////////////////////////////////////////// |
| 255 // TaskManagerGtk, TaskManagerModelObserver implementation: | 262 // TaskManagerGtk, TaskManagerModelObserver implementation: |
| 256 | 263 |
| 257 void TaskManagerGtk::OnModelChanged() { | 264 void TaskManagerGtk::OnModelChanged() { |
| 258 // Nothing to do. | 265 // Nothing to do. |
| 259 } | 266 } |
| 260 | 267 |
| 261 void TaskManagerGtk::OnItemsChanged(int start, int length) { | 268 void TaskManagerGtk::OnItemsChanged(int start, int length) { |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 } | 431 } |
| 425 } | 432 } |
| 426 | 433 |
| 427 // Otherwise, just set a default size (GTK will override this if it's not | 434 // Otherwise, just set a default size (GTK will override this if it's not |
| 428 // large enough to hold the window's contents). | 435 // large enough to hold the window's contents). |
| 429 gtk_window_set_default_size( | 436 gtk_window_set_default_size( |
| 430 GTK_WINDOW(dialog_), kDefaultWidth, kDefaultHeight); | 437 GTK_WINDOW(dialog_), kDefaultWidth, kDefaultHeight); |
| 431 } | 438 } |
| 432 | 439 |
| 433 void TaskManagerGtk::ConnectAccelerators() { | 440 void TaskManagerGtk::ConnectAccelerators() { |
| 434 GtkAccelGroup* accel_group = gtk_accel_group_new(); | 441 accel_group_ = gtk_accel_group_new(); |
| 435 gtk_window_add_accel_group(GTK_WINDOW(dialog_), accel_group); | 442 gtk_window_add_accel_group(GTK_WINDOW(dialog_), accel_group_); |
| 436 | 443 |
| 437 // Drop the initial ref on |accel_group| so |dialog_| will own it. | 444 gtk_accel_group_connect(accel_group_, |
| 438 g_object_unref(accel_group); | |
| 439 | |
| 440 gtk_accel_group_connect(accel_group, | |
| 441 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), | 445 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), |
| 442 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), | 446 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), |
| 443 this, NULL)); | 447 this, NULL)); |
| 444 } | 448 } |
| 445 | 449 |
| 446 void TaskManagerGtk::CreateTaskManagerTreeview() { | 450 void TaskManagerGtk::CreateTaskManagerTreeview() { |
| 447 treeview_ = gtk_tree_view_new(); | 451 treeview_ = gtk_tree_view_new(); |
| 448 | 452 |
| 449 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); | 453 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); |
| 450 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); | 454 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 710 gboolean TaskManagerGtk::OnGtkAccelerator(GtkAccelGroup* accel_group, | 714 gboolean TaskManagerGtk::OnGtkAccelerator(GtkAccelGroup* accel_group, |
| 711 GObject* acceleratable, | 715 GObject* acceleratable, |
| 712 guint keyval, | 716 guint keyval, |
| 713 GdkModifierType modifier, | 717 GdkModifierType modifier, |
| 714 TaskManagerGtk* task_manager) { | 718 TaskManagerGtk* task_manager) { |
| 715 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) { | 719 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) { |
| 716 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget | 720 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget |
| 717 // is destroyed. The deleted object will receive gtk signals otherwise. | 721 // is destroyed. The deleted object will receive gtk signals otherwise. |
| 718 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_), | 722 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_), |
| 719 GTK_RESPONSE_DELETE_EVENT); | 723 GTK_RESPONSE_DELETE_EVENT); |
| 720 gtk_widget_destroy(task_manager->dialog_); | |
| 721 } | 724 } |
| 722 | 725 |
| 723 return TRUE; | 726 return TRUE; |
| 724 } | 727 } |
| OLD | NEW |