From a3657f913bc0027b738f68446c959a391f623008 Mon Sep 17 00:00:00 2001
From: Itay Cohen <itaycohen23@gmail.com>
Date: Wed, 12 Jun 2019 10:08:15 +0300
Subject: [PATCH] Combine Set-As  menu items (#1601)

---
 src/menus/DisassemblyContextMenu.cpp | 30 ++++++++++++++++++----------
 src/menus/DisassemblyContextMenu.h   |  2 ++
 2 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/src/menus/DisassemblyContextMenu.cpp b/src/menus/DisassemblyContextMenu.cpp
index 168a8d18..b1770351 100644
--- a/src/menus/DisassemblyContextMenu.cpp
+++ b/src/menus/DisassemblyContextMenu.cpp
@@ -64,7 +64,7 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent)
                SLOT(on_actionDeleteFunction_triggered()));
     addAction(&actionDeleteFunction);
 
-    initAction(&actionAnalyzeFunction, tr("Define function here..."),
+    initAction(&actionAnalyzeFunction, tr("Define function here"),
                SLOT(on_actionAnalyzeFunction_triggered()));
     addAction(&actionAnalyzeFunction);
 
@@ -82,15 +82,7 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent)
                SLOT(on_actionLinkType_triggered()), getLinkTypeSequence());
     addAction(&actionLinkType);
 
-    initAction(&actionSetToCode, tr("Set as Code"),
-               SLOT(on_actionSetToCode_triggered()), getSetToCodeSequence());
-    addAction(&actionSetToCode);
-
-    initAction(&actionSetAsString, tr("Set as String"),
-               SLOT(on_actionSetAsString_triggered()), getSetAsStringSequence());
-    addAction(&actionSetAsString);
-
-    addSetToDataMenu();
+    addSetAsMenu();
 
     addSeparator();
 
@@ -174,9 +166,25 @@ void DisassemblyContextMenu::addSetBitsMenu()
     connect(&actionSetBits64, &QAction::triggered, this, [this] { setBits(64); });
 }
 
+
+void DisassemblyContextMenu::addSetAsMenu()
+{
+    setAsMenu = addMenu(tr("Set as..."));
+
+    initAction(&actionSetToCode, tr("Code"),
+               SLOT(on_actionSetToCode_triggered()), getSetToCodeSequence());
+    setAsMenu->addAction(&actionSetToCode);
+
+    initAction(&actionSetAsString, tr("String"),
+               SLOT(on_actionSetAsString_triggered()), getSetAsStringSequence());
+    setAsMenu->addAction(&actionSetAsString);
+
+    addSetToDataMenu();
+}
+
 void DisassemblyContextMenu::addSetToDataMenu()
 {
-    setToDataMenu = addMenu(tr("Set to Data..."));
+    setToDataMenu = setAsMenu->addMenu(tr("Data..."));
 
     initAction(&actionSetToDataByte, tr("Byte"));
     setToDataMenu->addAction(&actionSetToDataByte);
diff --git a/src/menus/DisassemblyContextMenu.h b/src/menus/DisassemblyContextMenu.h
index 5adba487..08ae9cf5 100644
--- a/src/menus/DisassemblyContextMenu.h
+++ b/src/menus/DisassemblyContextMenu.h
@@ -157,6 +157,7 @@ private:
     QAction actionSetAsString;
 
     QMenu *setToDataMenu;
+    QMenu *setAsMenu;
     QAction actionSetToDataEx;
     QAction actionSetToDataByte;
     QAction actionSetToDataWord;
@@ -176,6 +177,7 @@ private:
 
     void addSetBaseMenu();
     void addSetBitsMenu();
+    void addSetAsMenu();
     void addSetToDataMenu();
     void addEditMenu();
     void addDebugMenu();