| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_EXO_XDG_SHELL_SURFACE_H_ |
| #define COMPONENTS_EXO_XDG_SHELL_SURFACE_H_ |
| |
| #include <cstdint> |
| #include <memory> |
| #include <string> |
| |
| #include "ash/display/window_tree_host_manager.h" |
| #include "ash/wm/window_state_observer.h" |
| #include "base/containers/circular_deque.h" |
| #include "base/macros.h" |
| #include "base/optional.h" |
| #include "base/strings/string16.h" |
| #include "components/exo/shell_surface.h" |
| #include "components/exo/surface_observer.h" |
| #include "components/exo/surface_tree_host.h" |
| |
| #include "ui/aura/window_observer.h" |
| #include "ui/base/hit_test.h" |
| #include "ui/compositor/compositor_lock.h" |
| #include "ui/display/display_observer.h" |
| #include "ui/gfx/geometry/point.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/geometry/vector2d.h" |
| #include "ui/views/widget/widget_delegate.h" |
| #include "ui/wm/public/activation_change_observer.h" |
| |
| namespace ash { |
| namespace mojom { |
| enum class WindowPinType; |
| } |
| } // namespace ash |
| |
| namespace exo { |
| class Surface; |
| |
| // This class implements shell surface for XDG protocol. |
| class XdgShellSurface : public ShellSurface { |
| public: |
| // The |origin| is the initial position in screen coordinates. The position |
| // specified as part of the geometry is relative to the shell surface. |
| XdgShellSurface(Surface* surface, |
| const gfx::Point& origin, |
| bool activatable, |
| bool can_minimize, |
| int container); |
| ~XdgShellSurface() override; |
| |
| bool x_flipped() const { return x_flipped_; } |
| void set_x_flipped(bool flipped) { x_flipped_ = flipped; } |
| |
| bool y_flipped() const { return y_flipped_; } |
| void set_y_flipped(bool flipped) { y_flipped_ = flipped; } |
| |
| private: |
| // Used by positioner to layout cascading menus in opposite |
| // direction when the layout does not fit to the work area. |
| bool y_flipped_ = false; |
| bool x_flipped_ = false; |
| |
| DISALLOW_COPY_AND_ASSIGN(XdgShellSurface); |
| }; |
| |
| } // namespace exo |
| |
| #endif // COMPONENTS_EXO_XDG_SHELL_SURFACE_H_ |