Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Unified Diff: views/window/window_gtk.cc

Issue 7015051: Re-land: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « views/window/window_gtk.h ('k') | views/window/window_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: views/window/window_gtk.cc
===================================================================
--- views/window/window_gtk.cc (revision 85284)
+++ views/window/window_gtk.cc (working copy)
@@ -79,37 +79,17 @@
namespace views {
-WindowGtk::WindowGtk()
- : ALLOW_THIS_IN_INITIALIZER_LIST(delegate_(this)),
+WindowGtk::WindowGtk(internal::NativeWindowDelegate* delegate)
+ : WidgetGtk(delegate->AsNativeWidgetDelegate()),
+ delegate_(delegate),
window_state_(GDK_WINDOW_STATE_WITHDRAWN),
window_closed_(false) {
- SetNativeWindow(this);
is_window_ = true;
}
WindowGtk::~WindowGtk() {
}
-// static
-void Window::CloseAllSecondaryWindows() {
- GList* windows = gtk_window_list_toplevels();
- for (GList* window = windows; window;
- window = g_list_next(window)) {
- Window::CloseSecondaryWidget(
- NativeWidget::GetNativeWidgetForNativeView(
- GTK_WIDGET(window->data))->GetWidget());
- }
- g_list_free(windows);
-}
-
-Window* WindowGtk::AsWindow() {
- return this;
-}
-
-const Window* WindowGtk::AsWindow() const {
- return this;
-}
-
////////////////////////////////////////////////////////////////////////////////
// WindowGtk, WidgetGtk overrides:
@@ -129,7 +109,7 @@
if (event->type == GDK_BUTTON_PRESS &&
!mouse_event.IsOnlyRightMouseButton()) {
gfx::Point screen_point(event->x, event->y);
- View::ConvertPointToScreen(GetRootView(), &screen_point);
+ View::ConvertPointToScreen(GetWindow()->GetRootView(), &screen_point);
gtk_window_begin_move_drag(GetNativeWindow(), event->button,
screen_point.x(), screen_point.y(),
event->time);
@@ -147,7 +127,7 @@
case HTTOPLEFT:
case HTTOPRIGHT: {
gfx::Point screen_point(event->x, event->y);
- View::ConvertPointToScreen(GetRootView(), &screen_point);
+ View::ConvertPointToScreen(GetWindow()->GetRootView(), &screen_point);
// TODO(beng): figure out how to get a good minimum size.
gtk_widget_set_size_request(GetNativeView(), 100, 100);
gtk_window_begin_resize_drag(GetNativeWindow(),
@@ -221,9 +201,6 @@
}
void WindowGtk::InitNativeWidget(const Widget::InitParams& params) {
- if (params.parent)
- make_transient_to_parent();
-
WidgetGtk::InitNativeWidget(params);
g_signal_connect(G_OBJECT(GetNativeWindow()), "configure-event",
@@ -310,9 +287,13 @@
}
Window* WindowGtk::GetWindow() {
- return this;
+ return delegate_->AsWindow();
}
+const Window* WindowGtk::GetWindow() const {
+ return delegate_->AsWindow();
+}
+
void WindowGtk::SetWindowBounds(const gfx::Rect& bounds,
gfx::NativeWindow other_window) {
// TODO: need to deal with other_window.
@@ -320,7 +301,7 @@
}
void WindowGtk::HideWindow() {
- Hide();
+ GetWindow()->Hide();
}
void WindowGtk::Activate() {
@@ -379,20 +360,14 @@
NOTIMPLEMENTED();
}
+NonClientFrameView* WindowGtk::CreateFrameViewForWindow() {
+ return new CustomFrameView(delegate_->AsWindow());
+}
+
void WindowGtk::SetAlwaysOnTop(bool always_on_top) {
gtk_window_set_keep_above(GetNativeWindow(), always_on_top);
}
-bool WindowGtk::IsAppWindow() const {
- return false;
-}
-
-NonClientFrameView* WindowGtk::CreateFrameViewForWindow() {
- // TODO(erg): Always use a custom frame view? Are there cases where we let
- // the window manager deal with the X11 equivalent of the "non-client" area?
- return new CustomFrameView(this);
-}
-
void WindowGtk::UpdateFrameAfterFrameChange() {
// We currently don't support different frame types on Gtk, so we don't
// need to implement this.
@@ -410,8 +385,8 @@
void WindowGtk::FrameTypeChanged() {
// This is called when the Theme has changed, so forward the event to the root
// widget.
- ThemeChanged();
- GetRootView()->SchedulePaint();
+ GetWidget()->ThemeChanged();
+ GetWidget()->GetRootView()->SchedulePaint();
}
////////////////////////////////////////////////////////////////////////////////
@@ -437,7 +412,9 @@
return;
bool maximized = window_state_ & GDK_WINDOW_STATE_MAXIMIZED;
- GetWindow()->window_delegate()->SaveWindowPlacement(GetBounds(), maximized);
+ GetWindow()->window_delegate()->SaveWindowPlacement(
+ GetWidget()->GetWindowScreenBounds(),
+ maximized);
}
void WindowGtk::OnDestroy(GtkWidget* widget) {
@@ -450,8 +427,10 @@
// NativeWindow, public:
// static
-Window* NativeWindow::CreateNativeWindow() {
- return new WindowGtk;
+NativeWindow* NativeWindow::CreateNativeWindow(
+ internal::NativeWindowDelegate* delegate) {
+ return new WindowGtk(delegate);
}
} // namespace views
+
« no previous file with comments | « views/window/window_gtk.h ('k') | views/window/window_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698