| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "views/widget/widget_gtk.h" | 5 #include "views/widget/widget_gtk.h" |
| 6 | 6 |
| 7 #include <gdk/gdk.h> | 7 #include <gdk/gdk.h> |
| 8 #include <gdk/gdkx.h> | 8 #include <gdk/gdkx.h> |
| 9 #include <X11/extensions/shape.h> | 9 #include <X11/extensions/shape.h> |
| 10 | 10 |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 void WidgetGtk::AddChild(GtkWidget* child) { | 324 void WidgetGtk::AddChild(GtkWidget* child) { |
| 325 gtk_container_add(GTK_CONTAINER(window_contents_), child); | 325 gtk_container_add(GTK_CONTAINER(window_contents_), child); |
| 326 } | 326 } |
| 327 | 327 |
| 328 void WidgetGtk::RemoveChild(GtkWidget* child) { | 328 void WidgetGtk::RemoveChild(GtkWidget* child) { |
| 329 // We can be called after the contents widget has been destroyed, e.g. any | 329 // We can be called after the contents widget has been destroyed, e.g. any |
| 330 // NativeViewHost not removed from the view hierarchy before the window is | 330 // NativeViewHost not removed from the view hierarchy before the window is |
| 331 // closed. | 331 // closed. |
| 332 if (GTK_IS_CONTAINER(window_contents_)) { | 332 if (GTK_IS_CONTAINER(window_contents_)) { |
| 333 gtk_container_remove(GTK_CONTAINER(window_contents_), child); | 333 gtk_container_remove(GTK_CONTAINER(window_contents_), child); |
| 334 gtk_views_fixed_set_use_allocated_size(child, false); | 334 gtk_views_fixed_set_widget_size(child, 0, 0); |
| 335 } | 335 } |
| 336 } | 336 } |
| 337 | 337 |
| 338 void WidgetGtk::ReparentChild(GtkWidget* child) { | 338 void WidgetGtk::ReparentChild(GtkWidget* child) { |
| 339 gtk_widget_reparent(child, window_contents_); | 339 gtk_widget_reparent(child, window_contents_); |
| 340 } | 340 } |
| 341 | 341 |
| 342 void WidgetGtk::PositionChild(GtkWidget* child, int x, int y, int w, int h) { | 342 void WidgetGtk::PositionChild(GtkWidget* child, int x, int y, int w, int h) { |
| 343 GtkAllocation alloc = { x, y, w, h }; | 343 gtk_views_fixed_set_widget_size(child, w, h); |
| 344 gtk_widget_size_allocate(child, &alloc); | |
| 345 gtk_views_fixed_set_use_allocated_size(child, true); | |
| 346 gtk_fixed_move(GTK_FIXED(window_contents_), child, x, y); | 344 gtk_fixed_move(GTK_FIXED(window_contents_), child, x, y); |
| 347 } | 345 } |
| 348 | 346 |
| 349 void WidgetGtk::DoDrag(const OSExchangeData& data, int operation) { | 347 void WidgetGtk::DoDrag(const OSExchangeData& data, int operation) { |
| 350 const OSExchangeDataProviderGtk& data_provider = | 348 const OSExchangeDataProviderGtk& data_provider = |
| 351 static_cast<const OSExchangeDataProviderGtk&>(data.provider()); | 349 static_cast<const OSExchangeDataProviderGtk&>(data.provider()); |
| 352 GtkTargetList* targets = data_provider.GetTargetList(); | 350 GtkTargetList* targets = data_provider.GetTargetList(); |
| 353 GdkEvent* current_event = gtk_get_current_event(); | 351 GdkEvent* current_event = gtk_get_current_event(); |
| 354 const OSExchangeDataProviderGtk& provider( | 352 const OSExchangeDataProviderGtk& provider( |
| 355 static_cast<const OSExchangeDataProviderGtk&>(data.provider())); | 353 static_cast<const OSExchangeDataProviderGtk&>(data.provider())); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 ignore_drag_leave_ = false; | 420 ignore_drag_leave_ = false; |
| 423 drop_target_.reset(NULL); | 421 drop_target_.reset(NULL); |
| 424 } | 422 } |
| 425 | 423 |
| 426 // static | 424 // static |
| 427 RootView* WidgetGtk::GetRootViewForWidget(GtkWidget* widget) { | 425 RootView* WidgetGtk::GetRootViewForWidget(GtkWidget* widget) { |
| 428 gpointer user_data = g_object_get_data(G_OBJECT(widget), "root-view"); | 426 gpointer user_data = g_object_get_data(G_OBJECT(widget), "root-view"); |
| 429 return static_cast<RootView*>(user_data); | 427 return static_cast<RootView*>(user_data); |
| 430 } | 428 } |
| 431 | 429 |
| 430 void WidgetGtk::GetRequestedSize(gfx::Size* out) const { |
| 431 int width, height; |
| 432 if (GTK_IS_VIEWS_FIXED(widget_) && |
| 433 gtk_views_fixed_get_widget_size(GetNativeView(), &width, &height)) { |
| 434 out->SetSize(width, height); |
| 435 } else { |
| 436 GtkRequisition requisition; |
| 437 gtk_widget_get_child_requisition(GetNativeView(), &requisition); |
| 438 out->SetSize(requisition.width, requisition.height); |
| 439 } |
| 440 } |
| 441 |
| 432 //////////////////////////////////////////////////////////////////////////////// | 442 //////////////////////////////////////////////////////////////////////////////// |
| 433 // WidgetGtk, ActiveWindowWatcherX::Observer implementation: | 443 // WidgetGtk, ActiveWindowWatcherX::Observer implementation: |
| 434 | 444 |
| 435 void WidgetGtk::ActiveWindowChanged(GdkWindow* active_window) { | 445 void WidgetGtk::ActiveWindowChanged(GdkWindow* active_window) { |
| 436 if (!GetNativeView()) | 446 if (!GetNativeView()) |
| 437 return; | 447 return; |
| 438 | 448 |
| 439 bool was_active = IsActive(); | 449 bool was_active = IsActive(); |
| 440 is_active_ = (active_window == GTK_WIDGET(GetNativeView())->window); | 450 is_active_ = (active_window == GTK_WIDGET(GetNativeView())->window); |
| 441 if (!is_active_ && active_window && type_ != TYPE_CHILD) { | 451 if (!is_active_ && active_window && type_ != TYPE_CHILD) { |
| (...skipping 1173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1615 GtkWindow* window = GTK_WINDOW(element->data); | 1625 GtkWindow* window = GTK_WINDOW(element->data); |
| 1616 DCHECK(window); | 1626 DCHECK(window); |
| 1617 RootView *root_view = FindRootView(window); | 1627 RootView *root_view = FindRootView(window); |
| 1618 if (root_view) | 1628 if (root_view) |
| 1619 root_view->NotifyLocaleChanged(); | 1629 root_view->NotifyLocaleChanged(); |
| 1620 } | 1630 } |
| 1621 g_list_free(window_list); | 1631 g_list_free(window_list); |
| 1622 } | 1632 } |
| 1623 | 1633 |
| 1624 } // namespace views | 1634 } // namespace views |
| OLD | NEW |