diff options
-rw-r--r-- | ash/shell/shell_main.cc | 17 | ||||
-rw-r--r-- | ash/wm/workspace/workspace_manager.cc | 18 |
2 files changed, 18 insertions, 17 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(); diff --git a/ash/wm/workspace/workspace_manager.cc b/ash/wm/workspace/workspace_manager.cc index ce334c5..59befcf 100644 --- a/ash/wm/workspace/workspace_manager.cc +++ b/ash/wm/workspace/workspace_manager.cc @@ -9,6 +9,7 @@ #include "ash/shell.h" #include "ash/wm/property_util.h" #include "ash/wm/shelf_layout_manager.h" +#include "ash/wm/window_resizer.h" #include "ash/wm/window_util.h" #include "ash/wm/workspace/managed_workspace.h" #include "ash/wm/workspace/maximized_workspace.h" @@ -49,22 +50,13 @@ void SetWindowLayerVisibility(const std::vector<aura::Window*>& windows, } } -// TODO(sky): this is a copy of that in ToplevelWindowEventFilter. Figure out -// the right place to put it. -int AlignToGrid(int location, int grid_size) { - if (grid_size <= 1 || location % grid_size == 0) - return location; - return floor(static_cast<float>(location) / static_cast<float>(grid_size) + - .5f) * grid_size; -} - gfx::Rect AlignRectToGrid(const gfx::Rect& rect, int grid_size) { if (grid_size <= 1) return rect; - return gfx::Rect(AlignToGrid(rect.x(), grid_size), - AlignToGrid(rect.y(), grid_size), - AlignToGrid(rect.width(), grid_size), - AlignToGrid(rect.height(), grid_size)); + return gfx::Rect(ash::WindowResizer::AlignToGrid(rect.x(), grid_size), + ash::WindowResizer::AlignToGrid(rect.y(), grid_size), + ash::WindowResizer::AlignToGrid(rect.width(), grid_size), + ash::WindowResizer::AlignToGrid(rect.height(), grid_size)); } } |