Index: chrome/browser/ui/webui/task_manager_dialog.cc |
diff --git a/chrome/browser/ui/webui/task_manager_dialog.cc b/chrome/browser/ui/webui/task_manager_dialog.cc |
index 4070c3edc71350dc9940e7f52f3f3856fef5a91d..a855836ab0b1d05545fd94168dabe4e17dbde245 100644 |
--- a/chrome/browser/ui/webui/task_manager_dialog.cc |
+++ b/chrome/browser/ui/webui/task_manager_dialog.cc |
@@ -7,11 +7,15 @@ |
#include "base/bind.h" |
#include "base/memory/singleton.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/platform_util.h" |
+#include "chrome/browser/prefs/pref_service.h" |
+#include "chrome/browser/prefs/scoped_user_pref_update.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_dialogs.h" |
#include "chrome/browser/ui/browser_list.h" |
#include "chrome/browser/ui/webui/html_dialog_ui.h" |
+#include "chrome/common/pref_names.h" |
#include "chrome/common/url_constants.h" |
#include "grit/google_chrome_strings.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -56,6 +60,23 @@ class TaskManagerDialogImpl : public HtmlDialogUIDelegate { |
std::vector<WebUIMessageHandler*>* handlers) const OVERRIDE { |
} |
virtual void GetDialogSize(gfx::Size* size) const OVERRIDE { |
+ // If we previously saved the dialog's bounds, use them. |
+ if (g_browser_process->local_state()) { |
+ const DictionaryValue* placement_pref = |
+ g_browser_process->local_state()->GetDictionary( |
+ prefs::kTaskManagerWindowPlacement); |
+ int top = 0, left = 0, bottom = 1, right = 1; |
James Hawkins
2011/11/30 16:20:32
Why do you set top,left to 0 and bottom,right to 1
NaveenBobbili (Motorola)
2011/12/01 07:31:21
I changed it to only store width and height now.
|
+ if (placement_pref && |
+ placement_pref->GetInteger("top", &top) && |
+ placement_pref->GetInteger("left", &left) && |
+ placement_pref->GetInteger("bottom", &bottom) && |
+ placement_pref->GetInteger("right", &right)) { |
+ size->SetSize(std::max(1, right - left), std::max(1,bottom - top)); |
James Hawkins
2011/11/30 16:20:32
Space after comma.
NaveenBobbili (Motorola)
2011/12/01 07:31:21
Done.
|
+ return; |
+ } |
+ } |
+ |
+ // Otherwise set default size. |
size->SetSize(640, 480); |
} |
virtual std::string GetDialogArgs() const OVERRIDE { |
@@ -71,10 +92,27 @@ class TaskManagerDialogImpl : public HtmlDialogUIDelegate { |
virtual bool ShouldShowDialogTitle() const OVERRIDE { |
return false; |
} |
+ |
James Hawkins
2011/11/30 16:20:32
You added a blank line here, but there are not bla
NaveenBobbili (Motorola)
2011/12/01 07:31:21
Sure . Done.
|
virtual bool HandleContextMenu(const ContextMenuParams& params) OVERRIDE { |
return true; |
} |
+ virtual void StoreDialogSize(gfx::Rect dialog_bounds) OVERRIDE { |
+ // Store the dialog's size so we can restore it the next time it's opened. |
+ if (g_browser_process->local_state()) { |
+ DictionaryPrefUpdate update(g_browser_process->local_state(), |
+ prefs::kTaskManagerWindowPlacement); |
+ DictionaryValue* placement_pref = update.Get(); |
+ // Note that we store left/top for consistency with Windows, but that we |
+ // *don't* restore them. |
James Hawkins
2011/11/30 16:20:32
If this is the case, then why not just set "width"
NaveenBobbili (Motorola)
2011/12/01 07:31:21
I changed it to only store width and height now.
|
+ placement_pref->SetInteger("left", dialog_bounds.x()); |
+ placement_pref->SetInteger("top", dialog_bounds.y()); |
+ placement_pref->SetInteger("right", dialog_bounds.right()); |
+ placement_pref->SetInteger("bottom", dialog_bounds.bottom()); |
+ placement_pref->SetBoolean("maximized", false); |
+ } |
+ } |
+ |
private: |
void ShowDialog(bool is_background_page_mode); |
void OpenHtmlDialog(); |