diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-24 23:12:58 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-24 23:12:58 +0000 |
commit | 6613ac5497ed7981a83aa979609dd6ce07806031 (patch) | |
tree | 851a95170a93cc22c9a3ead00ce5365596b025b5 /ash/shell/shell_main.cc | |
parent | 4de895b129163ad0ab036d8f0a4d248d0aedc922 (diff) | |
download | chromium_src-6613ac5497ed7981a83aa979609dd6ce07806031.zip chromium_src-6613ac5497ed7981a83aa979609dd6ce07806031.tar.gz chromium_src-6613ac5497ed7981a83aa979609dd6ce07806031.tar.bz2 |
Fixes crash in ash_shell from not setting WIndowWatcher on
delegate. Also centralize call to AlignRectToGrid.
BUG=none
TEST=none
R=ben@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9460013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123578 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/shell/shell_main.cc')
-rw-r--r-- | ash/shell/shell_main.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/ash/shell/shell_main.cc b/ash/shell/shell_main.cc index 5b18b90a..9d34bdf 100644 --- a/ash/shell/shell_main.cc +++ b/ash/shell/shell_main.cc @@ -118,6 +118,8 @@ class LauncherDelegateImpl : public ash::LauncherDelegate { : watcher_(watcher) { } + void set_watcher(WindowWatcher* watcher) { watcher_ = watcher; } + // LauncherDelegate overrides: virtual void CreateNewWindow() OVERRIDE { ash::shell::ToplevelWindow::CreateParams create_params; @@ -154,9 +156,13 @@ class LauncherDelegateImpl : public ash::LauncherDelegate { class ShellDelegateImpl : public ash::ShellDelegate { public: - ShellDelegateImpl() {} + ShellDelegateImpl() : watcher_(NULL), launcher_delegate_(NULL) {} - void set_watcher(WindowWatcher* watcher) { watcher_ = watcher; } + void SetWatcher(WindowWatcher* watcher) { + watcher_ = watcher; + if (launcher_delegate_) + launcher_delegate_->set_watcher(watcher); + } virtual views::Widget* CreateStatusArea() OVERRIDE { return ash::internal::CreateStatusArea(); @@ -198,13 +204,16 @@ class ShellDelegateImpl : public ash::ShellDelegate { virtual ash::LauncherDelegate* CreateLauncherDelegate( ash::LauncherModel* model) OVERRIDE { - return new LauncherDelegateImpl(watcher_); + launcher_delegate_ = new LauncherDelegateImpl(watcher_); + return launcher_delegate_; } private: // Used to update Launcher. Owned by main. WindowWatcher* watcher_; + LauncherDelegateImpl* launcher_delegate_; + DISALLOW_COPY_AND_ASSIGN(ShellDelegateImpl); }; @@ -238,7 +247,7 @@ int main(int argc, char** argv) { ash::Shell::CreateInstance(delegate); scoped_ptr<WindowWatcher> window_watcher(new WindowWatcher); - delegate->set_watcher(window_watcher.get()); + delegate->SetWatcher(window_watcher.get()); ash::shell::InitWindowTypeLauncher(); |