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) { ...@@ -164,6 +164,14 @@ void BrowserToolbarGtk::AddToolbarToBox(GtkWidget* box) {
gtk_box_pack_start(GTK_BOX(box), toolbar_, FALSE, FALSE, 0); 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 { LocationBar* BrowserToolbarGtk::GetLocationBar() const {
return location_bar_.get(); return location_bar_.get();
} }
......
...@@ -44,6 +44,9 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, ...@@ -44,6 +44,9 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver,
// Adds this GTK toolbar into a sizing box. // Adds this GTK toolbar into a sizing box.
void AddToolbarToBox(GtkWidget* box); void AddToolbarToBox(GtkWidget* box);
void Show();
void Hide();
virtual LocationBar* GetLocationBar() const; virtual LocationBar* GetLocationBar() const;
GoButtonGtk* GetGoButton() { return go_.get(); } GoButtonGtk* GetGoButton() { return go_.get(); }
......
...@@ -125,6 +125,7 @@ const struct AcceleratorMapping { ...@@ -125,6 +125,7 @@ const struct AcceleratorMapping {
{ GDK_g, IDC_FIND_PREVIOUS, { GDK_g, IDC_FIND_PREVIOUS,
GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) },
{ GDK_F3, IDC_FIND_PREVIOUS, GDK_SHIFT_MASK }, { GDK_F3, IDC_FIND_PREVIOUS, GDK_SHIFT_MASK },
{ GDK_F11, IDC_FULLSCREEN, GdkModifierType(0) },
}; };
int GetCommandId(guint accel_key, GdkModifierType modifier) { int GetCommandId(guint accel_key, GdkModifierType modifier) {
...@@ -202,6 +203,7 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) ...@@ -202,6 +203,7 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser)
: browser_(browser), : browser_(browser),
// TODO(port): make this a pref. // TODO(port): make this a pref.
custom_frame_(false), custom_frame_(false),
full_screen_(false),
method_factory_(this) { method_factory_(this) {
window_ = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); window_ = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
gtk_window_set_default_size(window_, 640, 480); gtk_window_set_default_size(window_, 640, 480);
...@@ -423,14 +425,21 @@ bool BrowserWindowGtk::IsMaximized() const { ...@@ -423,14 +425,21 @@ bool BrowserWindowGtk::IsMaximized() const {
} }
void BrowserWindowGtk::SetFullscreen(bool fullscreen) { void BrowserWindowGtk::SetFullscreen(bool fullscreen) {
// Need to implement full screen mode. if (fullscreen) {
// http://code.google.com/p/chromium/issues/detail?id=8405 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 { bool BrowserWindowGtk::IsFullscreen() const {
// Need to implement full screen mode. return full_screen_;
// http://code.google.com/p/chromium/issues/detail?id=8405
return false;
} }
LocationBar* BrowserWindowGtk::GetLocationBar() const { LocationBar* BrowserWindowGtk::GetLocationBar() const {
......
...@@ -151,6 +151,10 @@ class BrowserWindowGtk : public BrowserWindow, ...@@ -151,6 +151,10 @@ class BrowserWindowGtk : public BrowserWindow,
// Whether we're drawing the custom Chrome frame (including title bar). // Whether we're drawing the custom Chrome frame (including title bar).
bool custom_frame_; 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. // The object that manages all of the widgets in the toolbar.
scoped_ptr<BrowserToolbarGtk> toolbar_; scoped_ptr<BrowserToolbarGtk> toolbar_;
......
...@@ -569,6 +569,14 @@ void TabStripGtk::AddTabStripToBox(GtkWidget* box) { ...@@ -569,6 +569,14 @@ void TabStripGtk::AddTabStripToBox(GtkWidget* box) {
gtk_box_pack_start(GTK_BOX(box), tabstrip_.get(), FALSE, FALSE, 0); 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() { void TabStripGtk::Layout() {
// Called from: // Called from:
// - window resize // - window resize
......
...@@ -28,6 +28,9 @@ class TabStripGtk : public TabStripModelObserver, ...@@ -28,6 +28,9 @@ class TabStripGtk : public TabStripModelObserver,
void Init(); void Init();
void AddTabStripToBox(GtkWidget* box); void AddTabStripToBox(GtkWidget* box);
void Show();
void Hide();
TabStripModel* model() const { return model_; } TabStripModel* model() const { return model_; }
// Sets the bounds of the tabs. // 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