Commit 4ace37b1 authored by thestig@chromium.org's avatar thestig@chromium.org

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
parent e9f5f3bf
......@@ -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();
}
......
......@@ -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(); }
......
......@@ -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 {
......
......@@ -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_;
......
......@@ -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
......
......@@ -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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment