Merge lp:~mconley/globalmenu-extension/open_on_f10_and_add_CanOpen_705924_and_716537 into lp:globalmenu-extension

Proposed by Mike Conley
Status: Merged
Merged at revision: 102
Proposed branch: lp:~mconley/globalmenu-extension/open_on_f10_and_add_CanOpen_705924_and_716537
Merge into: lp:globalmenu-extension
Diff against target: 90 lines (+36/-2)
3 files modified
extensions/globalmenu/components/src/uGlobalMenu.cpp (+19/-0)
extensions/globalmenu/components/src/uGlobalMenu.h (+1/-0)
extensions/globalmenu/components/src/uGlobalMenuBar.cpp (+16/-2)
To merge this branch: bzr merge lp:~mconley/globalmenu-extension/open_on_f10_and_add_CanOpen_705924_and_716537
Reviewer Review Type Date Requested Status
Chris Coulson Pending
Review via email: mp+49642@code.launchpad.net

Description of the change

I've added a CanOpen check to uGlobalMenu to ensure that a menu *can* be opened (is visible, is sensitive) before opening it.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'extensions/globalmenu/components/src/uGlobalMenu.cpp'
--- extensions/globalmenu/components/src/uGlobalMenu.cpp 2011-02-13 22:54:50 +0000
+++ extensions/globalmenu/components/src/uGlobalMenu.cpp 2011-02-14 15:06:38 +0000
@@ -138,9 +138,28 @@
138 }138 }
139}139}
140140
141PRBool
142uGlobalMenu::CanOpen()
143{
144 PRBool isHidden = mContent->AttrValueIs(kNameSpaceID_None,
145 uWidgetAtoms::hidden,
146 uWidgetAtoms::_true,
147 eCaseMatters);
148 PRBool isDisabled = mContent->AttrValueIs(kNameSpaceID_None,
149 uWidgetAtoms::disabled,
150 uWidgetAtoms::_true,
151 eCaseMatters);
152
153 return (!isHidden && !isDisabled);
154}
155
141void156void
142uGlobalMenu::OnOpen()157uGlobalMenu::OnOpen()
143{158{
159 if (!CanOpen()) {
160 return;
161 }
162
144 Activate();163 Activate();
145164
146 mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::open, NS_LITERAL_STRING("true"), PR_TRUE);165 mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::open, NS_LITERAL_STRING("true"), PR_TRUE);
147166
=== modified file 'extensions/globalmenu/components/src/uGlobalMenu.h'
--- extensions/globalmenu/components/src/uGlobalMenu.h 2011-02-07 15:27:54 +0000
+++ extensions/globalmenu/components/src/uGlobalMenu.h 2011-02-14 15:06:38 +0000
@@ -88,6 +88,7 @@
88 void GetMenuPopupFromMenu (nsIContent **aResult);88 void GetMenuPopupFromMenu (nsIContent **aResult);
89 static PRBool MenuOpenCallback (DbusmenuMenuitem *menu,89 static PRBool MenuOpenCallback (DbusmenuMenuitem *menu,
90 void *data);90 void *data);
91 PRBool CanOpen ();
91 void OnOpen ();92 void OnOpen ();
92 void Activate ();93 void Activate ();
93 void Deactivate ();94 void Deactivate ();
9495
=== modified file 'extensions/globalmenu/components/src/uGlobalMenuBar.cpp'
--- extensions/globalmenu/components/src/uGlobalMenuBar.cpp 2011-02-04 23:49:41 +0000
+++ extensions/globalmenu/components/src/uGlobalMenuBar.cpp 2011-02-14 15:06:38 +0000
@@ -340,7 +340,11 @@
340340
341 nsCOMPtr<nsIDOMKeyEvent> keyEvent = do_QueryInterface(aKeyEvent);341 nsCOMPtr<nsIDOMKeyEvent> keyEvent = do_QueryInterface(aKeyEvent);
342 uGlobalMenuObject *found = nsnull;342 uGlobalMenuObject *found = nsnull;
343 PRUint32 keyCode = nsnull;
344
343 if (keyEvent) {345 if (keyEvent) {
346 keyEvent->GetKeyCode(&keyCode);
347 PRUint32 count = mMenuObjects.Length();
344 PRUint32 modifiers = GetModifiersFromEvent(keyEvent);348 PRUint32 modifiers = GetModifiersFromEvent(keyEvent);
345 if ((modifiers & mAccessKeyMask) && ((modifiers & ~mAccessKeyMask) == 0)) {349 if ((modifiers & mAccessKeyMask) && ((modifiers & ~mAccessKeyMask) == 0)) {
346 // The menu access modifier is pressed350 // The menu access modifier is pressed
@@ -361,7 +365,6 @@
361 ToLowerCase(cCharCode, lowerCaseCode);365 ToLowerCase(cCharCode, lowerCaseCode);
362 CopyUTF8toUTF16(lowerCaseCode, aCharCode);366 CopyUTF8toUTF16(lowerCaseCode, aCharCode);
363 ch = *aCharCode.BeginWriting();367 ch = *aCharCode.BeginWriting();
364 PRUint32 count = mMenuObjects.Length();
365 PRUint32 i;368 PRUint32 i;
366 for (i = 0; i < count; i++) {369 for (i = 0; i < count; i++) {
367 nsCOMPtr<nsIContent> content;370 nsCOMPtr<nsIContent> content;
@@ -378,10 +381,21 @@
378 if (*key == ch) {381 if (*key == ch) {
379 found = mMenuObjects[i];382 found = mMenuObjects[i];
380 break;383 break;
381 } 384 }
382 }385 }
383 }386 }
384 }387 }
388 } else if (keyCode == nsIDOMKeyEvent::DOM_VK_F10) {
389 // Go through each mMenuObject, and find the first one
390 // that is both visible and sensitive, and mark it found
391 // for opening.
392 for (PRUint32 i = 0; i < count; i++) {
393 uGlobalMenu *menu = static_cast<uGlobalMenu *>((uGlobalMenuObject *)mMenuObjects[i]);
394 if (menu->CanOpen()) {
395 found = mMenuObjects[i];
396 break;
397 }
398 }
385 }399 }
386 }400 }
387401

Subscribers

People subscribed via source and target branches