mirror of
https://github.com/aseprite/aseprite.git
synced 2025-04-07 10:21:30 +00:00
[osx] Fix shortcuts for Edit actions when a native file dialog is displayed
Fixes #2719, related to #3615
This commit is contained in:
parent
c68fcb7da5
commit
c25649d865
@ -697,7 +697,7 @@
|
|||||||
<separator group="file_app" />
|
<separator group="file_app" />
|
||||||
<item command="Exit" text="@.file_exit" />
|
<item command="Exit" text="@.file_exit" />
|
||||||
</menu>
|
</menu>
|
||||||
<menu text="@.edit" id="edit_menu">
|
<menu text="@.edit" id="edit_menu" standard="edit">
|
||||||
<item command="Undo" text="@.edit_undo" />
|
<item command="Undo" text="@.edit_undo" />
|
||||||
<item command="Redo" text="@.edit_redo" />
|
<item command="Redo" text="@.edit_redo" />
|
||||||
<item command="UndoHistory" text="@.edit_undo_history" group="edit_undo" />
|
<item command="UndoHistory" text="@.edit_undo_history" group="edit_undo" />
|
||||||
|
2
laf
2
laf
@ -1 +1 @@
|
|||||||
Subproject commit 1b057f8f19be19ffc5aaa87d32312d3c0bcba86e
|
Subproject commit 63aa609864108d12dad979a2701c19bee58d4283
|
@ -696,6 +696,7 @@ Widget* AppMenus::convertXmlelemToMenuitem(TiXmlElement* elem)
|
|||||||
{
|
{
|
||||||
const char* id = elem->Attribute("id");
|
const char* id = elem->Attribute("id");
|
||||||
const char* group = elem->Attribute("group");
|
const char* group = elem->Attribute("group");
|
||||||
|
const char* standard = elem->Attribute("standard");
|
||||||
|
|
||||||
// is it a <separator>?
|
// is it a <separator>?
|
||||||
if (strcmp(elem->Value(), "separator") == 0) {
|
if (strcmp(elem->Value(), "separator") == 0) {
|
||||||
@ -745,6 +746,9 @@ Widget* AppMenus::convertXmlelemToMenuitem(TiXmlElement* elem)
|
|||||||
if (group)
|
if (group)
|
||||||
m_groups[group].end = menuitem;
|
m_groups[group].end = menuitem;
|
||||||
|
|
||||||
|
if (standard && strcmp(standard, "edit") == 0)
|
||||||
|
menuitem->setStandardEditMenu();
|
||||||
|
|
||||||
// Has it a ID?
|
// Has it a ID?
|
||||||
if (id) {
|
if (id) {
|
||||||
if (std::strcmp(id, "help_menu") == 0) {
|
if (std::strcmp(id, "help_menu") == 0) {
|
||||||
@ -985,6 +989,10 @@ void AppMenus::createNativeSubmenus(os::Menu* osMenu,
|
|||||||
if (appMenuItem) {
|
if (appMenuItem) {
|
||||||
native.menuItem = osItem;
|
native.menuItem = osItem;
|
||||||
appMenuItem->setNative(native);
|
appMenuItem->setNative(native);
|
||||||
|
|
||||||
|
// Set this menu item as the standard "Edit" item for macOS
|
||||||
|
if (appMenuItem->isStandardEditMenu())
|
||||||
|
osItem->setAsStandardEditMenuItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (child->type() == ui::kMenuItemWidget &&
|
if (child->type() == ui::kMenuItemWidget &&
|
||||||
|
@ -42,7 +42,6 @@ AppMenuItem::AppMenuItem(const std::string& text,
|
|||||||
, m_key(nullptr)
|
, m_key(nullptr)
|
||||||
, m_commandId(commandId)
|
, m_commandId(commandId)
|
||||||
, m_params(params)
|
, m_params(params)
|
||||||
, m_isRecentFileItem(false)
|
|
||||||
, m_native(nullptr)
|
, m_native(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,13 @@ namespace app {
|
|||||||
void disposeNative();
|
void disposeNative();
|
||||||
void syncNativeMenuItemKeyShortcut();
|
void syncNativeMenuItemKeyShortcut();
|
||||||
|
|
||||||
|
// Indicates if this is the standard "Edit" menu, used for macOS
|
||||||
|
// which requires a standard "Edit" menu when the native file
|
||||||
|
// dialog is displayed, so Command+C/X/V/A, etc. shortcuts start
|
||||||
|
// working as expected.
|
||||||
|
bool isStandardEditMenu() const { return m_isStandardEditMenu; }
|
||||||
|
void setStandardEditMenu() { m_isStandardEditMenu = true; }
|
||||||
|
|
||||||
static void setContextParams(const Params& params);
|
static void setContextParams(const Params& params);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -64,7 +71,8 @@ namespace app {
|
|||||||
KeyPtr m_key;
|
KeyPtr m_key;
|
||||||
std::string m_commandId;
|
std::string m_commandId;
|
||||||
Params m_params;
|
Params m_params;
|
||||||
bool m_isRecentFileItem;
|
bool m_isRecentFileItem = false;
|
||||||
|
bool m_isStandardEditMenu = false;
|
||||||
std::unique_ptr<Native> m_native;
|
std::unique_ptr<Native> m_native;
|
||||||
|
|
||||||
static Params s_contextParams;
|
static Params s_contextParams;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user