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 |