Index: views/widget/widget_gtk.cc |
diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc |
index 5f470c53d751aabe3a816fe52b23fd5d239ca542..c5ed6168a9eedad12a38c042d22e11a5a95b10e3 100644 |
--- a/views/widget/widget_gtk.cc |
+++ b/views/widget/widget_gtk.cc |
@@ -1568,6 +1568,32 @@ void Widget::NotifyLocaleChanged() { |
g_list_free(window_list); |
} |
+// static |
+bool Widget::ConvertRect(const Widget* from, |
+ const Widget* to, |
+ gfx::Rect* rect) { |
+ DCHECK(from); |
+ DCHECK(to); |
+ DCHECK(rect); |
+ |
+ GtkWidget* from_widget = from->GetNativeView(); |
+ GtkWidget* to_widget = to->GetNativeView(); |
+ if (from_widget == to_widget) |
+ return true; |
+ |
+ if (!from_widget || !to_widget) |
+ return false; |
+ |
+ GdkRectangle gdk_rect = rect->ToGdkRectangle(); |
+ if (gtk_widget_translate_coordinates(from_widget, to_widget, |
+ gdk_rect.x, gdk_rect.y, |
+ &gdk_rect.x, &gdk_rect.y)) { |
+ *rect = gdk_rect; |
+ return true; |
+ } |
+ return false; |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// NativeWidget, public: |