Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1755)

Unified Diff: chrome/browser/tab_contents/render_view_context_menu.cc

Issue 566031: Chromium side of Writing Direction Context Menu on OS X (Closed)
Patch Set: Fix Avi's comments. Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/common/render_messages.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/tab_contents/render_view_context_menu.cc
diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc
index 039b24537ec14a76ab1a2e0c9af30d6848cfb2e5..a9cc073012d49e41bce1d29fa2717065d70ccadd 100644
--- a/chrome/browser/tab_contents/render_view_context_menu.cc
+++ b/chrome/browser/tab_contents/render_view_context_menu.cc
@@ -34,8 +34,9 @@
#include "net/base/escape.h"
#include "net/url_request/url_request.h"
#include "webkit/glue/webmenuitem.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebMediaPlayerAction.h"
#include "third_party/WebKit/WebKit/chromium/public/WebContextMenuData.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebMediaPlayerAction.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebTextDirection.h"
using WebKit::WebContextMenuData;
using WebKit::WebMediaPlayerAction;
@@ -337,6 +338,25 @@ void RenderViewContextMenu::AppendEditableItems() {
}
FinishSubMenu();
+#if defined(OS_MACOSX)
+ // OS X provides a contextual menu to set writing direction for BiDi
+ // languages.
+ // This functionality is exposed as a keyboard shortcut on Windows & Linux.
+
+ // Add writing direction sub menu.
+ StartSubMenu(IDC_WRITING_DIRECTION_MENU,
+ l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_WRITING_DIRECTION_MENU));
+
+ AppendCheckboxMenuItem(IDC_WRITING_DIRECTION_DEFAULT,
+ l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_WRITING_DIRECTION_DEFAULT));
+ AppendCheckboxMenuItem(IDC_WRITING_DIRECTION_LTR,
+ l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_WRITING_DIRECTION_LTR));
+ AppendCheckboxMenuItem(IDC_WRITING_DIRECTION_RTL,
+ l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_WRITING_DIRECTION_RTL));
+
+ FinishSubMenu();
+#endif // OS_MACOSX
+
AppendSeparator();
AppendMenuItem(IDS_CONTENT_CONTEXT_SELECTALL);
}
@@ -512,6 +532,18 @@ bool RenderViewContextMenu::IsItemCommandEnabled(int id) const {
case IDC_CHECK_SPELLING_OF_THIS_FIELD:
return profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck);
+#if defined(OS_MACOSX)
+ case IDC_WRITING_DIRECTION_DEFAULT: // Provided to match OS defaults.
+ return params_.writing_direction_default &
+ WebContextMenuData::CheckableMenuItemEnabled;
+ case IDC_WRITING_DIRECTION_RTL:
+ return params_.writing_direction_right_to_left &
+ WebContextMenuData::CheckableMenuItemEnabled;
+ case IDC_WRITING_DIRECTION_LTR:
+ return params_.writing_direction_left_to_right &
+ WebContextMenuData::CheckableMenuItemEnabled;
+#endif // OS_MACOSX
+
#if defined(OS_LINUX)
// Enable the input methods context menu if the content is editable.
// TODO(suzhe): It should not be enabled in password boxes. Anyway,
@@ -535,6 +567,18 @@ bool RenderViewContextMenu::ItemIsChecked(int id) const {
WebContextMenuData::MediaLoop) != 0;
}
+#if defined(OS_MACOSX)
+ if (id == IDC_WRITING_DIRECTION_DEFAULT)
+ return params_.writing_direction_default &
+ WebContextMenuData::CheckableMenuItemChecked;
+ if (id == IDC_WRITING_DIRECTION_RTL)
+ return params_.writing_direction_right_to_left &
+ WebContextMenuData::CheckableMenuItemChecked;
+ if (id == IDC_WRITING_DIRECTION_LTR)
+ return params_.writing_direction_left_to_right &
+ WebContextMenuData::CheckableMenuItemChecked;
+#endif // OS_MACOSX
+
// Check box for 'Check the Spelling of this field'.
if (id == IDC_CHECK_SPELLING_OF_THIS_FIELD) {
return (params_.spellcheck_enabled &&
@@ -816,6 +860,23 @@ void RenderViewContextMenu::ExecuteItemCommand(int id) {
source_tab_contents_->render_view_host()->ToggleSpellPanel(
SpellCheckerPlatform::SpellingPanelVisible());
break;
+
+#if defined(OS_MACOSX)
+ case IDC_WRITING_DIRECTION_DEFAULT:
+ // WebKit's current behavior is for this menu item to always be disabled.
+ NOTREACHED();
+ break;
+ case IDC_WRITING_DIRECTION_RTL:
+ case IDC_WRITING_DIRECTION_LTR: {
+ WebKit::WebTextDirection dir = WebKit::WebTextDirectionLeftToRight;
+ if (id == IDC_WRITING_DIRECTION_RTL)
+ dir = WebKit::WebTextDirectionRightToLeft;
+ source_tab_contents_->render_view_host()->UpdateTextDirection(dir);
+ source_tab_contents_->render_view_host()->NotifyTextDirection();
+ break;
+ }
+#endif // OS_MACOSX
+
case IDS_CONTENT_CONTEXT_ADDSEARCHENGINE: // Not implemented.
default:
break;
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/common/render_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698