Skip to content
This repository was archived by the owner on Sep 2, 2021. It is now read-only.

Commit d22ab4c

Browse files
pelatxnethip
authored andcommitted
Linux native menus lost shortcuts (#637)
* Initial commit. Some shortcuts still not seen. * Shorcuts return (to Linux native menus) * Indentation fix. * More indentation fixes.
1 parent 964cafd commit d22ab4c

3 files changed

Lines changed: 30 additions & 11 deletions

File tree

appshell/appshell_extensions_gtk.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,7 @@ int32 AddMenuItem(CefRefPtr<CefBrowser> browser, ExtensionString parentCommand,
10641064

10651065
ExtensionString commandId = model.getCommandId(tag);
10661066
model.setOsItem(tag, entry);
1067+
model.setKey(tag, key);
10671068
ParseShortcut(browser, entry, key, commandId);
10681069
GtkWidget* menuHeader = (GtkWidget*) model.getOsItem(parentTag);
10691070
GtkWidget* menuWidget = gtk_menu_item_get_submenu(GTK_MENU_ITEM(menuHeader));
@@ -1140,13 +1141,16 @@ int32 SetMenuItemState(CefRefPtr<CefBrowser> browser, ExtensionString command, b
11401141
if (checked == true) {
11411142
newMenuItem = gtk_check_menu_item_new_with_label(label);
11421143
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(newMenuItem), true);
1143-
} else if (checked == false){
1144+
} else {
11441145
newMenuItem = gtk_menu_item_new_with_label(label);
11451146
}
11461147
gtk_widget_destroy(menuItem);
11471148

11481149
InstallMenuHandler(newMenuItem, browser, tag);
1150+
11491151
model.setOsItem(tag, newMenuItem);
1152+
ExtensionString key = model.getKey(tag);
1153+
ParseShortcut(browser, newMenuItem, key, command);
11501154
gtk_menu_shell_insert(GTK_MENU_SHELL(parent), newMenuItem, position);
11511155
gtk_widget_set_sensitive(newMenuItem, enabled);
11521156
gtk_widget_show(newMenuItem);
@@ -1191,13 +1195,15 @@ int32 GetMenuTitle(CefRefPtr<CefBrowser> browser, ExtensionString commandId, Ext
11911195

11921196
int32 SetMenuItemShortcut(CefRefPtr<CefBrowser> browser, ExtensionString commandId, ExtensionString shortcut, ExtensionString displayStr)
11931197
{
1194-
NativeMenuModel model = NativeMenuModel::getInstance(getMenuParent(browser));
1195-
int32 tag = model.getTag(commandId);
1198+
NativeMenuModel& model = NativeMenuModel::getInstance(getMenuParent(browser));
1199+
int tag = model.getTag(commandId);
11961200
if (tag == kTagNotFound) {
11971201
return ERR_NOT_FOUND;
11981202
}
11991203
GtkWidget* entry = (GtkWidget*) model.getOsItem(tag);
1204+
model.setKey(tag, shortcut);
12001205
ParseShortcut(browser, entry, shortcut, commandId);
1206+
12011207
return NO_ERROR;
12021208
}
12031209

@@ -1396,5 +1402,3 @@ std::string GetSystemUniqueID()
13961402

13971403
return buf;
13981404
}
1399-
1400-

appshell/native_menu_model.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,22 @@ ExtensionString NativeMenuModel::getParentId(int tag) {
9797
return menuItems[tag].parentId;
9898
}
9999

100+
ExtensionString NativeMenuModel::getKey(int tag) {
101+
menu::iterator foundItem = menuItems.find(tag);
102+
if(foundItem == menuItems.end()) {
103+
return ExtensionString();
104+
}
105+
return menuItems[tag].key;
106+
}
107+
108+
void NativeMenuModel::setKey (int tag, ExtensionString theKey) {
109+
menu::iterator foundItem = menuItems.find(tag);
110+
if(foundItem == menuItems.end()) {
111+
return;
112+
}
113+
menuItems[tag].key = theKey;
114+
}
115+
100116
int NativeMenuModel::getOrCreateTag(ExtensionString command, ExtensionString parent)
101117
{
102118
menuTag::iterator foundItem = commandMap.find(command);

appshell/native_menu_model.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,16 @@ class NativeMenuItemModel
4646
enabled(enabled),
4747
osItem(NULL),
4848
commandId(commandId),
49-
parentId(parentId)
49+
parentId(parentId),
50+
key(ExtensionString())
5051
{
5152
}
5253
bool checked;
5354
bool enabled;
5455
void *osItem;
5556
ExtensionString commandId;
5657
ExtensionString parentId;
58+
ExtensionString key;
5759
};
5860

5961
//command name -> menutag
@@ -91,13 +93,10 @@ class NativeMenuModel {
9193
int setTag(ExtensionString command, ExtensionString parent, int tag);
9294
ExtensionString getCommandId(int tag);
9395
ExtensionString getParentId(int tag);
96+
ExtensionString getKey(int tag);
97+
void setKey(int tag, ExtensionString theKey);
9498
void setOsItem (int tag, void* theItem);
9599
void* getOsItem (int tag);
96100

97101
int removeMenuItem(const ExtensionString& command);
98102
};
99-
100-
101-
102-
103-

0 commit comments

Comments
 (0)