History

Attempt to fix DEV-2615 and DEV-2618 with more menu scripting interface guards

Zach Fox committed 7 years ago

Commit 68819ad1 parent de5570c1 file · +100 −19Browse files

Showing the changes to interface/src/scripting/MenuScriptingInterface.cpp (1 of 1 file). Show all

Unified · Split

interface/src/scripting/MenuScriptingInterface.cpp+100−19
@@ -32,106 +32,187 @@ void MenuScriptingInterface::menuItemTriggered() { · 31 unmodified lines
3232 }
3333
3434 void MenuScriptingInterface::addMenu(const QString& menu, const QString& grouping) {
35− QMetaObject::invokeMethod(Menu::getInstance(), "addMenu", Q_ARG(const QString&, menu), Q_ARG(const QString&, grouping));
35+ Menu* menuInstance = Menu::getInstance();
36+ if (!menuInstance) {
37+ return;
38+ }
39+
40+ QMetaObject::invokeMethod(menuInstance, "addMenu", Q_ARG(const QString&, menu), Q_ARG(const QString&, grouping));
3641 }
3742
3843 void MenuScriptingInterface::removeMenu(const QString& menu) {
39− QMetaObject::invokeMethod(Menu::getInstance(), "removeMenu", Q_ARG(const QString&, menu));
44+ Menu* menuInstance = Menu::getInstance();
45+ if (!menuInstance) {
46+ return;
47+ }
48+
49+ QMetaObject::invokeMethod(menuInstance, "removeMenu", Q_ARG(const QString&, menu));
4050 }
4151
4252 bool MenuScriptingInterface::menuExists(const QString& menu) {
53+ Menu* menuInstance = Menu::getInstance();
54+ if (!menuInstance) {
55+ return false;
56+ }
57+
4358 if (QThread::currentThread() == qApp->thread()) {
44− Menu* menuInstance = Menu::getInstance();
4559 return menuInstance && menuInstance->menuExists(menu);
4660 }
61+
4762 bool result { false };
48− BLOCKING_INVOKE_METHOD(Menu::getInstance(), "menuExists",
63+
64+ BLOCKING_INVOKE_METHOD(menuInstance, "menuExists",
4965 Q_RETURN_ARG(bool, result),
5066 Q_ARG(const QString&, menu));
67+
5168 return result;
5269 }
5370
5471 void MenuScriptingInterface::addSeparator(const QString& menuName, const QString& separatorName) {
55− QMetaObject::invokeMethod(Menu::getInstance(), "addSeparator",
72+ Menu* menuInstance = Menu::getInstance();
73+ if (!menuInstance) {
74+ return;
75+ }
76+
77+ QMetaObject::invokeMethod(menuInstance, "addSeparator",
5678 Q_ARG(const QString&, menuName),
5779 Q_ARG(const QString&, separatorName));
5880 }
5981
6082 void MenuScriptingInterface::removeSeparator(const QString& menuName, const QString& separatorName) {
61− QMetaObject::invokeMethod(Menu::getInstance(), "removeSeparator",
83+ Menu* menuInstance = Menu::getInstance();
84+ if (!menuInstance) {
85+ return;
86+ }
87+
88+ QMetaObject::invokeMethod(menuInstance, "removeSeparator",
6289 Q_ARG(const QString&, menuName),
6390 Q_ARG(const QString&, separatorName));
6491 }
6592
6693 void MenuScriptingInterface::addMenuItem(const MenuItemProperties& properties) {
67− QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
94+ Menu* menuInstance = Menu::getInstance();
95+ if (!menuInstance) {
96+ return;
97+ }
98+
99+ QMetaObject::invokeMethod(menuInstance, "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
68100 }
69101
70102 void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem, const QString& shortcutKey) {
103+ Menu* menuInstance = Menu::getInstance();
104+ if (!menuInstance) {
105+ return;
106+ }
107+
71108 MenuItemProperties properties(menu, menuitem, shortcutKey);
72− QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
109+ QMetaObject::invokeMethod(menuInstance, "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
73110 }
74111
75112 void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem) {
113+ Menu* menuInstance = Menu::getInstance();
114+ if (!menuInstance) {
115+ return;
116+ }
117+
76118 MenuItemProperties properties(menu, menuitem);
77− QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
119+ QMetaObject::invokeMethod(menuInstance, "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
78120 }
79121
80122 void MenuScriptingInterface::removeMenuItem(const QString& menu, const QString& menuitem) {
81− QMetaObject::invokeMethod(Menu::getInstance(), "removeMenuItem",
123+ Menu* menuInstance = Menu::getInstance();
124+ if (!menuInstance) {
125+ return;
126+ }
127+ QMetaObject::invokeMethod(menuInstance, "removeMenuItem",
82128 Q_ARG(const QString&, menu),
83129 Q_ARG(const QString&, menuitem));
84130 };
85131
86132 bool MenuScriptingInterface::menuItemExists(const QString& menu, const QString& menuitem) {
133+ Menu* menuInstance = Menu::getInstance();
134+ if (!menuInstance) {
135+ return false;
136+ }
137+
87138 if (QThread::currentThread() == qApp->thread()) {
88− Menu* menuInstance = Menu::getInstance();
89139 return menuInstance && menuInstance->menuItemExists(menu, menuitem);
90140 }
141+
91142 bool result { false };
92− BLOCKING_INVOKE_METHOD(Menu::getInstance(), "menuItemExists",
143+
144+ BLOCKING_INVOKE_METHOD(menuInstance, "menuItemExists",
93145 Q_RETURN_ARG(bool, result),
94146 Q_ARG(const QString&, menu),
95147 Q_ARG(const QString&, menuitem));
148+
96149 return result;
97150 }
98151
99152 bool MenuScriptingInterface::isOptionChecked(const QString& menuOption) {
153+ Menu* menuInstance = Menu::getInstance();
154+ if (!menuInstance) {
155+ return false;
156+ }
157+
100158 if (QThread::currentThread() == qApp->thread()) {
101− Menu* menuInstance = Menu::getInstance();
102159 return menuInstance && menuInstance->isOptionChecked(menuOption);
103160 }
161+
104162 bool result { false };
105− BLOCKING_INVOKE_METHOD(Menu::getInstance(), "isOptionChecked",
163+
164+ BLOCKING_INVOKE_METHOD(menuInstance, "isOptionChecked",
106165 Q_RETURN_ARG(bool, result),
107166 Q_ARG(const QString&, menuOption));
108167 return result;
109168 }
110169
111170 void MenuScriptingInterface::setIsOptionChecked(const QString& menuOption, bool isChecked) {
112− QMetaObject::invokeMethod(Menu::getInstance(), "setIsOptionChecked",
171+ Menu* menuInstance = Menu::getInstance();
172+ if (!menuInstance) {
173+ return;
174+ }
175+
176+ QMetaObject::invokeMethod(menuInstance, "setIsOptionChecked",
113177 Q_ARG(const QString&, menuOption),
114178 Q_ARG(bool, isChecked));
115179 }
116180
117181 bool MenuScriptingInterface::isMenuEnabled(const QString& menuOption) {
182+ Menu* menuInstance = Menu::getInstance();
183+ if (!menuInstance) {
184+ return false;
185+ }
186+
118187 if (QThread::currentThread() == qApp->thread()) {
119− Menu* menuInstance = Menu::getInstance();
120188 return menuInstance && menuInstance->isMenuEnabled(menuOption);
121189 }
190+
122191 bool result { false };
123− BLOCKING_INVOKE_METHOD(Menu::getInstance(), "isMenuEnabled",
192+
193+ BLOCKING_INVOKE_METHOD(menuInstance, "isMenuEnabled",
124194 Q_RETURN_ARG(bool, result),
125195 Q_ARG(const QString&, menuOption));
196+
126197 return result;
127198 }
128199
129200 void MenuScriptingInterface::setMenuEnabled(const QString& menuOption, bool isChecked) {
130− QMetaObject::invokeMethod(Menu::getInstance(), "setMenuEnabled",
201+ Menu* menuInstance = Menu::getInstance();
202+ if (!menuInstance) {
203+ return;
204+ }
205+
206+ QMetaObject::invokeMethod(menuInstance, "setMenuEnabled",
131207 Q_ARG(const QString&, menuOption),
132208 Q_ARG(bool, isChecked));
133209 }
134210
135211 void MenuScriptingInterface::triggerOption(const QString& menuOption) {
136− QMetaObject::invokeMethod(Menu::getInstance(), "triggerOption", Q_ARG(const QString&, menuOption));
212+ Menu* menuInstance = Menu::getInstance();
213+ if (!menuInstance) {
214+ return;
215+ }
216+
217+ QMetaObject::invokeMethod(menuInstance, "triggerOption", Q_ARG(const QString&, menuOption));
137218 }