Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1357)

Side by Side Diff: chrome/browser/gtk/task_manager_gtk.cc

Issue 149363: Connect the ctrl-w accelerator to the task manager dialog, and close the wind... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/gtk/task_manager_gtk.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
8
7 #include <vector> 9 #include <vector>
8 10
9 #include "app/l10n_util.h" 11 #include "app/l10n_util.h"
10 #include "base/gfx/gtk_util.h" 12 #include "base/gfx/gtk_util.h"
11 #include "base/logging.h" 13 #include "base/logging.h"
12 #include "chrome/browser/gtk/menu_gtk.h" 14 #include "chrome/browser/gtk/menu_gtk.h"
13 #include "chrome/common/gtk_util.h" 15 #include "chrome/common/gtk_util.h"
14 #include "grit/chromium_strings.h" 16 #include "grit/chromium_strings.h"
15 #include "grit/generated_resources.h" 17 #include "grit/generated_resources.h"
16 18
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 void TaskManagerGtk::Init() { 307 void TaskManagerGtk::Init() {
306 dialog_ = gtk_dialog_new_with_buttons( 308 dialog_ = gtk_dialog_new_with_buttons(
307 l10n_util::GetStringUTF8(IDS_TASK_MANAGER_TITLE).c_str(), 309 l10n_util::GetStringUTF8(IDS_TASK_MANAGER_TITLE).c_str(),
308 // Task Manager window is shared between all browsers. 310 // Task Manager window is shared between all browsers.
309 NULL, 311 NULL,
310 GTK_DIALOG_NO_SEPARATOR, 312 GTK_DIALOG_NO_SEPARATOR,
311 l10n_util::GetStringUTF8(IDS_TASK_MANAGER_KILL).c_str(), 313 l10n_util::GetStringUTF8(IDS_TASK_MANAGER_KILL).c_str(),
312 kTaskManagerResponseKill, 314 kTaskManagerResponseKill,
313 NULL); 315 NULL);
314 316
317 ConnectAccelerators();
318
315 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog_)->vbox), 319 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog_)->vbox),
316 gtk_util::kContentAreaSpacing); 320 gtk_util::kContentAreaSpacing);
317 321
318 g_signal_connect(G_OBJECT(dialog_), "response", G_CALLBACK(OnResponse), this); 322 g_signal_connect(G_OBJECT(dialog_), "response", G_CALLBACK(OnResponse), this);
319 g_signal_connect(G_OBJECT(dialog_), "button-release-event", 323 g_signal_connect(G_OBJECT(dialog_), "button-release-event",
320 G_CALLBACK(OnButtonReleaseEvent), this); 324 G_CALLBACK(OnButtonReleaseEvent), this);
321 gtk_widget_add_events(dialog_, 325 gtk_widget_add_events(dialog_,
322 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); 326 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
323 327
324 // Wrap the treeview widget in a scrolled window in order to have a frame. 328 // Wrap the treeview widget in a scrolled window in order to have a frame.
(...skipping 30 matching lines...) Expand all
355 G_CALLBACK(OnSelectionChanged), this); 359 G_CALLBACK(OnSelectionChanged), this);
356 360
357 gtk_container_add(GTK_CONTAINER(scrolled), treeview_); 361 gtk_container_add(GTK_CONTAINER(scrolled), treeview_);
358 362
359 gtk_window_resize(GTK_WINDOW(dialog_), kDefaultWidth, kDefaultHeight); 363 gtk_window_resize(GTK_WINDOW(dialog_), kDefaultWidth, kDefaultHeight);
360 gtk_widget_show_all(dialog_); 364 gtk_widget_show_all(dialog_);
361 365
362 model_->SetObserver(this); 366 model_->SetObserver(this);
363 } 367 }
364 368
369 void TaskManagerGtk::ConnectAccelerators() {
370 GtkAccelGroup* accel_group = gtk_accel_group_new();
371 gtk_window_add_accel_group(GTK_WINDOW(dialog_), accel_group);
372
373 // Drop the initial ref on |accel_group| so |dialog_| will own it.
374 g_object_unref(accel_group);
375
376 gtk_accel_group_connect(accel_group, GDK_w, GDK_CONTROL_MASK,
377 GtkAccelFlags(0),
378 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), this,
379 NULL));
380 }
381
365 void TaskManagerGtk::CreateTaskManagerTreeview() { 382 void TaskManagerGtk::CreateTaskManagerTreeview() {
366 treeview_ = gtk_tree_view_new(); 383 treeview_ = gtk_tree_view_new();
367 384
368 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); 385 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN);
369 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); 386 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN);
370 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); 387 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN);
371 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); 388 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN);
372 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN); 389 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN);
373 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN); 390 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN);
374 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); 391 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN);
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 TaskManagerGtk* task_manager) { 554 TaskManagerGtk* task_manager) {
538 // We don't want to open the context menu in the treeview. 555 // We don't want to open the context menu in the treeview.
539 if (widget == task_manager->treeview_) 556 if (widget == task_manager->treeview_)
540 return TRUE; 557 return TRUE;
541 558
542 if (event->button == 3) 559 if (event->button == 3)
543 task_manager->ShowContextMenu(); 560 task_manager->ShowContextMenu();
544 561
545 return FALSE; 562 return FALSE;
546 } 563 }
564
565 // static
566 gboolean TaskManagerGtk::OnGtkAccelerator(GtkAccelGroup* accel_group,
567 GObject* acceleratable,
568 guint keyval,
569 GdkModifierType modifier,
570 TaskManagerGtk* task_manager) {
571 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) {
572 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget
573 // is destroyed. The deleted object will receive gtk signals otherwise.
574 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_),
575 GTK_RESPONSE_DELETE_EVENT);
576 gtk_widget_destroy(task_manager->dialog_);
577 }
578
579 return TRUE;
580 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/task_manager_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698