Home | History | Annotate | Download | only in wm
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef ASH_WM_DEFAULT_WINDOW_RESIZER_H_
      6 #define ASH_WM_DEFAULT_WINDOW_RESIZER_H_
      7 
      8 #include "ash/wm/window_resizer.h"
      9 #include "base/compiler_specific.h"
     10 
     11 namespace ash {
     12 
     13 // WindowResizer is used by ToplevelWindowEventFilter to handle dragging, moving
     14 // or resizing a window. All coordinates passed to this are in the parent
     15 // windows coordiantes.
     16 class ASH_EXPORT DefaultWindowResizer : public WindowResizer {
     17  public:
     18   virtual ~DefaultWindowResizer();
     19 
     20   // Creates a new DefaultWindowResizer. The caller takes ownership of the
     21   // returned object. Returns NULL if not resizable.
     22   static DefaultWindowResizer* Create(aura::Window* window,
     23                                       const gfx::Point& location,
     24                                       int window_component,
     25                                       aura::client::WindowMoveSource source);
     26 
     27   // Returns true if the drag will result in changing the window in anyway.
     28   bool is_resizable() const { return details_.is_resizable; }
     29 
     30   bool changed_size() const {
     31     return !(details_.bounds_change & kBoundsChange_Repositions);
     32   }
     33   aura::Window* target_window() const { return details_.window; }
     34 
     35   // WindowResizer:
     36   virtual void Drag(const gfx::Point& location, int event_flags) OVERRIDE;
     37   virtual void CompleteDrag(int event_flags) OVERRIDE;
     38   virtual void RevertDrag() OVERRIDE;
     39   virtual aura::Window* GetTarget() OVERRIDE;
     40   virtual const gfx::Point& GetInitialLocation() const OVERRIDE;
     41 
     42  private:
     43   explicit DefaultWindowResizer(const Details& details);
     44 
     45   const Details details_;
     46 
     47   // Set to true once Drag() is invoked and the bounds of the window change.
     48   bool did_move_or_resize_;
     49 
     50   DISALLOW_COPY_AND_ASSIGN(DefaultWindowResizer);
     51 };
     52 
     53 }  // namespace aura
     54 
     55 #endif  // ASH_WM_DEFAULT_WINDOW_RESIZER_H_
     56