summaryrefslogtreecommitdiffstats
path: root/views/widget/widget_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'views/widget/widget_gtk.cc')
-rw-r--r--views/widget/widget_gtk.cc100
1 files changed, 16 insertions, 84 deletions
diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc
index 28e7b3c..1485820 100644
--- a/views/widget/widget_gtk.cc
+++ b/views/widget/widget_gtk.cc
@@ -22,7 +22,6 @@
#include "ui/gfx/canvas_skia_paint.h"
#include "ui/gfx/path.h"
#include "views/focus/view_storage.h"
-#include "views/widget/default_theme_provider.h"
#include "views/widget/drop_target_gtk.h"
#include "views/widget/gtk_views_fixed.h"
#include "views/widget/gtk_views_window.h"
@@ -278,6 +277,7 @@ WidgetGtk::WidgetGtk(Type type)
}
WidgetGtk::~WidgetGtk() {
+ DestroyRootView();
DCHECK(delete_on_destroy_ || widget_ == NULL);
if (type_ != TYPE_CHILD)
ActiveWindowWatcherX::RemoveObserver(this);
@@ -415,14 +415,6 @@ void WidgetGtk::DoDrag(const OSExchangeData& data, int operation) {
}
}
-void WidgetGtk::SetFocusTraversableParent(FocusTraversable* parent) {
- root_view_->SetFocusTraversableParent(parent);
-}
-
-void WidgetGtk::SetFocusTraversableParentView(View* parent_view) {
- root_view_->SetFocusTraversableParentView(parent_view);
-}
-
void WidgetGtk::IsActiveChanged() {
if (GetWidgetDelegate())
GetWidgetDelegate()->IsActiveChanged(IsActive());
@@ -500,12 +492,9 @@ void WidgetGtk::InitWithWidget(Widget* parent,
void WidgetGtk::Init(GtkWidget* parent,
const gfx::Rect& bounds) {
+ Widget::Init(parent, bounds);
if (type_ != TYPE_CHILD)
ActiveWindowWatcherX::AddObserver(this);
- // Force creation of the RootView if it hasn't been created yet.
- GetRootView();
-
- default_theme_provider_.reset(new DefaultThemeProvider());
// Make container here.
CreateGtkWidget(parent, bounds);
@@ -527,7 +516,7 @@ void WidgetGtk::Init(GtkWidget* parent,
GDK_POINTER_MOTION_MASK |
GDK_KEY_PRESS_MASK |
GDK_KEY_RELEASE_MASK);
- SetRootViewForWidget(widget_, root_view_.get());
+ SetRootViewForWidget(widget_, GetRootView());
g_signal_connect_after(G_OBJECT(window_contents_), "size_request",
G_CALLBACK(&OnSizeRequestThunk), this);
@@ -614,18 +603,6 @@ void WidgetGtk::Init(GtkWidget* parent,
}
}
-WidgetDelegate* WidgetGtk::GetWidgetDelegate() {
- return delegate_;
-}
-
-void WidgetGtk::SetWidgetDelegate(WidgetDelegate* delegate) {
- delegate_ = delegate;
-}
-
-void WidgetGtk::SetContentsView(View* view) {
- root_view_->SetContentsView(view);
-}
-
void WidgetGtk::GetBounds(gfx::Rect* out, bool including_frame) const {
if (!widget_) {
// Due to timing we can get a request for the bounds after Close.
@@ -757,14 +734,6 @@ void WidgetGtk::SetAlwaysOnTop(bool on_top) {
gtk_window_set_keep_above(GTK_WINDOW(widget_), on_top);
}
-RootView* WidgetGtk::GetRootView() {
- if (!root_view_.get()) {
- // First time the root view is being asked for, create it now.
- root_view_.reset(CreateRootView());
- }
- return root_view_.get();
-}
-
Widget* WidgetGtk::GetRootWidget() const {
GtkWidget* parent = widget_;
GtkWidget* last_parent = parent;
@@ -822,10 +791,6 @@ ThemeProvider* WidgetGtk::GetThemeProvider() const {
return GetWidgetThemeProvider(this);
}
-ThemeProvider* WidgetGtk::GetDefaultThemeProvider() const {
- return default_theme_provider_.get();
-}
-
FocusManager* WidgetGtk::GetFocusManager() {
if (focus_manager_)
return focus_manager_;
@@ -898,39 +863,6 @@ void WidgetGtk::SetCursor(gfx::NativeCursor cursor) {
gdk_window_set_cursor(widget_->window, cursor);
}
-FocusTraversable* WidgetGtk::GetFocusTraversable() {
- return root_view_.get();
-}
-
-void WidgetGtk::ThemeChanged() {
- root_view_->ThemeChanged();
-}
-
-void WidgetGtk::LocaleChanged() {
- root_view_->LocaleChanged();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// WidgetGtk, FocusTraversable implementation:
-
-FocusSearch* WidgetGtk::GetFocusSearch() {
- return root_view_->GetFocusSearch();
-}
-
-FocusTraversable* WidgetGtk::GetFocusTraversableParent() {
- // We are a proxy to the root view, so we should be bypassed when traversing
- // up and as a result this should not be called.
- NOTREACHED();
- return NULL;
-}
-
-View* WidgetGtk::GetFocusTraversableParentView() {
- // We are a proxy to the root view, so we should be bypassed when traversing
- // up and as a result this should not be called.
- NOTREACHED();
- return NULL;
-}
-
void WidgetGtk::ClearNativeFocus() {
DCHECK(type_ != TYPE_CHILD);
if (!GetNativeView()) {
@@ -1009,7 +941,7 @@ void WidgetGtk::OnSizeRequest(GtkWidget* widget, GtkRequisition* requisition) {
// preferred size for these would prevents us from setting smaller window
// sizes.
if (type_ == TYPE_CHILD) {
- gfx::Size size(root_view_->GetPreferredSize());
+ gfx::Size size(GetRootView()->GetPreferredSize());
requisition->width = size.width();
requisition->height = size.height();
}
@@ -1024,8 +956,8 @@ void WidgetGtk::OnSizeAllocate(GtkWidget* widget, GtkAllocation* allocation) {
if (new_size == size_)
return;
size_ = new_size;
- root_view_->SetBounds(0, 0, allocation->width, allocation->height);
- root_view_->SchedulePaint();
+ GetRootView()->SetBounds(0, 0, allocation->width, allocation->height);
+ GetRootView()->SchedulePaint();
}
gboolean WidgetGtk::OnPaint(GtkWidget* widget, GdkEventExpose* event) {
@@ -1057,7 +989,7 @@ gboolean WidgetGtk::OnPaint(GtkWidget* widget, GdkEventExpose* event) {
gfx::CanvasSkiaPaint canvas(event);
if (!canvas.is_empty()) {
canvas.set_composite_alpha(is_transparent());
- root_view_->Paint(&canvas);
+ GetRootView()->Paint(&canvas);
}
return false; // False indicates other widgets should get the event as well.
}
@@ -1168,7 +1100,7 @@ gboolean WidgetGtk::OnEnterNotify(GtkWidget* widget, GdkEventCrossing* event) {
ui::EF_MIDDLE_BUTTON_DOWN |
ui::EF_RIGHT_BUTTON_DOWN));
MouseEvent mouse_move(ui::ET_MOUSE_MOVED, x, y, flags);
- root_view_->OnMouseMoved(mouse_move);
+ GetRootView()->OnMouseMoved(mouse_move);
}
return false;
@@ -1177,7 +1109,7 @@ gboolean WidgetGtk::OnEnterNotify(GtkWidget* widget, GdkEventCrossing* event) {
gboolean WidgetGtk::OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event) {
last_mouse_event_was_move_ = false;
if (!has_capture_ && !is_mouse_down_)
- root_view_->ProcessOnMouseExited();
+ GetRootView()->ProcessOnMouseExited();
return false;
}
@@ -1189,7 +1121,7 @@ gboolean WidgetGtk::OnMotionNotify(GtkWidget* widget, GdkEventMotion* event) {
last_mouse_event_was_move_ = false;
int flags = Event::GetFlagsFromGdkState(event->state);
MouseEvent mouse_drag(ui::ET_MOUSE_DRAGGED, x, y, flags);
- root_view_->OnMouseDragged(mouse_drag);
+ GetRootView()->OnMouseDragged(mouse_drag);
return true;
}
gfx::Point screen_loc(event->x_root, event->y_root);
@@ -1203,7 +1135,7 @@ gboolean WidgetGtk::OnMotionNotify(GtkWidget* widget, GdkEventMotion* event) {
last_mouse_event_was_move_ = true;
int flags = Event::GetFlagsFromGdkState(event->state);
MouseEvent mouse_move(ui::ET_MOUSE_MOVED, x, y, flags);
- root_view_->OnMouseMoved(mouse_move);
+ GetRootView()->OnMouseMoved(mouse_move);
return true;
}
@@ -1266,7 +1198,7 @@ gboolean WidgetGtk::OnKeyEvent(GtkWidget* widget, GdkEventKey* event) {
bool handled = false;
// Dispatch the key event to View hierarchy first.
- handled = root_view_->ProcessKeyEvent(key);
+ handled = GetRootView()->ProcessKeyEvent(key);
// Dispatch the key event to native GtkWidget hierarchy.
// To prevent GtkWindow from handling the key event as a keybinding, we need
@@ -1354,7 +1286,7 @@ void WidgetGtk::ReleaseGrab() {
void WidgetGtk::HandleGrabBroke() {
if (has_capture_) {
if (is_mouse_down_)
- root_view_->ProcessMouseDragCanceled();
+ GetRootView()->ProcessMouseDragCanceled();
is_mouse_down_ = false;
has_capture_ = false;
}
@@ -1397,7 +1329,7 @@ bool WidgetGtk::ProcessMousePressed(GdkEventButton* event) {
MouseEvent mouse_pressed(ui::ET_MOUSE_PRESSED, x, y,
GetFlagsForEventButton(*event));
- if (root_view_->OnMousePressed(mouse_pressed)) {
+ if (GetRootView()->OnMousePressed(mouse_pressed)) {
is_mouse_down_ = true;
if (!has_capture_)
DoGrab();
@@ -1422,7 +1354,7 @@ void WidgetGtk::ProcessMouseReleased(GdkEventButton* event) {
is_mouse_down_ = false;
// GTK generates a mouse release at the end of dnd. We need to ignore it.
if (!drag_data_)
- root_view_->OnMouseReleased(mouse_up, false);
+ GetRootView()->OnMouseReleased(mouse_up, false);
}
bool WidgetGtk::ProcessScroll(GdkEventScroll* event) {
@@ -1435,7 +1367,7 @@ bool WidgetGtk::ProcessScroll(GdkEventScroll* event) {
translated_event.y = y;
MouseWheelEvent wheel_event(reinterpret_cast<GdkEvent*>(&translated_event));
- return root_view_->OnMouseWheel(wheel_event);
+ return GetRootView()->OnMouseWheel(wheel_event);
}
// static