Chromium Code Reviews| Index: ui/views/controls/native/native_view_host.h |
| diff --git a/ui/views/controls/native/native_view_host.h b/ui/views/controls/native/native_view_host.h |
| index bdc51510550ca1569853639a0d615f1158159f28..d6b22fcc4d4ee1d7f195fc06f55533b74265ab84 100644 |
| --- a/ui/views/controls/native/native_view_host.h |
| +++ b/ui/views/controls/native/native_view_host.h |
| @@ -15,6 +15,7 @@ namespace views { |
| class NativeViewHostAuraTest; |
| class NativeViewHostWrapper; |
| + |
| // If a NativeViewHost's native view is a Widget, this native window |
| // property is set on the widget, pointing to the owning NativeViewHost. |
| extern const char kWidgetNativeViewHostKey[]; |
| @@ -31,7 +32,39 @@ class VIEWS_EXPORT NativeViewHost : public View { |
| // Should views render the focus when on native controls? |
| static const bool kRenderNativeControlFocus; |
| - NativeViewHost(); |
| + // When performing fast resizes the contents is not actually resized, but |
| + // instead the contents is positioned and clipped to give the impression of |
| + // resizing. Gravity indicates the positioning of the content relative to the |
| + // clipping. The default value, northwest, indicates that the top left corner |
| + // of the clip and the content should align, so the bottom and right sides of |
| + // the content will be clipped. For a value like south the bottom edges will |
| + // align at their respective middles, thus the full vertical resize will be |
| + // reflected on the top, but half of the horizontal resize will be reflected |
| + // on the left and right sides. The following list is the gravity values and |
| + // their alignment points for reference, coordinates relative to the |
| + // respective system for the clip or contents: |
| + // NorthWest (0, 0) |
| + // North (width/2, 0) |
| + // NorthEast (width, 0) |
| + // East (width, height/2) |
| + // SouthEast (width, height) |
| + // South (width/2, height) |
| + // SouthWest (0, height) |
| + // West (0, height/2) |
| + // Center (width/2, height/2) |
| + enum Gravity { |
| + GRAVITY_NORTHWEST, |
| + GRAVITY_NORTH, |
| + GRAVITY_NORTHEAST, |
| + GRAVITY_EAST, |
| + GRAVITY_SOUTHEAST, |
| + GRAVITY_SOUTH, |
| + GRAVITY_SOUTHWEST, |
| + GRAVITY_WEST, |
| + GRAVITY_CENTER, |
| + }; |
| + |
| + NativeViewHost(); |
| virtual ~NativeViewHost(); |
| // Attach a gfx::NativeView to this View. Its bounds will be kept in sync |
| @@ -74,6 +107,23 @@ class VIEWS_EXPORT NativeViewHost : public View { |
| return fast_resize_at_last_layout_; |
| } |
| + // Gravity controls how the clip is positioned relative to the native |
| + // view. The specifics of this are discussed in the comment above the related |
| + // enum. This call only sets the value being used, but does not cause a |
| + // re-layout, so ShowWidget, via Layout, must be called before the new gravity |
| + // will have an effect. |
| + void set_fast_resize_gravity(Gravity gravity) { |
| + fast_resize_gravity_ = gravity; |
| + } |
| + Gravity fast_resize_gravity() { |
|
sky
2013/09/26 22:10:54
const
rharrison
2013/09/30 20:48:45
Done.
|
| + return fast_resize_gravity_; |
| + } |
| + |
| + // Returns the appropriate, as in the comment above discussing gravity, |
| + // scaling factor for the current gravity. |
| + float GetWidthScaleFactor() const; |
| + float GetHeightScaleFactor() const; |
| + |
| // Accessor for |native_view_|. |
| gfx::NativeView native_view() const { return native_view_; } |
| @@ -123,6 +173,9 @@ class VIEWS_EXPORT NativeViewHost : public View { |
| // Value of |fast_resize_| during the last call to Layout. |
| bool fast_resize_at_last_layout_; |
| + // Gravity value to be used on the next call to ShowWidget. |
| + Gravity fast_resize_gravity_; |
| + |
| // The view that should be given focus when this NativeViewHost is focused. |
| View* focus_view_; |