From 9ced42eae93f743b29a32eafcbbdda2a3e29e508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20A=2E=20Mart=C3=ADnez?= Date: Tue, 10 Apr 2018 07:23:17 +0200 Subject: [PATCH 1/4] Initial commit. Some shortcuts still not seen. --- appshell/appshell_extensions_gtk.cpp | 6 ++++-- appshell/native_menu_model.cpp | 16 ++++++++++++++++ appshell/native_menu_model.h | 11 +++++------ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/appshell/appshell_extensions_gtk.cpp b/appshell/appshell_extensions_gtk.cpp index 43136c475..efe2ee43b 100644 --- a/appshell/appshell_extensions_gtk.cpp +++ b/appshell/appshell_extensions_gtk.cpp @@ -1064,6 +1064,7 @@ int32 AddMenuItem(CefRefPtr browser, ExtensionString parentCommand, ExtensionString commandId = model.getCommandId(tag); model.setOsItem(tag, entry); + model.setKey(tag, key); ParseShortcut(browser, entry, key, commandId); GtkWidget* menuHeader = (GtkWidget*) model.getOsItem(parentTag); GtkWidget* menuWidget = gtk_menu_item_get_submenu(GTK_MENU_ITEM(menuHeader)); @@ -1147,6 +1148,9 @@ int32 SetMenuItemState(CefRefPtr browser, ExtensionString command, b InstallMenuHandler(newMenuItem, browser, tag); model.setOsItem(tag, newMenuItem); + ExtensionString key = model.getKey(tag); + ExtensionString commandId = model.getCommandId(tag); + ParseShortcut(browser, newMenuItem, key, commandId); gtk_menu_shell_insert(GTK_MENU_SHELL(parent), newMenuItem, position); gtk_widget_set_sensitive(newMenuItem, enabled); gtk_widget_show(newMenuItem); @@ -1396,5 +1400,3 @@ std::string GetSystemUniqueID() return buf; } - - diff --git a/appshell/native_menu_model.cpp b/appshell/native_menu_model.cpp index 4ccd98a43..59191833d 100644 --- a/appshell/native_menu_model.cpp +++ b/appshell/native_menu_model.cpp @@ -97,6 +97,22 @@ ExtensionString NativeMenuModel::getParentId(int tag) { return menuItems[tag].parentId; } +ExtensionString NativeMenuModel::getKey(int tag) { + menu::iterator foundItem = menuItems.find(tag); + if(foundItem == menuItems.end()) { + return ExtensionString(); + } + return menuItems[tag].key; +} + +void NativeMenuModel::setKey (int tag, ExtensionString theKey) { + menu::iterator foundItem = menuItems.find(tag); + if(foundItem == menuItems.end()) { + return; + } + menuItems[tag].key = theKey; +} + int NativeMenuModel::getOrCreateTag(ExtensionString command, ExtensionString parent) { menuTag::iterator foundItem = commandMap.find(command); diff --git a/appshell/native_menu_model.h b/appshell/native_menu_model.h index 72892d1e7..51871a3ec 100644 --- a/appshell/native_menu_model.h +++ b/appshell/native_menu_model.h @@ -46,7 +46,8 @@ class NativeMenuItemModel enabled(enabled), osItem(NULL), commandId(commandId), - parentId(parentId) + parentId(parentId), + key(ExtensionString()) { } bool checked; @@ -54,6 +55,7 @@ class NativeMenuItemModel void *osItem; ExtensionString commandId; ExtensionString parentId; + ExtensionString key; }; //command name -> menutag @@ -91,13 +93,10 @@ class NativeMenuModel { int setTag(ExtensionString command, ExtensionString parent, int tag); ExtensionString getCommandId(int tag); ExtensionString getParentId(int tag); + ExtensionString getKey(int tag); + void setKey(int tag, ExtensionString theKey); void setOsItem (int tag, void* theItem); void* getOsItem (int tag); int removeMenuItem(const ExtensionString& command); }; - - - - - From 0493afe1ebc9c0fe5915f2dfb36c01fa06acfe8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20A=2E=20Mart=C3=ADnez?= Date: Fri, 13 Apr 2018 15:00:32 +0200 Subject: [PATCH 2/4] Shorcuts return (to Linux native menus) --- appshell/appshell_extensions_gtk.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/appshell/appshell_extensions_gtk.cpp b/appshell/appshell_extensions_gtk.cpp index efe2ee43b..9196915b4 100644 --- a/appshell/appshell_extensions_gtk.cpp +++ b/appshell/appshell_extensions_gtk.cpp @@ -1141,16 +1141,16 @@ int32 SetMenuItemState(CefRefPtr browser, ExtensionString command, b if (checked == true) { newMenuItem = gtk_check_menu_item_new_with_label(label); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(newMenuItem), true); - } else if (checked == false){ + } else { newMenuItem = gtk_menu_item_new_with_label(label); } gtk_widget_destroy(menuItem); InstallMenuHandler(newMenuItem, browser, tag); + model.setOsItem(tag, newMenuItem); - ExtensionString key = model.getKey(tag); - ExtensionString commandId = model.getCommandId(tag); - ParseShortcut(browser, newMenuItem, key, commandId); + ExtensionString key = model.getKey(tag); + ParseShortcut(browser, newMenuItem, key, command); gtk_menu_shell_insert(GTK_MENU_SHELL(parent), newMenuItem, position); gtk_widget_set_sensitive(newMenuItem, enabled); gtk_widget_show(newMenuItem); @@ -1195,13 +1195,15 @@ int32 GetMenuTitle(CefRefPtr browser, ExtensionString commandId, Ext int32 SetMenuItemShortcut(CefRefPtr browser, ExtensionString commandId, ExtensionString shortcut, ExtensionString displayStr) { - NativeMenuModel model = NativeMenuModel::getInstance(getMenuParent(browser)); - int32 tag = model.getTag(commandId); + NativeMenuModel& model = NativeMenuModel::getInstance(getMenuParent(browser)); + int tag = model.getTag(commandId); if (tag == kTagNotFound) { return ERR_NOT_FOUND; } GtkWidget* entry = (GtkWidget*) model.getOsItem(tag); + model.setKey(tag, shortcut); ParseShortcut(browser, entry, shortcut, commandId); + return NO_ERROR; } From b8059ff7c3a71e73c4ae1ec26b5a28497855426a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20A=2E=20Mart=C3=ADnez?= Date: Fri, 13 Apr 2018 16:35:41 +0200 Subject: [PATCH 3/4] Indentation fix. --- appshell/appshell_extensions_gtk.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appshell/appshell_extensions_gtk.cpp b/appshell/appshell_extensions_gtk.cpp index 9196915b4..77bf201fe 100644 --- a/appshell/appshell_extensions_gtk.cpp +++ b/appshell/appshell_extensions_gtk.cpp @@ -1064,7 +1064,7 @@ int32 AddMenuItem(CefRefPtr browser, ExtensionString parentCommand, ExtensionString commandId = model.getCommandId(tag); model.setOsItem(tag, entry); - model.setKey(tag, key); + model.setKey(tag, key); ParseShortcut(browser, entry, key, commandId); GtkWidget* menuHeader = (GtkWidget*) model.getOsItem(parentTag); GtkWidget* menuWidget = gtk_menu_item_get_submenu(GTK_MENU_ITEM(menuHeader)); @@ -1150,7 +1150,7 @@ int32 SetMenuItemState(CefRefPtr browser, ExtensionString command, b model.setOsItem(tag, newMenuItem); ExtensionString key = model.getKey(tag); - ParseShortcut(browser, newMenuItem, key, command); + ParseShortcut(browser, newMenuItem, key, command); gtk_menu_shell_insert(GTK_MENU_SHELL(parent), newMenuItem, position); gtk_widget_set_sensitive(newMenuItem, enabled); gtk_widget_show(newMenuItem); From bcb9ca3652efac510a6aee3c3b878ae27ec51c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20A=2E=20Mart=C3=ADnez?= Date: Fri, 13 Apr 2018 16:45:48 +0200 Subject: [PATCH 4/4] More indentation fixes. --- appshell/native_menu_model.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appshell/native_menu_model.h b/appshell/native_menu_model.h index 51871a3ec..fe3013887 100644 --- a/appshell/native_menu_model.h +++ b/appshell/native_menu_model.h @@ -47,7 +47,7 @@ class NativeMenuItemModel osItem(NULL), commandId(commandId), parentId(parentId), - key(ExtensionString()) + key(ExtensionString()) { } bool checked; @@ -55,7 +55,7 @@ class NativeMenuItemModel void *osItem; ExtensionString commandId; ExtensionString parentId; - ExtensionString key; + ExtensionString key; }; //command name -> menutag @@ -93,7 +93,7 @@ class NativeMenuModel { int setTag(ExtensionString command, ExtensionString parent, int tag); ExtensionString getCommandId(int tag); ExtensionString getParentId(int tag); - ExtensionString getKey(int tag); + ExtensionString getKey(int tag); void setKey(int tag, ExtensionString theKey); void setOsItem (int tag, void* theItem); void* getOsItem (int tag);