summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/shell/shell_main.cc17
-rw-r--r--ash/wm/workspace/workspace_manager.cc18
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));
}
}