summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-29 23:14:03 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-29 23:14:03 +0000
commit4ace37b1e52fecf91cda2569213c6e739a31d577 (patch)
tree1caee4c57a335dd51ac6eab98518f113daf4d35e /chrome/browser/gtk
parente9f5f3bfd5f2791f9e37872560a413280409a4d7 (diff)
downloadchromium_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.cc8
-rw-r--r--chrome/browser/gtk/browser_toolbar_gtk.h3
-rw-r--r--chrome/browser/gtk/browser_window_gtk.cc19
-rw-r--r--chrome/browser/gtk/browser_window_gtk.h4
-rw-r--r--chrome/browser/gtk/tabs/tab_strip_gtk.cc8
-rw-r--r--chrome/browser/gtk/tabs/tab_strip_gtk.h3
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.