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

Side by Side Diff: chrome/browser/ui/gtk/browser_window_gtk.cc

Issue 9307018: Linux: make BrowserWindowGtk's window reconfigure timer more transparent to tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/gtk/browser_window_gtk.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/ui/gtk/browser_window_gtk.h" 5 #include "chrome/browser/ui/gtk/browser_window_gtk.h"
6 6
7 #include <gdk/gdkkeysyms.h> 7 #include <gdk/gdkkeysyms.h>
8 8
9 #include <dlfcn.h> 9 #include <dlfcn.h>
10 #include <string> 10 #include <string>
(...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1465 browser_.reset(); 1465 browser_.reset();
1466 } 1466 }
1467 1467
1468 gboolean BrowserWindowGtk::OnConfigure(GtkWidget* widget, 1468 gboolean BrowserWindowGtk::OnConfigure(GtkWidget* widget,
1469 GdkEventConfigure* event) { 1469 GdkEventConfigure* event) {
1470 gfx::Rect bounds(event->x, event->y, event->width, event->height); 1470 gfx::Rect bounds(event->x, event->y, event->width, event->height);
1471 1471
1472 // When the window moves, we'll get multiple configure-event signals. We can 1472 // When the window moves, we'll get multiple configure-event signals. We can
1473 // also get events when the bounds haven't changed, but the window's stacking 1473 // also get events when the bounds haven't changed, but the window's stacking
1474 // has, which we aren't interested in. http://crbug.com/70125 1474 // has, which we aren't interested in. http://crbug.com/70125
1475 if (bounds == bounds_) 1475 if (bounds == configure_bounds_)
1476 return FALSE; 1476 return FALSE;
1477 1477
1478 GetLocationBar()->location_entry()->ClosePopup(); 1478 GetLocationBar()->location_entry()->ClosePopup();
1479 1479
1480 TabContentsWrapper* tab = GetDisplayedTab(); 1480 TabContentsWrapper* tab = GetDisplayedTab();
1481 if (tab) { 1481 if (tab) {
1482 tab->web_contents()->GetRenderViewHost()->NotifyMoveOrResizeStarted(); 1482 tab->web_contents()->GetRenderViewHost()->NotifyMoveOrResizeStarted();
1483 } 1483 }
1484 1484
1485 if (bounds_.size() != bounds.size()) 1485 if (bounds_.size() != bounds.size())
1486 OnSizeChanged(bounds.width(), bounds.height()); 1486 OnSizeChanged(bounds.width(), bounds.height());
1487 1487
1488 // We update |bounds_| but not |restored_bounds_| here. The latter needs 1488 // We update |bounds_| but not |restored_bounds_| here. The latter needs
1489 // to be updated conditionally when the window is non-maximized and non- 1489 // to be updated conditionally when the window is non-maximized and non-
1490 // fullscreen, but whether those state updates have been processed yet is 1490 // fullscreen, but whether those state updates have been processed yet is
1491 // window-manager specific. We update |restored_bounds_| in the debounced 1491 // window-manager specific. We update |restored_bounds_| in the debounced
1492 // handler below, after the window state has been updated. 1492 // handler below, after the window state has been updated.
1493 bounds_ = bounds; 1493 bounds_ = bounds;
1494 configure_bounds_ = bounds;
1494 1495
1495 // The GdkEventConfigure* we get here doesn't have quite the right 1496 // The GdkEventConfigure* we get here doesn't have quite the right
1496 // coordinates though (they're relative to the drawable window area, rather 1497 // coordinates though (they're relative to the drawable window area, rather
1497 // than any window manager decorations, if enabled), so we need to call 1498 // than any window manager decorations, if enabled), so we need to call
1498 // gtk_window_get_position() to get the right values. (Otherwise session 1499 // gtk_window_get_position() to get the right values. (Otherwise session
1499 // restore, if enabled, will restore windows to incorrect positions.) That's 1500 // restore, if enabled, will restore windows to incorrect positions.) That's
1500 // a round trip to the X server though, so we set a debounce timer and only 1501 // a round trip to the X server though, so we set a debounce timer and only
1501 // call it (in OnDebouncedBoundsChanged() below) after we haven't seen a 1502 // call it (in OnDebouncedBoundsChanged() below) after we haven't seen a
1502 // reconfigure event in a short while. 1503 // reconfigure event in a short while.
1503 // We don't use Reset() because the timer may not yet be running. 1504 // We don't use Reset() because the timer may not yet be running.
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
1741 g_signal_connect(window_, "button-press-event", 1742 g_signal_connect(window_, "button-press-event",
1742 G_CALLBACK(OnButtonPressEventThunk), this); 1743 G_CALLBACK(OnButtonPressEventThunk), this);
1743 g_signal_connect(window_, "focus-in-event", 1744 g_signal_connect(window_, "focus-in-event",
1744 G_CALLBACK(OnFocusInThunk), this); 1745 G_CALLBACK(OnFocusInThunk), this);
1745 g_signal_connect(window_, "focus-out-event", 1746 g_signal_connect(window_, "focus-out-event",
1746 G_CALLBACK(OnFocusOutThunk), this); 1747 G_CALLBACK(OnFocusOutThunk), this);
1747 } 1748 }
1748 1749
1749 void BrowserWindowGtk::InitWidgets() { 1750 void BrowserWindowGtk::InitWidgets() {
1750 ConnectHandlersToSignals(); 1751 ConnectHandlersToSignals();
1751 bounds_ = restored_bounds_ = GetInitialWindowBounds(window_); 1752
1753 bounds_ = configure_bounds_ = restored_bounds_ =
1754 GetInitialWindowBounds(window_);
1752 1755
1753 // This vbox encompasses all of the widgets within the browser. This is 1756 // This vbox encompasses all of the widgets within the browser. This is
1754 // everything except the custom frame border. 1757 // everything except the custom frame border.
1755 window_vbox_ = gtk_vbox_new(FALSE, 0); 1758 window_vbox_ = gtk_vbox_new(FALSE, 0);
1756 gtk_widget_show(window_vbox_); 1759 gtk_widget_show(window_vbox_);
1757 1760
1758 // We hold an always hidden GtkMenuBar inside our browser window simply to 1761 // We hold an always hidden GtkMenuBar inside our browser window simply to
1759 // fool the Unity desktop, which will mirror the contents of the first 1762 // fool the Unity desktop, which will mirror the contents of the first
1760 // GtkMenuBar it sees into the global menu bar. (It doesn't seem to check the 1763 // GtkMenuBar it sees into the global menu bar. (It doesn't seem to check the
1761 // visibility of the GtkMenuBar, so we can just permanently hide it.) 1764 // visibility of the GtkMenuBar, so we can just permanently hide it.)
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
2520 wm_type == ui::WM_OPENBOX || 2523 wm_type == ui::WM_OPENBOX ||
2521 wm_type == ui::WM_XFWM4); 2524 wm_type == ui::WM_XFWM4);
2522 } 2525 }
2523 2526
2524 // static 2527 // static
2525 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) { 2528 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) {
2526 BrowserWindowGtk* browser_window_gtk = new BrowserWindowGtk(browser); 2529 BrowserWindowGtk* browser_window_gtk = new BrowserWindowGtk(browser);
2527 browser_window_gtk->Init(); 2530 browser_window_gtk->Init();
2528 return browser_window_gtk; 2531 return browser_window_gtk;
2529 } 2532 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/browser_window_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698