diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-04 00:38:45 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-04 00:38:45 +0000 |
commit | b7aaf42c6a4a3ce2b45801079f6f7dbea073d0e8 (patch) | |
tree | 312d25b9356bfc94bdff0983a831dcd6968d05e8 /views | |
parent | eebc0b413d66975e86be3814103438c3ec154bec (diff) | |
download | chromium_src-b7aaf42c6a4a3ce2b45801079f6f7dbea073d0e8.zip chromium_src-b7aaf42c6a4a3ce2b45801079f6f7dbea073d0e8.tar.gz chromium_src-b7aaf42c6a4a3ce2b45801079f6f7dbea073d0e8.tar.bz2 |
Gets find bar animation/clipping to work on views/gtk.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/340077
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30903 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r-- | views/view.cc | 8 | ||||
-rw-r--r-- | views/widget/widget.h | 4 | ||||
-rw-r--r-- | views/widget/widget_gtk.cc | 4 | ||||
-rw-r--r-- | views/widget/widget_gtk.h | 2 | ||||
-rw-r--r-- | views/widget/widget_win.cc | 4 | ||||
-rw-r--r-- | views/widget/widget_win.h | 2 | ||||
-rw-r--r-- | views/window/window_gtk.cc | 2 | ||||
-rw-r--r-- | views/window/window_win.cc | 4 |
8 files changed, 13 insertions, 17 deletions
diff --git a/views/view.cc b/views/view.cc index 1e1cd20..34ec1c3 100644 --- a/views/view.cc +++ b/views/view.cc @@ -429,14 +429,12 @@ bool View::HitTest(const gfx::Point& l) const { if (HasHitTestMask()) { gfx::Path mask; GetHitTestMask(&mask); + ScopedRegion rgn(mask.CreateNativeRegion()); + // TODO: can this use SkRegion's contains instead? #if defined(OS_WIN) - ScopedHRGN rgn(mask.CreateHRGN()); return !!PtInRegion(rgn, l.x(), l.y()); #elif defined(OS_LINUX) - GdkRegion* region = mask.CreateGdkRegion(); - bool result = gdk_region_point_in(region, l.x(), l.y()); - gdk_region_destroy(region); - return result; + return gdk_region_point_in(rgn.Get(), l.x(), l.y()); #endif } // No mask, but inside our bounds. diff --git a/views/widget/widget.h b/views/widget/widget.h index 7b08737..357f07a 100644 --- a/views/widget/widget.h +++ b/views/widget/widget.h @@ -96,8 +96,8 @@ class Widget { // Places the widget in front of the specified widget in z-order. virtual void MoveAbove(Widget* widget) = 0; - // Sets a shape on the widget. - virtual void SetShape(const gfx::Path& shape) = 0; + // Sets a shape on the widget. This takes ownership of shape. + virtual void SetShape(gfx::NativeRegion shape) = 0; // Hides the widget then closes it after a return to the message loop. virtual void Close() = 0; diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc index 4557286..4edef7c 100644 --- a/views/widget/widget_gtk.cc +++ b/views/widget/widget_gtk.cc @@ -378,12 +378,10 @@ void WidgetGtk::MoveAbove(Widget* widget) { NOTIMPLEMENTED(); } -void WidgetGtk::SetShape(const gfx::Path& shape) { +void WidgetGtk::SetShape(gfx::NativeRegion region) { DCHECK(widget_); DCHECK(widget_->window); - gdk_window_shape_combine_region(widget_->window, NULL, 0, 0); - GdkRegion* region = shape.CreateGdkRegion(); gdk_window_shape_combine_region(widget_->window, region, 0, 0); gdk_region_destroy(region); } diff --git a/views/widget/widget_gtk.h b/views/widget/widget_gtk.h index e97f58e..3799a4a 100644 --- a/views/widget/widget_gtk.h +++ b/views/widget/widget_gtk.h @@ -118,7 +118,7 @@ class WidgetGtk virtual void GetBounds(gfx::Rect* out, bool including_frame) const; virtual void SetBounds(const gfx::Rect& bounds); virtual void MoveAbove(Widget* other); - virtual void SetShape(const gfx::Path& shape); + virtual void SetShape(gfx::NativeRegion region); virtual void Close(); virtual void CloseNow(); virtual void Show(); diff --git a/views/widget/widget_win.cc b/views/widget/widget_win.cc index e0edee8..a3dc3ce 100644 --- a/views/widget/widget_win.cc +++ b/views/widget/widget_win.cc @@ -144,8 +144,8 @@ void WidgetWin::MoveAbove(Widget* other) { bounds.width(), bounds.height(), SWP_NOACTIVATE); } -void WidgetWin::SetShape(const gfx::Path& shape) { - SetWindowRgn(shape.CreateHRGN(), TRUE); +void WidgetWin::SetShape(gfx::NativeRegion region) { + SetWindowRgn(region, TRUE); } void WidgetWin::Close() { diff --git a/views/widget/widget_win.h b/views/widget/widget_win.h index b8e21dd..f22417c 100644 --- a/views/widget/widget_win.h +++ b/views/widget/widget_win.h @@ -184,7 +184,7 @@ class WidgetWin : public app::WindowImpl, virtual void GetBounds(gfx::Rect* out, bool including_frame) const; virtual void SetBounds(const gfx::Rect& bounds); virtual void MoveAbove(Widget* other); - virtual void SetShape(const gfx::Path& shape); + virtual void SetShape(gfx::NativeRegion region); virtual void Close(); virtual void CloseNow(); virtual void Show(); diff --git a/views/window/window_gtk.cc b/views/window/window_gtk.cc index 9bf2071..fff4e74 100644 --- a/views/window/window_gtk.cc +++ b/views/window/window_gtk.cc @@ -326,7 +326,7 @@ void WindowGtk::OnSizeAllocate(GtkWidget* widget, GtkAllocation* allocation) { non_client_view_->GetWindowMask(gfx::Size(allocation->width, allocation->height), &window_mask); - GdkRegion* mask_region = window_mask.CreateGdkRegion(); + GdkRegion* mask_region = window_mask.CreateNativeRegion(); gdk_window_shape_combine_region(GetNativeView()->window, mask_region, 0, 0); if (mask_region) gdk_region_destroy(mask_region); diff --git a/views/window/window_win.cc b/views/window/window_win.cc index f77b806..66a1e85 100644 --- a/views/window/window_win.cc +++ b/views/window/window_win.cc @@ -1355,11 +1355,11 @@ void WindowWin::ResetWindowRegion(bool force) { gfx::Path window_mask; non_client_view_->GetWindowMask( gfx::Size(window_rect.Width(), window_rect.Height()), &window_mask); - new_region = window_mask.CreateHRGN(); + new_region = window_mask.CreateNativeRegion(); } if (current_rgn_result == ERROR || !EqualRgn(current_rgn, new_region)) { - // SetWindowRgn takes ownership of the HRGN created by CreateHRGN. + // SetWindowRgn takes ownership of the HRGN created by CreateNativeRegion. SetWindowRgn(new_region, TRUE); } else { DeleteObject(new_region); |