Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 98 | 98 |
| 99 namespace { | 99 namespace { |
| 100 | 100 |
| 101 // The number of milliseconds between loading animation frames. | 101 // The number of milliseconds between loading animation frames. |
| 102 const int kLoadingAnimationFrameTimeMs = 30; | 102 const int kLoadingAnimationFrameTimeMs = 30; |
| 103 | 103 |
| 104 // Default height of dev tools pane when docked to the browser window. This | 104 // Default height of dev tools pane when docked to the browser window. This |
| 105 // matches the value in Views. | 105 // matches the value in Views. |
| 106 const int kDefaultDevToolsHeight = 200; | 106 const int kDefaultDevToolsHeight = 200; |
| 107 | 107 |
| 108 const int kMinDevToolsHeight = 50; | 108 const int kMinDevToolsHeight = 100; |
| 109 | 109 |
| 110 const char* kBrowserWindowKey = "__BROWSER_WINDOW_GTK__"; | 110 const char* kBrowserWindowKey = "__BROWSER_WINDOW_GTK__"; |
| 111 | 111 |
| 112 // The frame border is only visible in restored mode and is hardcoded to 4 px | 112 // The frame border is only visible in restored mode and is hardcoded to 4 px |
| 113 // on each side regardless of the system window border size. | 113 // on each side regardless of the system window border size. |
| 114 const int kFrameBorderThickness = 4; | 114 const int kFrameBorderThickness = 4; |
| 115 // While resize areas on Windows are normally the same size as the window | 115 // While resize areas on Windows are normally the same size as the window |
| 116 // borders, our top area is shrunk by 1 px to make it easier to move the window | 116 // borders, our top area is shrunk by 1 px to make it easier to move the window |
| 117 // around with our thinner top grabbable strip. (Incidentally, our side and | 117 // around with our thinner top grabbable strip. (Incidentally, our side and |
| 118 // bottom resize areas don't match the frame border thickness either -- they | 118 // bottom resize areas don't match the frame border thickness either -- they |
| (...skipping 1173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1292 if (devtools_contents) { | 1292 if (devtools_contents) { |
| 1293 // TabContentsViewGtk::WasShown is not called when tab contents is shown by | 1293 // TabContentsViewGtk::WasShown is not called when tab contents is shown by |
| 1294 // anything other than user selecting a Tab. | 1294 // anything other than user selecting a Tab. |
| 1295 // See TabContentsViewViews::OnWindowPosChanged for reference on how it | 1295 // See TabContentsViewViews::OnWindowPosChanged for reference on how it |
| 1296 // should be implemented. | 1296 // should be implemented. |
| 1297 devtools_contents->tab_contents()->ShowContents(); | 1297 devtools_contents->tab_contents()->ShowContents(); |
| 1298 } | 1298 } |
| 1299 | 1299 |
| 1300 bool should_show = old_devtools == NULL && devtools_contents != NULL; | 1300 bool should_show = old_devtools == NULL && devtools_contents != NULL; |
| 1301 bool should_hide = old_devtools != NULL && devtools_contents == NULL; | 1301 bool should_hide = old_devtools != NULL && devtools_contents == NULL; |
| 1302 GtkAllocation devtools_rect; | |
| 1303 gtk_widget_get_allocation(devtools_container_->widget(), &devtools_rect); | |
| 1302 if (should_show) { | 1304 if (should_show) { |
| 1305 if (devtools_rect.height < kMinDevToolsHeight) { | |
| 1306 gint split_offset = gtk_paned_get_position(GTK_PANED(contents_split_)); | |
| 1307 split_offset -= kMinDevToolsHeight - devtools_rect.height; | |
| 1308 gtk_paned_set_position(GTK_PANED(contents_split_), split_offset); | |
| 1309 } | |
| 1303 gtk_widget_show(devtools_container_->widget()); | 1310 gtk_widget_show(devtools_container_->widget()); |
| 1304 } else if (should_hide) { | 1311 } else if (should_hide) { |
| 1305 // Store split offset when hiding devtools window only. | |
| 1306 gint divider_offset = gtk_paned_get_position(GTK_PANED(contents_split_)); | |
| 1307 browser_->profile()->GetPrefs()-> | 1312 browser_->profile()->GetPrefs()-> |
| 1308 SetInteger(prefs::kDevToolsSplitLocation, divider_offset); | 1313 SetInteger(prefs::kDevToolsWidgetHeight, devtools_rect.height); |
| 1309 gtk_widget_hide(devtools_container_->widget()); | 1314 gtk_widget_hide(devtools_container_->widget()); |
| 1310 } | 1315 } |
| 1311 } | 1316 } |
| 1312 | 1317 |
| 1313 void BrowserWindowGtk::DestroyBrowser() { | 1318 void BrowserWindowGtk::DestroyBrowser() { |
| 1314 browser_.reset(); | 1319 browser_.reset(); |
| 1315 } | 1320 } |
| 1316 | 1321 |
| 1317 gboolean BrowserWindowGtk::OnConfigure(GtkWidget* widget, | 1322 gboolean BrowserWindowGtk::OnConfigure(GtkWidget* widget, |
| 1318 GdkEventConfigure* event) { | 1323 GdkEventConfigure* event) { |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1679 | 1684 |
| 1680 contents_container_.reset(new TabContentsContainerGtk(status_bubble_.get())); | 1685 contents_container_.reset(new TabContentsContainerGtk(status_bubble_.get())); |
| 1681 devtools_container_.reset(new TabContentsContainerGtk(NULL)); | 1686 devtools_container_.reset(new TabContentsContainerGtk(NULL)); |
| 1682 ViewIDUtil::SetID(devtools_container_->widget(), VIEW_ID_DEV_TOOLS_DOCKED); | 1687 ViewIDUtil::SetID(devtools_container_->widget(), VIEW_ID_DEV_TOOLS_DOCKED); |
| 1683 contents_split_ = gtk_vpaned_new(); | 1688 contents_split_ = gtk_vpaned_new(); |
| 1684 gtk_paned_pack1(GTK_PANED(contents_split_), contents_container_->widget(), | 1689 gtk_paned_pack1(GTK_PANED(contents_split_), contents_container_->widget(), |
| 1685 TRUE, TRUE); | 1690 TRUE, TRUE); |
| 1686 gtk_paned_pack2(GTK_PANED(contents_split_), devtools_container_->widget(), | 1691 gtk_paned_pack2(GTK_PANED(contents_split_), devtools_container_->widget(), |
| 1687 FALSE, TRUE); | 1692 FALSE, TRUE); |
| 1688 gtk_box_pack_end(GTK_BOX(render_area_vbox_), contents_split_, TRUE, TRUE, 0); | 1693 gtk_box_pack_end(GTK_BOX(render_area_vbox_), contents_split_, TRUE, TRUE, 0); |
| 1689 // Restore split offset. | 1694 |
| 1695 // split_location is obsolete property. It will never be updated. | |
| 1696 // We just check it for backward compatibility. | |
| 1690 int split_offset = browser_->profile()->GetPrefs()-> | 1697 int split_offset = browser_->profile()->GetPrefs()-> |
| 1691 GetInteger(prefs::kDevToolsSplitLocation); | 1698 GetInteger(prefs::kDevToolsSplitLocation); |
|
pfeldman
2011/06/07 14:54:06
I'd suggest nuking the property and fixing all por
| |
| 1692 if (split_offset != -1) { | 1699 |
| 1693 if (split_offset < kMinDevToolsHeight) | 1700 int devtools_height = browser_->profile()->GetPrefs()-> |
| 1694 split_offset = kMinDevToolsHeight; | 1701 GetInteger(prefs::kDevToolsWidgetHeight); |
| 1695 gtk_paned_set_position(GTK_PANED(contents_split_), split_offset); | 1702 |
| 1696 } else { | 1703 if (devtools_height == -1 && split_offset == -1) |
| 1697 gtk_widget_set_size_request(devtools_container_->widget(), -1, | 1704 devtools_height = kDefaultDevToolsHeight; |
| 1698 kDefaultDevToolsHeight); | 1705 |
| 1699 } | 1706 if (devtools_height == -1) |
| 1707 devtools_height = bounds_.height() - split_offset; | |
| 1708 | |
| 1709 devtools_height = std::max(devtools_height, kMinDevToolsHeight); | |
| 1710 devtools_height = std::min(devtools_height, bounds_.height() * 2 / 3); | |
| 1711 gtk_widget_set_size_request(devtools_container_->widget(), -1, | |
| 1712 devtools_height); | |
| 1713 | |
| 1700 gtk_widget_show_all(render_area_floating_container_); | 1714 gtk_widget_show_all(render_area_floating_container_); |
| 1701 gtk_widget_hide(devtools_container_->widget()); | 1715 gtk_widget_hide(devtools_container_->widget()); |
| 1702 render_area_event_box_ = gtk_event_box_new(); | 1716 render_area_event_box_ = gtk_event_box_new(); |
| 1703 // Set a white background so during startup the user sees white in the | 1717 // Set a white background so during startup the user sees white in the |
| 1704 // content area before we get a TabContents in place. | 1718 // content area before we get a TabContents in place. |
| 1705 gtk_widget_modify_bg(render_area_event_box_, GTK_STATE_NORMAL, | 1719 gtk_widget_modify_bg(render_area_event_box_, GTK_STATE_NORMAL, |
| 1706 >k_util::kGdkWhite); | 1720 >k_util::kGdkWhite); |
| 1707 gtk_container_add(GTK_CONTAINER(render_area_event_box_), | 1721 gtk_container_add(GTK_CONTAINER(render_area_event_box_), |
| 1708 render_area_floating_container_); | 1722 render_area_floating_container_); |
| 1709 gtk_widget_show(render_area_event_box_); | 1723 gtk_widget_show(render_area_event_box_); |
| (...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2372 // are taken from the WMs' source code. | 2386 // are taken from the WMs' source code. |
| 2373 return (wm_name == "Blackbox" || | 2387 return (wm_name == "Blackbox" || |
| 2374 wm_name == "compiz" || | 2388 wm_name == "compiz" || |
| 2375 wm_name == "Compiz" || | 2389 wm_name == "Compiz" || |
| 2376 wm_name == "e16" || // Enlightenment DR16 | 2390 wm_name == "e16" || // Enlightenment DR16 |
| 2377 wm_name == "Metacity" || | 2391 wm_name == "Metacity" || |
| 2378 wm_name == "Mutter" || | 2392 wm_name == "Mutter" || |
| 2379 wm_name == "Openbox" || | 2393 wm_name == "Openbox" || |
| 2380 wm_name == "Xfwm4"); | 2394 wm_name == "Xfwm4"); |
| 2381 } | 2395 } |
| OLD | NEW |