summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-13 22:38:19 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-13 22:38:19 +0000
commit9a295b8b77f4ad665fa5a3ec9201d44850b38a88 (patch)
tree97cb83425070c5bcaba6d3b5c837a6f5cfac6fad
parentdae1b35cd836002ee6be56ad6436fc2d763f0bcb (diff)
downloadchromium_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.cc5
-rw-r--r--chrome/browser/views/frame/browser_frame_gtk.h1
-rw-r--r--views/accelerator.cc92
-rw-r--r--views/screen.h3
-rw-r--r--views/screen_gtk.cc10
-rw-r--r--views/screen_win.cc9
-rw-r--r--views/views.gyp1
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',