Index: mojo/examples/wm_flow/wm/frame_controller.cc |
diff --git a/mojo/examples/wm_flow/wm/frame_controller.cc b/mojo/examples/wm_flow/wm/frame_controller.cc |
index 381dc0243e64295997115986c7ca65d6295d075f..f8d8b495a6cc78d31f7fa807b9a3039175bf00d9 100644 |
--- a/mojo/examples/wm_flow/wm/frame_controller.cc |
+++ b/mojo/examples/wm_flow/wm/frame_controller.cc |
@@ -6,11 +6,13 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "mojo/services/public/cpp/view_manager/view.h" |
+#include "mojo/services/window_manager/window_manager_app.h" |
#include "mojo/views/native_widget_view_manager.h" |
#include "ui/views/background.h" |
#include "ui/views/controls/button/label_button.h" |
#include "ui/views/layout/layout_manager.h" |
#include "ui/views/widget/widget.h" |
+#include "ui/wm/public/activation_client.h" |
class FrameController::LayoutManager : public views::LayoutManager, |
public views::ButtonListener { |
@@ -69,22 +71,49 @@ class FrameController::LayoutManager : public views::LayoutManager, |
DISALLOW_COPY_AND_ASSIGN(LayoutManager); |
}; |
+class FrameController::FrameEventHandler : public ui::EventHandler { |
+ public: |
+ explicit FrameEventHandler(FrameController* frame_controller) |
+ : frame_controller_(frame_controller) {} |
+ virtual ~FrameEventHandler() {} |
+ |
+ private: |
+ |
+ // Overriden from ui::EventHandler: |
+ virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { |
+ if (event->type() == ui::ET_MOUSE_PRESSED) |
+ frame_controller_->ActivateWindow(); |
+ } |
+ |
+ FrameController* frame_controller_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FrameEventHandler); |
+}; |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// FrameController, public: |
-FrameController::FrameController(mojo::View* view, mojo::View** app_view) |
+FrameController::FrameController( |
+ mojo::View* view, |
+ mojo::View** app_view, |
+ aura::client::ActivationClient* activation_client, |
+ mojo::WindowManagerApp* window_manager_app) |
: view_(view), |
app_view_(mojo::View::Create(view->view_manager())), |
frame_view_(new views::View), |
frame_view_layout_manager_(new LayoutManager(this)), |
widget_(new views::Widget), |
- maximized_(false) { |
+ maximized_(false), |
+ activation_client_(activation_client), |
+ window_manager_app_(window_manager_app) { |
view_->AddChild(app_view_); |
view_->AddObserver(this); |
*app_view = app_view_; |
frame_view_->set_background( |
views::Background::CreateSolidBackground(SK_ColorBLUE)); |
frame_view_->SetLayoutManager(frame_view_layout_manager_); |
+ frame_event_handler_.reset(new FrameEventHandler(this)); |
+ frame_view_->AddPreTargetHandler(frame_event_handler_.get()); |
views::Widget::InitParams params( |
views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); |
params.native_widget = new mojo::NativeWidgetViewManager(widget_, view_); |
@@ -111,6 +140,11 @@ void FrameController::ToggleMaximize() { |
view_->SetBounds(restored_bounds_); |
} |
+void FrameController::ActivateWindow() { |
+ aura::Window* window = window_manager_app_->GetWindowForViewId(view_->id()); |
+ activation_client_->ActivateWindow(window); |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// FrameController, mojo::ViewObserver implementation: |