Index: views/widget/widget_gtk.cc |
diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc |
index dd44cedddbb8f8645ba6fde41005c2cdc321fdff..499e82ab72260d1793034cccb77c69ae5aea0b5a 100644 |
--- a/views/widget/widget_gtk.cc |
+++ b/views/widget/widget_gtk.cc |
@@ -1585,6 +1585,32 @@ void Widget::NotifyLocaleChanged() { |
g_list_free(window_list); |
} |
+// static |
+bool Widget::ConvertRect(const Widget* source, |
+ const Widget* target, |
+ gfx::Rect* rect) { |
+ DCHECK(source); |
+ DCHECK(target); |
+ DCHECK(rect); |
+ |
+ GtkWidget* source_widget = source->GetNativeView(); |
+ GtkWidget* target_widget = target->GetNativeView(); |
+ if (source_widget == target_widget) |
+ return true; |
+ |
+ if (!source_widget || !target_widget) |
+ return false; |
+ |
+ GdkRectangle gdk_rect = rect->ToGdkRectangle(); |
+ if (gtk_widget_translate_coordinates(source_widget, target_widget, |
+ gdk_rect.x, gdk_rect.y, |
+ &gdk_rect.x, &gdk_rect.y)) { |
+ *rect = gdk_rect; |
+ return true; |
+ } |
+ return false; |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// NativeWidget, public: |