diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-29 23:14:03 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-29 23:14:03 +0000 |
commit | 4ace37b1e52fecf91cda2569213c6e739a31d577 (patch) | |
tree | 1caee4c57a335dd51ac6eab98518f113daf4d35e /chrome/browser/gtk | |
parent | e9f5f3bfd5f2791f9e37872560a413280409a4d7 (diff) | |
download | chromium_src-4ace37b1e52fecf91cda2569213c6e739a31d577.zip chromium_src-4ace37b1e52fecf91cda2569213c6e739a31d577.tar.gz chromium_src-4ace37b1e52fecf91cda2569213c6e739a31d577.tar.bz2 |
Basic fullscreen mode for Linux, without the animated exit bubble.
Parts of the code are from ermilov.maxim@gmail.com. Thanks!
BUG=8405
Review URL: http://codereview.chromium.org/100106
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14912 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk')
-rw-r--r-- | chrome/browser/gtk/browser_toolbar_gtk.cc | 8 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_toolbar_gtk.h | 3 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.cc | 19 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.h | 4 | ||||
-rw-r--r-- | chrome/browser/gtk/tabs/tab_strip_gtk.cc | 8 | ||||
-rw-r--r-- | chrome/browser/gtk/tabs/tab_strip_gtk.h | 3 |
6 files changed, 40 insertions, 5 deletions
diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc index 64bae89..87f4818 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.cc +++ b/chrome/browser/gtk/browser_toolbar_gtk.cc @@ -164,6 +164,14 @@ void BrowserToolbarGtk::AddToolbarToBox(GtkWidget* box) { gtk_box_pack_start(GTK_BOX(box), toolbar_, FALSE, FALSE, 0); } +void BrowserToolbarGtk::Show() { + gtk_widget_show(toolbar_); +} + +void BrowserToolbarGtk::Hide() { + gtk_widget_hide(toolbar_); +} + LocationBar* BrowserToolbarGtk::GetLocationBar() const { return location_bar_.get(); } diff --git a/chrome/browser/gtk/browser_toolbar_gtk.h b/chrome/browser/gtk/browser_toolbar_gtk.h index a8c4142..bfb039b 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.h +++ b/chrome/browser/gtk/browser_toolbar_gtk.h @@ -44,6 +44,9 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, // Adds this GTK toolbar into a sizing box. void AddToolbarToBox(GtkWidget* box); + void Show(); + void Hide(); + virtual LocationBar* GetLocationBar() const; GoButtonGtk* GetGoButton() { return go_.get(); } diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc index 85252ac..8500a17 100644 --- a/chrome/browser/gtk/browser_window_gtk.cc +++ b/chrome/browser/gtk/browser_window_gtk.cc @@ -125,6 +125,7 @@ const struct AcceleratorMapping { { GDK_g, IDC_FIND_PREVIOUS, GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, { GDK_F3, IDC_FIND_PREVIOUS, GDK_SHIFT_MASK }, + { GDK_F11, IDC_FULLSCREEN, GdkModifierType(0) }, }; int GetCommandId(guint accel_key, GdkModifierType modifier) { @@ -202,6 +203,7 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) : browser_(browser), // TODO(port): make this a pref. custom_frame_(false), + full_screen_(false), method_factory_(this) { window_ = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); gtk_window_set_default_size(window_, 640, 480); @@ -423,14 +425,21 @@ bool BrowserWindowGtk::IsMaximized() const { } void BrowserWindowGtk::SetFullscreen(bool fullscreen) { - // Need to implement full screen mode. - // http://code.google.com/p/chromium/issues/detail?id=8405 + if (fullscreen) { + full_screen_ = true; + tabstrip_->Hide(); + toolbar_->Hide(); + gtk_window_fullscreen(window_); + } else { + full_screen_ = false; + gtk_window_unfullscreen(window_); + toolbar_->Show(); + tabstrip_->Show(); + } } bool BrowserWindowGtk::IsFullscreen() const { - // Need to implement full screen mode. - // http://code.google.com/p/chromium/issues/detail?id=8405 - return false; + return full_screen_; } LocationBar* BrowserWindowGtk::GetLocationBar() const { diff --git a/chrome/browser/gtk/browser_window_gtk.h b/chrome/browser/gtk/browser_window_gtk.h index 07c5477..0be080d 100644 --- a/chrome/browser/gtk/browser_window_gtk.h +++ b/chrome/browser/gtk/browser_window_gtk.h @@ -151,6 +151,10 @@ class BrowserWindowGtk : public BrowserWindow, // Whether we're drawing the custom Chrome frame (including title bar). bool custom_frame_; + // Whether we are full screen. Since IsFullscreen() gets called before + // OnStateChanged(), we can't rely on |state_| & GDK_WINDOW_STATE_FULLSCREEN. + bool full_screen_; + // The object that manages all of the widgets in the toolbar. scoped_ptr<BrowserToolbarGtk> toolbar_; diff --git a/chrome/browser/gtk/tabs/tab_strip_gtk.cc b/chrome/browser/gtk/tabs/tab_strip_gtk.cc index eb7e31b..c9b12e3 100644 --- a/chrome/browser/gtk/tabs/tab_strip_gtk.cc +++ b/chrome/browser/gtk/tabs/tab_strip_gtk.cc @@ -569,6 +569,14 @@ void TabStripGtk::AddTabStripToBox(GtkWidget* box) { gtk_box_pack_start(GTK_BOX(box), tabstrip_.get(), FALSE, FALSE, 0); } +void TabStripGtk::Show() { + gtk_widget_show(tabstrip_.get()); +} + +void TabStripGtk::Hide() { + gtk_widget_hide(tabstrip_.get()); +} + void TabStripGtk::Layout() { // Called from: // - window resize diff --git a/chrome/browser/gtk/tabs/tab_strip_gtk.h b/chrome/browser/gtk/tabs/tab_strip_gtk.h index 325c2f4..1d4a118 100644 --- a/chrome/browser/gtk/tabs/tab_strip_gtk.h +++ b/chrome/browser/gtk/tabs/tab_strip_gtk.h @@ -28,6 +28,9 @@ class TabStripGtk : public TabStripModelObserver, void Init(); void AddTabStripToBox(GtkWidget* box); + void Show(); + void Hide(); + TabStripModel* model() const { return model_; } // Sets the bounds of the tabs. |