forked from qt-creator/qt-creator
Squish: Unify hack for invoking context menu items on Mac
Change-Id: I7e4d1cb00ea75e1aa33fa20b30744ffd56f002de Reviewed-by: Robert Loehning <robert.loehning@digia.com>
This commit is contained in:
@@ -301,10 +301,7 @@ def invokeContextMenuOnProject(projectName, menuItem):
|
||||
str(projItem.text).replace("_", "\\_").replace(".", "\\."), 5, 5, 0)
|
||||
# Hack for Squish 5.0.1 handling menus of Qt5.2 on Mac (avoids crash) - remove asap
|
||||
if platform.system() == 'Darwin':
|
||||
for obj in object.topLevelObjects():
|
||||
if (className(obj) == "QMenu" and obj.visible):
|
||||
activateItem(waitForObjectItem(obj, menuItem))
|
||||
break
|
||||
waitFor("macHackActivateContextMenuItem(menuItem)", 6000)
|
||||
else:
|
||||
activateItem(waitForObjectItem("{name='Project.Menu.Project' type='QMenu' visible='1' "
|
||||
"window=':Qt Creator_Core::Internal::MainWindow'}", menuItem))
|
||||
|
@@ -30,6 +30,35 @@
|
||||
import urllib2
|
||||
import re
|
||||
|
||||
############ functions not related to issues tracked inside jira ############
|
||||
|
||||
def __checkWithoutWidget__(*args):
|
||||
return className(args[0]) == 'QMenu' and args[0].visible
|
||||
|
||||
def __checkWithWidget__(*args):
|
||||
return (__checkWithoutWidget__(args[0])
|
||||
and widgetContainsPoint(waitForObject(args[1]), args[0].mapToGlobal(QPoint(0 ,0))))
|
||||
|
||||
# hack for activating context menus on Mac because of Squish5/Qt5.2 problems
|
||||
# param item a string holding the menu item to invoke (just the label)
|
||||
# param widget an object; if provided there will be an additional check if the menu's top left
|
||||
# corner is placed on this widget
|
||||
def macHackActivateContextMenuItem(item, widget=None):
|
||||
if widget:
|
||||
func = __checkWithWidget__
|
||||
else:
|
||||
func = __checkWithoutWidget__
|
||||
for obj in object.topLevelObjects():
|
||||
try:
|
||||
if func(obj, widget):
|
||||
activateItem(waitForObjectItem(obj, item))
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
################ workarounds for issues tracked inside jira #################
|
||||
|
||||
JIRA_URL='https://bugreports.qt-project.org/browse'
|
||||
|
||||
class JIRA:
|
||||
|
@@ -29,16 +29,6 @@
|
||||
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
def macHackActivateContextMenuItem(item):
|
||||
for obj in object.topLevelObjects():
|
||||
try:
|
||||
if className(obj) == 'QMenu' and obj.visible:
|
||||
activateItem(waitForObjectItem(obj, item))
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
def main():
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
if not startedWithoutPluginError():
|
||||
|
@@ -49,11 +49,7 @@ def main():
|
||||
openContextMenu(waitForObject(con[0]), 5, 5, 0)
|
||||
# hack for Squish 5/Qt5.2 problems of handling menus on Mac - remove asap
|
||||
if platform.system() == 'Darwin':
|
||||
for obj in object.topLevelObjects():
|
||||
if (className(obj) == 'QMenu' and obj.visible
|
||||
and widgetContainsPoint(waitForObject(con[0]), obj.mapToGlobal(QPoint(0, 0)))):
|
||||
activateItem(obj, "Go to slot...")
|
||||
break
|
||||
waitFor("macHackActivateContextMenuItem('Go to slot...', con[0])", 6000)
|
||||
else:
|
||||
activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1'}", "Go to slot..."))
|
||||
waitForObjectItem(":Select signal.signalList_QTreeWidget", con[1])
|
||||
|
Reference in New Issue
Block a user