| Index: views/widget/gtk_views_window.cc
|
| diff --git a/views/widget/gtk_views_window.cc b/views/widget/gtk_views_window.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1e5b48f836688399bc144d0dcb3d2d6a1c79baa5
|
| --- /dev/null
|
| +++ b/views/widget/gtk_views_window.cc
|
| @@ -0,0 +1,46 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include <gtk/gtk.h>
|
| +
|
| +#include "ui/views/events/event.h"
|
| +#include "ui/views/focus/focus_manager.h"
|
| +#include "views/widget/gtk_views_window.h"
|
| +#include "views/widget/widget.h"
|
| +
|
| +G_BEGIN_DECLS
|
| +
|
| +G_DEFINE_TYPE(GtkViewsWindow, gtk_views_window, GTK_TYPE_WINDOW)
|
| +
|
| +static void gtk_views_window_move_focus(GtkWindow* window,
|
| + GtkDirectionType dir) {
|
| + views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
|
| + views::FocusManager* focus_manager =
|
| + widget ? widget->GetFocusManager() : NULL;
|
| + if (focus_manager) {
|
| + GdkEvent* key = gtk_get_current_event();
|
| + if (key && key->type == GDK_KEY_PRESS) {
|
| + views::KeyEvent key_event(key);
|
| + focus_manager->OnKeyEvent(key_event);
|
| + }
|
| + } else if (GTK_WINDOW_CLASS(gtk_views_window_parent_class)->move_focus) {
|
| + GTK_WINDOW_CLASS(gtk_views_window_parent_class)->move_focus(window, dir);
|
| + }
|
| +}
|
| +
|
| +static void gtk_views_window_class_init(
|
| + GtkViewsWindowClass* views_window_class) {
|
| + GtkWindowClass* window_class =
|
| + reinterpret_cast<GtkWindowClass*>(views_window_class);
|
| + window_class->move_focus = gtk_views_window_move_focus;
|
| +}
|
| +
|
| +static void gtk_views_window_init(GtkViewsWindow* window) {
|
| +}
|
| +
|
| +GtkWidget* gtk_views_window_new(GtkWindowType type) {
|
| + return GTK_WIDGET(g_object_new(GTK_TYPE_VIEWS_WINDOW, "type", type, NULL));
|
| +}
|
| +
|
| +G_END_DECLS
|
|
|