diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-30 01:29:42 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-30 01:29:42 +0000 |
commit | 21a00fd62cb2760b12912697e9af1fb95aaf613c (patch) | |
tree | 0fddc04c0f7a00ba6fed3405b5fa43f6227661cc /chrome | |
parent | 9aa918ebe480151f8ef780b3aaec82921184c7e3 (diff) | |
download | chromium_src-21a00fd62cb2760b12912697e9af1fb95aaf613c.zip chromium_src-21a00fd62cb2760b12912697e9af1fb95aaf613c.tar.gz chromium_src-21a00fd62cb2760b12912697e9af1fb95aaf613c.tar.bz2 |
gtk: Add the 'Stats for nerds' link to the task manager.
BUG=17851
TEST=Open the task manager. Click on the 'Stats for nerds' link. Browser should navigate to about:memory.
Review URL: http://codereview.chromium.org/159616
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22035 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/gtk/task_manager_gtk.cc | 36 | ||||
-rw-r--r-- | chrome/browser/gtk/task_manager_gtk.h | 3 |
2 files changed, 39 insertions, 0 deletions
diff --git a/chrome/browser/gtk/task_manager_gtk.cc b/chrome/browser/gtk/task_manager_gtk.cc index 5e55a2af..f1cb25b 100644 --- a/chrome/browser/gtk/task_manager_gtk.cc +++ b/chrome/browser/gtk/task_manager_gtk.cc @@ -6,12 +6,16 @@ #include <gdk/gdkkeysyms.h> +#include <algorithm> #include <vector> #include "app/l10n_util.h" #include "base/gfx/gtk_util.h" #include "base/logging.h" +#include "chrome/browser/browser_list.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/browser_window.h" +#include "chrome/browser/gtk/gtk_chrome_link_button.h" #include "chrome/browser/gtk/menu_gtk.h" #include "chrome/common/gtk_util.h" #include "chrome/common/pref_names.h" @@ -28,6 +32,9 @@ const int kDefaultHeight = 270; // The resource id for the 'End process' button. const gint kTaskManagerResponseKill = 1; +// The resource id for the 'Stats for nerds' link button. +const gint kTaskManagerAboutMemoryLink = 2; + enum TaskManagerColumn { kTaskManagerIcon, kTaskManagerPage, @@ -318,6 +325,16 @@ void TaskManagerGtk::Init() { kTaskManagerResponseKill, NULL); + GtkWidget* link = gtk_chrome_link_button_new( + l10n_util::GetStringUTF8(IDS_TASK_MANAGER_ABOUT_MEMORY_LINK).c_str()); + gtk_dialog_add_action_widget(GTK_DIALOG(dialog_), link, + kTaskManagerAboutMemoryLink); + + // Setting the link widget to secondary positions the button on the left side + // of the action area (vice versa for RTL layout). + gtk_button_box_set_child_secondary( + GTK_BUTTON_BOX(GTK_DIALOG(dialog_)->action_area), link, TRUE); + ConnectAccelerators(); gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog_)->vbox), @@ -534,6 +551,23 @@ void TaskManagerGtk::ActivateFocusedTab() { task_manager_->ActivateProcess(row); } +void TaskManagerGtk::OnLinkActivated() { + Browser* browser = BrowserList::GetLastActive(); + DCHECK(browser); + browser->OpenURL(GURL("about:memory"), GURL(), NEW_FOREGROUND_TAB, + PageTransition::LINK); + // In case the browser window is minimzed, show it. If this is an application + // or popup, we can only have one tab, hence we need to process this in a + // tabbed browser window. Currently, |browser| is pointing to the application, + // popup window. Therefore, we have to retrieve the last active tab again, + // since a new window has been used. + if (browser->type() & Browser::TYPE_APP_POPUP) { + browser = BrowserList::GetLastActive(); + DCHECK(browser); + } + browser->window()->Show(); +} + // static void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id, TaskManagerGtk* task_manager) { @@ -560,6 +594,8 @@ void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id, delete task_manager; } else if (response_id == kTaskManagerResponseKill) { task_manager->KillSelectedProcesses(); + } else if (response_id == kTaskManagerAboutMemoryLink) { + task_manager->OnLinkActivated(); } } diff --git a/chrome/browser/gtk/task_manager_gtk.h b/chrome/browser/gtk/task_manager_gtk.h index e5ce387..f4ebf2a 100644 --- a/chrome/browser/gtk/task_manager_gtk.h +++ b/chrome/browser/gtk/task_manager_gtk.h @@ -61,6 +61,9 @@ class TaskManagerGtk : public TaskManagerModelObserver { // Activates the tab associated with the focused row. void ActivateFocusedTab(); + // Opens about:memory in a new foreground tab. + void OnLinkActivated(); + // response signal handler that notifies us of dialog responses. static void OnResponse(GtkDialog* dialog, gint response_id, TaskManagerGtk* task_manager); |