diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-13 22:38:19 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-13 22:38:19 +0000 |
commit | 9a295b8b77f4ad665fa5a3ec9201d44850b38a88 (patch) | |
tree | 97cb83425070c5bcaba6d3b5c837a6f5cfac6fad | |
parent | dae1b35cd836002ee6be56ad6436fc2d763f0bcb (diff) | |
download | chromium_src-9a295b8b77f4ad665fa5a3ec9201d44850b38a88.zip chromium_src-9a295b8b77f4ad665fa5a3ec9201d44850b38a88.tar.gz chromium_src-9a295b8b77f4ad665fa5a3ec9201d44850b38a88.tar.bz2 |
Couple of views/gtk tweaks:
. Adds accelerator to list of files compiled on views/gtk.
. Adds function to Screen to get monitor bounds from a window.
. Adds BrowserFrameGtk::GetAccelerator to match windows.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/275005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28902 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/views/frame/browser_frame_gtk.cc | 5 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_frame_gtk.h | 1 | ||||
-rw-r--r-- | views/accelerator.cc | 92 | ||||
-rw-r--r-- | views/screen.h | 3 | ||||
-rw-r--r-- | views/screen_gtk.cc | 10 | ||||
-rw-r--r-- | views/screen_win.cc | 9 | ||||
-rw-r--r-- | views/views.gyp | 1 |
7 files changed, 78 insertions, 43 deletions
diff --git a/chrome/browser/views/frame/browser_frame_gtk.cc b/chrome/browser/views/frame/browser_frame_gtk.cc index 953f4a6..4b011b0 100644 --- a/chrome/browser/views/frame/browser_frame_gtk.cc +++ b/chrome/browser/views/frame/browser_frame_gtk.cc @@ -91,3 +91,8 @@ void BrowserFrameGtk::IsActiveChanged() { browser_view_->ActivationChanged(IsActive()); views::WidgetGtk::IsActiveChanged(); } + +bool BrowserFrameGtk::GetAccelerator(int cmd_id, + views::Accelerator* accelerator) { + return browser_view_->GetAccelerator(cmd_id, accelerator); +} diff --git a/chrome/browser/views/frame/browser_frame_gtk.h b/chrome/browser/views/frame/browser_frame_gtk.h index 5b8a561..297b3bd 100644 --- a/chrome/browser/views/frame/browser_frame_gtk.h +++ b/chrome/browser/views/frame/browser_frame_gtk.h @@ -42,6 +42,7 @@ class BrowserFrameGtk : public BrowserFrame, protected: // Overridden from views::WidgetGtk: virtual views::RootView* CreateRootView(); + virtual bool GetAccelerator(int cmd_id, views::Accelerator* accelerator); private: // The BrowserView is our ClientView. This is a pointer to it. diff --git a/views/accelerator.cc b/views/accelerator.cc index 4ac0419..7ecec58 100644 --- a/views/accelerator.cc +++ b/views/accelerator.cc @@ -4,7 +4,9 @@ #include "views/accelerator.h" +#if defined(OS_WIN) #include <windows.h> +#endif #include "app/l10n_util.h" #include "base/logging.h" @@ -16,52 +18,55 @@ namespace views { std::wstring Accelerator::GetShortcutText() const { int string_id = 0; switch(key_code_) { - case VK_TAB: - string_id = IDS_APP_TAB_KEY; - break; - case VK_RETURN: - string_id = IDS_APP_ENTER_KEY; - break; - case VK_ESCAPE: - string_id = IDS_APP_ESC_KEY; - break; - case VK_PRIOR: - string_id = IDS_APP_PAGEUP_KEY; - break; - case VK_NEXT: - string_id = IDS_APP_PAGEDOWN_KEY; - break; - case VK_END: - string_id = IDS_APP_END_KEY; - break; - case VK_HOME: - string_id = IDS_APP_HOME_KEY; - break; - case VK_INSERT: - string_id = IDS_APP_INSERT_KEY; - break; - case VK_DELETE: - string_id = IDS_APP_DELETE_KEY; - break; - case VK_LEFT: - string_id = IDS_APP_LEFT_ARROW_KEY; - break; - case VK_RIGHT: - string_id = IDS_APP_RIGHT_ARROW_KEY; - break; - case VK_BACK: - string_id = IDS_APP_BACKSPACE_KEY; - break; - case VK_F1: - string_id = IDS_APP_F1_KEY; - break; - case VK_F11: - string_id = IDS_APP_F11_KEY; - break; + case base::VKEY_TAB: + string_id = IDS_APP_TAB_KEY; + break; + case base::VKEY_RETURN: + string_id = IDS_APP_ENTER_KEY; + break; + case base::VKEY_ESCAPE: + string_id = IDS_APP_ESC_KEY; + break; + case base::VKEY_PRIOR: + string_id = IDS_APP_PAGEUP_KEY; + break; + case base::VKEY_NEXT: + string_id = IDS_APP_PAGEDOWN_KEY; + break; + case base::VKEY_END: + string_id = IDS_APP_END_KEY; + break; + case base::VKEY_HOME: + string_id = IDS_APP_HOME_KEY; + break; + case base::VKEY_INSERT: + string_id = IDS_APP_INSERT_KEY; + break; + case base::VKEY_DELETE: + string_id = IDS_APP_DELETE_KEY; + break; + case base::VKEY_LEFT: + string_id = IDS_APP_LEFT_ARROW_KEY; + break; + case base::VKEY_RIGHT: + string_id = IDS_APP_RIGHT_ARROW_KEY; + break; + case base::VKEY_BACK: + string_id = IDS_APP_BACKSPACE_KEY; + break; + case base::VKEY_F1: + string_id = IDS_APP_F1_KEY; + break; + case base::VKEY_F11: + string_id = IDS_APP_F11_KEY; + break; + default: + break; } std::wstring shortcut; if (!string_id) { +#if defined(OS_WIN) // Our fallback is to try translate the key code to a regular character // unless it is one of digits (VK_0 to VK_9). Some keyboard // layouts have characters other than digits assigned in @@ -74,6 +79,9 @@ std::wstring Accelerator::GetShortcutText() const { else key = LOWORD(::MapVirtualKeyW(key_code_, MAPVK_VK_TO_CHAR)); shortcut += key; +#elif defined(OS_LINUX) + NOTIMPLEMENTED(); +#endif } else { shortcut = l10n_util::GetString(string_id); } diff --git a/views/screen.h b/views/screen.h index fd37424..0c0d940 100644 --- a/views/screen.h +++ b/views/screen.h @@ -21,6 +21,9 @@ class Screen { // Returns the work area of the monitor nearest the specified window. static gfx::Rect GetMonitorWorkAreaNearestWindow(gfx::NativeWindow window); + // Returns the bounds of the monitor nearest the specified window. + static gfx::Rect GetMonitorAreaNearestWindow(gfx::NativeWindow window); + // Returns the monitor area (not the work area, but the complete bounds) of // the monitor nearest the specified point. static gfx::Rect GetMonitorAreaNearestPoint(const gfx::Point& point); diff --git a/views/screen_gtk.cc b/views/screen_gtk.cc index e0df1a9..dea117c 100644 --- a/views/screen_gtk.cc +++ b/views/screen_gtk.cc @@ -37,6 +37,16 @@ gfx::Rect Screen::GetMonitorWorkAreaNearestWindow(gfx::NativeWindow window) { } // static +gfx::Rect Screen::GetMonitorAreaNearestWindow(gfx::NativeWindow window) { + GdkScreen* screen = gtk_window_get_screen(window); + gint monitor_num = gdk_screen_get_monitor_at_window(screen, + (GTK_WIDGET(window))->window); + GdkRectangle bounds; + gdk_screen_get_monitor_geometry(screen, monitor_num, &bounds); + return gfx::Rect(bounds); +} + +// static gfx::Rect Screen::GetMonitorAreaNearestPoint(const gfx::Point& point) { GdkScreen* screen = gdk_screen_get_default(); gint monitor = gdk_screen_get_monitor_at_point(screen, point.x(), point.y()); diff --git a/views/screen_win.cc b/views/screen_win.cc index 7bfeada..82e95e6 100644 --- a/views/screen_win.cc +++ b/views/screen_win.cc @@ -25,6 +25,15 @@ gfx::Rect Screen::GetMonitorWorkAreaNearestWindow(gfx::NativeWindow window) { } // static +gfx::Rect Screen::GetMonitorAreaNearestWindow(gfx::NativeWindow window) { + MONITORINFO monitor_info; + monitor_info.cbSize = sizeof(monitor_info); + GetMonitorInfo(MonitorFromWindow(window, MONITOR_DEFAULTTONEAREST), + &monitor_info); + return gfx::Rect(monitor_info.rcMonitor); +} + +// static gfx::Rect Screen::GetMonitorAreaNearestPoint(const gfx::Point& point) { POINT initial_loc = { point.x(), point.y() }; HMONITOR monitor = MonitorFromPoint(initial_loc, MONITOR_DEFAULTTONEAREST); diff --git a/views/views.gyp b/views/views.gyp index 2b4f84d..655c57d 100644 --- a/views/views.gyp +++ b/views/views.gyp @@ -298,7 +298,6 @@ '../build/linux/system.gyp:x11', ], 'sources!': [ - 'accelerator.cc', 'accessibility/accessible_wrapper.cc', 'accessibility/view_accessibility.cc', 'accessibility/view_accessibility_wrapper.cc', |