From 9a6814e36829a671f94ebec06c7f1b42fa927420 Mon Sep 17 00:00:00 2001 From: "sail@chromium.org" <sail@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Tue, 27 Nov 2012 09:35:38 +0000 Subject: Fix ui::Accelerator class hierarchy Currently ui::Accelerator has two platform specific subclasses (ui::AcceleratorCocoa and ui::AcceleratorGtk). The CL changes the hierarchy so that platform specific data is now stored in a ui::Accelerator::platform_accelerator_ member variable instead. If ui::Accelerator is created by cross platform code or by views code then the member variable is NULL. If it's created by Mac code then it's an instance of ui::PlatformAcceleratorCocoa. If it's create by GTK code then it's an instance of ui::PlatformAcceleratorGtk. This fixes an issue where code would incorrectly cast a ui::Accelerator instance to a platform specific version. With this change the code can instead do a NULL check for ui::Accelerator::platform_accelerator_. I also changed ui::Accelerator::modifiers_ so that it no longer stores cross platform modifier values. It instead store ui::EventFlags values. BUG=160844 Review URL: https://chromiumcodereview.appspot.com/11316071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@169615 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/ui/gtk/global_menu_bar.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'chrome/browser/ui/gtk/global_menu_bar.cc') diff --git a/chrome/browser/ui/gtk/global_menu_bar.cc b/chrome/browser/ui/gtk/global_menu_bar.cc index 8476253..1e3add7 100644 --- a/chrome/browser/ui/gtk/global_menu_bar.cc +++ b/chrome/browser/ui/gtk/global_menu_bar.cc @@ -21,6 +21,7 @@ #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_source.h" #include "grit/generated_resources.h" +#include "ui/base/accelerators/platform_accelerator_gtk.h" #include "ui/base/gtk/menu_label_accelerator_util.h" #include "ui/base/l10n/l10n_util.h" @@ -175,14 +176,14 @@ GlobalMenuBar::GlobalMenuBar(Browser* browser) // Set the accelerator for each menu item. AcceleratorsGtk* accelerators = AcceleratorsGtk::GetInstance(); - const ui::AcceleratorGtk* accelerator = + const ui::Accelerator* accelerator = accelerators->GetPrimaryAcceleratorForCommand(it->first); if (accelerator) { gtk_widget_add_accelerator(it->second, "activate", dummy_accel_group_, - accelerator->GetGdkKeyCode(), - accelerator->gdk_modifier_type(), + ui::GetGdkKeyCodeForAccelerator(*accelerator), + ui::GetGdkModifierForAccelerator(*accelerator), GTK_ACCEL_VISIBLE); } -- cgit v1.1