summaryrefslogtreecommitdiffstats
path: root/ash/shell/shell_main.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-24 23:12:58 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-24 23:12:58 +0000
commit6613ac5497ed7981a83aa979609dd6ce07806031 (patch)
tree851a95170a93cc22c9a3ead00ce5365596b025b5 /ash/shell/shell_main.cc
parent4de895b129163ad0ab036d8f0a4d248d0aedc922 (diff)
downloadchromium_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.cc17
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();