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
1=== modified file 'extensions/globalmenu/components/src/uGlobalMenu.cpp'
2--- extensions/globalmenu/components/src/uGlobalMenu.cpp 2011-02-13 22:54:50 +0000
3+++ extensions/globalmenu/components/src/uGlobalMenu.cpp 2011-02-14 15:06:38 +0000
4@@ -138,9 +138,28 @@
5 }
6 }
7
8+PRBool
9+uGlobalMenu::CanOpen()
10+{
11+ PRBool isHidden = mContent->AttrValueIs(kNameSpaceID_None,
12+ uWidgetAtoms::hidden,
13+ uWidgetAtoms::_true,
14+ eCaseMatters);
15+ PRBool isDisabled = mContent->AttrValueIs(kNameSpaceID_None,
16+ uWidgetAtoms::disabled,
17+ uWidgetAtoms::_true,
18+ eCaseMatters);
19+
20+ return (!isHidden && !isDisabled);
21+}
22+
23 void
24 uGlobalMenu::OnOpen()
25 {
26+ if (!CanOpen()) {
27+ return;
28+ }
29+
30 Activate();
31
32 mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::open, NS_LITERAL_STRING("true"), PR_TRUE);
33
34=== modified file 'extensions/globalmenu/components/src/uGlobalMenu.h'
35--- extensions/globalmenu/components/src/uGlobalMenu.h 2011-02-07 15:27:54 +0000
36+++ extensions/globalmenu/components/src/uGlobalMenu.h 2011-02-14 15:06:38 +0000
37@@ -88,6 +88,7 @@
38 void GetMenuPopupFromMenu (nsIContent **aResult);
39 static PRBool MenuOpenCallback (DbusmenuMenuitem *menu,
40 void *data);
41+ PRBool CanOpen ();
42 void OnOpen ();
43 void Activate ();
44 void Deactivate ();
45
46=== modified file 'extensions/globalmenu/components/src/uGlobalMenuBar.cpp'
47--- extensions/globalmenu/components/src/uGlobalMenuBar.cpp 2011-02-04 23:49:41 +0000
48+++ extensions/globalmenu/components/src/uGlobalMenuBar.cpp 2011-02-14 15:06:38 +0000
49@@ -340,7 +340,11 @@
50
51 nsCOMPtr<nsIDOMKeyEvent> keyEvent = do_QueryInterface(aKeyEvent);
52 uGlobalMenuObject *found = nsnull;
53+ PRUint32 keyCode = nsnull;
54+
55 if (keyEvent) {
56+ keyEvent->GetKeyCode(&keyCode);
57+ PRUint32 count = mMenuObjects.Length();
58 PRUint32 modifiers = GetModifiersFromEvent(keyEvent);
59 if ((modifiers & mAccessKeyMask) && ((modifiers & ~mAccessKeyMask) == 0)) {
60 // The menu access modifier is pressed
61@@ -361,7 +365,6 @@
62 ToLowerCase(cCharCode, lowerCaseCode);
63 CopyUTF8toUTF16(lowerCaseCode, aCharCode);
64 ch = *aCharCode.BeginWriting();
65- PRUint32 count = mMenuObjects.Length();
66 PRUint32 i;
67 for (i = 0; i < count; i++) {
68 nsCOMPtr<nsIContent> content;
69@@ -378,10 +381,21 @@
70 if (*key == ch) {
71 found = mMenuObjects[i];
72 break;
73- }
74+ }
75 }
76 }
77 }
78+ } else if (keyCode == nsIDOMKeyEvent::DOM_VK_F10) {
79+ // Go through each mMenuObject, and find the first one
80+ // that is both visible and sensitive, and mark it found
81+ // for opening.
82+ for (PRUint32 i = 0; i < count; i++) {
83+ uGlobalMenu *menu = static_cast<uGlobalMenu *>((uGlobalMenuObject *)mMenuObjects[i]);
84+ if (menu->CanOpen()) {
85+ found = mMenuObjects[i];
86+ break;
87+ }
88+ }
89 }
90 }
91

Subscribers

People subscribed via source and target branches