OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/gtk/browser_window_gtk.h" | 5 #include "chrome/browser/gtk/browser_window_gtk.h" |
6 | 6 |
7 #include <gdk/gdkkeysyms.h> | 7 #include <gdk/gdkkeysyms.h> |
8 | 8 |
9 #include "base/base_paths_linux.h" | 9 #include "base/base_paths_linux.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 { GDK_equal, IDC_ZOOM_PLUS, GDK_CONTROL_MASK }, | 118 { GDK_equal, IDC_ZOOM_PLUS, GDK_CONTROL_MASK }, |
119 { GDK_0, IDC_ZOOM_NORMAL, GDK_CONTROL_MASK }, | 119 { GDK_0, IDC_ZOOM_NORMAL, GDK_CONTROL_MASK }, |
120 { GDK_minus, IDC_ZOOM_MINUS, GDK_CONTROL_MASK }, | 120 { GDK_minus, IDC_ZOOM_MINUS, GDK_CONTROL_MASK }, |
121 { GDK_underscore, IDC_ZOOM_MINUS, | 121 { GDK_underscore, IDC_ZOOM_MINUS, |
122 GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, | 122 GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, |
123 { GDK_g, IDC_FIND_NEXT, GDK_CONTROL_MASK }, | 123 { GDK_g, IDC_FIND_NEXT, GDK_CONTROL_MASK }, |
124 { GDK_F3, IDC_FIND_NEXT, GdkModifierType(0) }, | 124 { GDK_F3, IDC_FIND_NEXT, GdkModifierType(0) }, |
125 { GDK_g, IDC_FIND_PREVIOUS, | 125 { GDK_g, IDC_FIND_PREVIOUS, |
126 GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, | 126 GdkModifierType(GDK_CONTROL_MASK | GDK_SHIFT_MASK) }, |
127 { GDK_F3, IDC_FIND_PREVIOUS, GDK_SHIFT_MASK }, | 127 { GDK_F3, IDC_FIND_PREVIOUS, GDK_SHIFT_MASK }, |
| 128 { GDK_F11, IDC_FULLSCREEN, GdkModifierType(0) }, |
128 }; | 129 }; |
129 | 130 |
130 int GetCommandId(guint accel_key, GdkModifierType modifier) { | 131 int GetCommandId(guint accel_key, GdkModifierType modifier) { |
131 // Bug 9806: If capslock is on, we will get a capital letter as accel_key. | 132 // Bug 9806: If capslock is on, we will get a capital letter as accel_key. |
132 accel_key = gdk_keyval_to_lower(accel_key); | 133 accel_key = gdk_keyval_to_lower(accel_key); |
133 // Filter modifier to only include accelerator modifiers. | 134 // Filter modifier to only include accelerator modifiers. |
134 modifier = static_cast<GdkModifierType>( | 135 modifier = static_cast<GdkModifierType>( |
135 modifier & gtk_accelerator_get_default_mod_mask()); | 136 modifier & gtk_accelerator_get_default_mod_mask()); |
136 for (size_t i = 0; i < arraysize(kAcceleratorMap); ++i) { | 137 for (size_t i = 0; i < arraysize(kAcceleratorMap); ++i) { |
137 if (kAcceleratorMap[i].keyval == accel_key && | 138 if (kAcceleratorMap[i].keyval == accel_key && |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 } | 196 } |
196 | 197 |
197 } // namespace | 198 } // namespace |
198 | 199 |
199 // TODO(estade): Break up this constructor into helper functions to improve | 200 // TODO(estade): Break up this constructor into helper functions to improve |
200 // readability. | 201 // readability. |
201 BrowserWindowGtk::BrowserWindowGtk(Browser* browser) | 202 BrowserWindowGtk::BrowserWindowGtk(Browser* browser) |
202 : browser_(browser), | 203 : browser_(browser), |
203 // TODO(port): make this a pref. | 204 // TODO(port): make this a pref. |
204 custom_frame_(false), | 205 custom_frame_(false), |
| 206 full_screen_(false), |
205 method_factory_(this) { | 207 method_factory_(this) { |
206 window_ = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); | 208 window_ = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); |
207 gtk_window_set_default_size(window_, 640, 480); | 209 gtk_window_set_default_size(window_, 640, 480); |
208 g_object_set_data(G_OBJECT(window_), "browser_window_gtk", this); | 210 g_object_set_data(G_OBJECT(window_), "browser_window_gtk", this); |
209 g_signal_connect(window_, "delete-event", | 211 g_signal_connect(window_, "delete-event", |
210 G_CALLBACK(MainWindowDeleteEvent), this); | 212 G_CALLBACK(MainWindowDeleteEvent), this); |
211 g_signal_connect(window_, "destroy", | 213 g_signal_connect(window_, "destroy", |
212 G_CALLBACK(MainWindowDestroy), this); | 214 G_CALLBACK(MainWindowDestroy), this); |
213 g_signal_connect(window_, "configure-event", | 215 g_signal_connect(window_, "configure-event", |
214 G_CALLBACK(MainWindowConfigured), this); | 216 G_CALLBACK(MainWindowConfigured), this); |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 | 425 |
424 gfx::Rect BrowserWindowGtk::GetNormalBounds() const { | 426 gfx::Rect BrowserWindowGtk::GetNormalBounds() const { |
425 return bounds_; | 427 return bounds_; |
426 } | 428 } |
427 | 429 |
428 bool BrowserWindowGtk::IsMaximized() const { | 430 bool BrowserWindowGtk::IsMaximized() const { |
429 return (state_ & GDK_WINDOW_STATE_MAXIMIZED); | 431 return (state_ & GDK_WINDOW_STATE_MAXIMIZED); |
430 } | 432 } |
431 | 433 |
432 void BrowserWindowGtk::SetFullscreen(bool fullscreen) { | 434 void BrowserWindowGtk::SetFullscreen(bool fullscreen) { |
433 // Need to implement full screen mode. | 435 if (fullscreen) { |
434 // http://code.google.com/p/chromium/issues/detail?id=8405 | 436 full_screen_ = true; |
| 437 tabstrip_->Hide(); |
| 438 toolbar_->Hide(); |
| 439 gtk_window_fullscreen(window_); |
| 440 } else { |
| 441 full_screen_ = false; |
| 442 gtk_window_unfullscreen(window_); |
| 443 toolbar_->Show(); |
| 444 tabstrip_->Show(); |
| 445 } |
435 } | 446 } |
436 | 447 |
437 bool BrowserWindowGtk::IsFullscreen() const { | 448 bool BrowserWindowGtk::IsFullscreen() const { |
438 // Need to implement full screen mode. | 449 return full_screen_; |
439 // http://code.google.com/p/chromium/issues/detail?id=8405 | |
440 return false; | |
441 } | 450 } |
442 | 451 |
443 LocationBar* BrowserWindowGtk::GetLocationBar() const { | 452 LocationBar* BrowserWindowGtk::GetLocationBar() const { |
444 return toolbar_->GetLocationBar(); | 453 return toolbar_->GetLocationBar(); |
445 } | 454 } |
446 | 455 |
447 void BrowserWindowGtk::SetFocusToLocationBar() { | 456 void BrowserWindowGtk::SetFocusToLocationBar() { |
448 GetLocationBar()->FocusLocation(); | 457 GetLocationBar()->FocusLocation(); |
449 } | 458 } |
450 | 459 |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 } else { | 709 } else { |
701 browser_window->ExecuteBrowserCommand(command_id); | 710 browser_window->ExecuteBrowserCommand(command_id); |
702 } | 711 } |
703 | 712 |
704 return TRUE; | 713 return TRUE; |
705 } | 714 } |
706 | 715 |
707 void BrowserWindowGtk::ExecuteBrowserCommand(int id) { | 716 void BrowserWindowGtk::ExecuteBrowserCommand(int id) { |
708 browser_->ExecuteCommand(id); | 717 browser_->ExecuteCommand(id); |
709 } | 718 } |
OLD | NEW |