From 2551a20b3c653e7d39c95ac063f1be216f8304eb Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 25 Sep 2019 08:15:52 +0200 Subject: [PATCH 1/8] Add changes file for 4.10.1 Change-Id: I61cbaf241834c9e023c578e4ddb3dd46006ae4d1 Reviewed-by: Leena Miettinen --- dist/changes-4.10.1.md | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 dist/changes-4.10.1.md diff --git a/dist/changes-4.10.1.md b/dist/changes-4.10.1.md new file mode 100644 index 00000000000..6e5d0db956d --- /dev/null +++ b/dist/changes-4.10.1.md @@ -0,0 +1,57 @@ +# Qt Creator 4.10.1 + +Qt Creator version 4.10.1 contains bug fixes. + +The most important changes are listed in this document. For a complete +list of changes, see the Git log for the Qt Creator sources that +you can check out from the public Git repository. For example: + + git clone git://code.qt.io/qt-creator/qt-creator.git + git log --cherry-pick --pretty=oneline origin/v4.10.0..v4.10.1 + +## Editing + +* Fixed file saving with some text encodings +* Fixed `Preserve case` in advanced search and replace (QTCREATORBUG-19696) +* Fixed crash when changing editor font (QTCREATORBUG-22933) + +## Help + +* Fixed that text moved around when resizing and zooming (QTCREATORBUG-4756) + +## Debugging + +* Fixed more layout restoration issues (QTCREATORBUG-22286, QTCREATORBUG-22938) + +### LLDB + +* Fixed wrong empty command line argument when debugging (QTCREATORBUG-22975) + +## Qt Quick Designer + +* Removed transformations from list of unsupported types +* Fixed update of animation curve editor + +## Platform Specific + +### macOS + +* Fixed window stacking order after closing file dialog (QTCREATORBUG-22906) + +## Credits for these changes go to: + +Aleksei German +Alexander Akulich +Andre Hartmann +André Pönitz +Christian Stenger +David Schulz +Eike Ziller +Knud Dollereder +Leena Miettinen +Lisandro Damián Nicanor Pérez Meyer +Nikolai Kosjar +Orgad Shaneh +Richard Weickelt +Thomas Hartmann + From ca1cee0956a4b987e764982c4b82f9f722915872 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 24 Sep 2019 17:29:51 +0200 Subject: [PATCH 2/8] Wizards: Fix JSON file template for Qt Creator plugin As of commit aaa8beab88, template files for XML wizards go through Utils::TemplateEngine::processText and thus need to have their backlashes escaped. Fixes: QTCREATORBUG-22945 Change-Id: I33aaa73b66be065f0ba3ed9b45cb8c9558f70d31 Reviewed-by: Eike Ziller --- .../wizards/qtcreatorplugin/MyPlugin.json.in | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in b/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in index 910746c9fb9..68bedd40704 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in @@ -1,11 +1,11 @@ { - \"Name\" : \"%PluginName%\", - \"Version\" : \"0.0.1\", - \"CompatVersion\" : \"0.0.1\", - \"Vendor\" : \"%VendorName%\", - \"Copyright\" : \"%Copyright%\", - \"License\" : \"%License%\", - \"Description\" : \"%Description%\", - \"Url\" : \"%URL%\", + \\"Name\\" : \\"%PluginName%\\", + \\"Version\\" : \\"0.0.1\\", + \\"CompatVersion\\" : \\"0.0.1\\", + \\"Vendor\\" : \\"%VendorName%\\", + \\"Copyright\\" : \\"%Copyright%\\", + \\"License\\" : \\"%License%\\", + \\"Description\\" : \\"%Description%\\", + \\"Url\\" : \\"%URL%\\", $$dependencyList } From 9a5826d19cab36caabd6c5ad72f5cf1bcdc06ece Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 25 Sep 2019 13:15:26 +0200 Subject: [PATCH 3/8] Debugger: Fix debugging with LLDB 1100.x Tweak handling for LLDB provided by Xcode 11 slightly, as the state handling of the process went astray when using the debugger Python 3 based. Task-number: QTCREATORBUG-22955 Change-Id: Ie070049d210a570993507ed940d141237aab89ce Reviewed-by: hjk Reviewed-by: Eike Ziller --- share/qtcreator/debugger/lldbbridge.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 27d33e3046d..0150a38c8e9 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -83,6 +83,7 @@ class Dumper(DumperBase): # 'communication', 'unwind', 'commands']) #self.debugger.EnableLog('lldb', ['all']) self.debugger.Initialize() + self.debugger.SetAsync(True) self.debugger.HandleCommand('settings set auto-confirm on') # FIXME: warn('DISABLING DEFAULT FORMATTERS') @@ -863,10 +864,7 @@ class Dumper(DumperBase): pass else: if self.useTerminal_: - self.ignoreStops = 2 - else: - if self.useTerminal_: - self.ignoreStops = 1 + self.ignoreStops = 1 if self.platform_: self.debugger.SetCurrentPlatform(self.platform_) @@ -895,7 +893,6 @@ class Dumper(DumperBase): def prepare(self, args): error = lldb.SBError() - listener = self.debugger.GetListener() if self.attachPid_ > 0: attachInfo = lldb.SBAttachInfo(self.attachPid_) @@ -948,18 +945,23 @@ class Dumper(DumperBase): if self.target is not None: broadcaster = self.target.GetBroadcaster() listener = self.debugger.GetListener() + broadcaster.AddListener(listener, lldb.SBProcess.eBroadcastBitStateChanged) + listener.StartListeningForEvents(broadcaster, lldb.SBProcess.eBroadcastBitStateChanged) broadcaster.AddListener(listener, lldb.SBTarget.eBroadcastBitBreakpointChanged) listener.StartListeningForEvents(broadcaster, lldb.SBTarget.eBroadcastBitBreakpointChanged) def loop(self): event = lldb.SBEvent() + broadcaster = self.target.GetBroadcaster() listener = self.debugger.GetListener() while True: - if listener.WaitForEvent(10000000, event): + sys.stdout.flush() # IMPORTANT! to receive process state changes with lldb 1100 + while listener.GetNextEvent(event): self.handleEvent(event) - else: - warn('TIMEOUT') + if listener.WaitForEventForBroadcaster(0, broadcaster, event): + self.handleEvent(event) + def describeError(self, error): desc = lldb.SBStream() @@ -1301,6 +1303,10 @@ class Dumper(DumperBase): if lldb.SBBreakpoint.EventIsBreakpointEvent(event): self.handleBreakpointEvent(event) return + if not lldb.SBProcess.EventIsProcessEvent(event): + warn("UNEXPECTED event (%s)" % event.GetType()) + return + out = lldb.SBStream() event.GetDescription(out) #warn("EVENT: %s" % event) From 4013f0cdf0cbb7e21604c15ffde9bbc4835c075e Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 16 Sep 2019 14:01:48 +0200 Subject: [PATCH 4/8] Debugger: Use Python 3 prints also in pure LLDB bridge code Task-number: QTCREATORBUG-22955 Change-Id: I762acd289c50fe5817b3e6e915f35c2388c74d44 Reviewed-by: Christian Stenger (cherry picked from commit 7f29fa2030d62c6110f3869332e62672759b58e2) Reviewed-by: Eike Ziller --- share/qtcreator/debugger/lldbbridge.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 0150a38c8e9..09bbc3a276c 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -1916,7 +1916,7 @@ class LogMixin: localz = frame.f_locals instance = str(localz["self"]) + "." if 'self' in localz else '' message = "%s%s(%s)%s" % (instance, fn, args, message) - print message + print(message) @staticmethod def log_fn(arg_str = ''): @@ -1951,7 +1951,7 @@ class SummaryDumper(Dumper, LogMixin): @staticmethod def warn(message): - print "Qt summary warning: %s" % message + print("Qt summary warning: %s" % message) @staticmethod def showException(message, exType, exValue, exTraceback): @@ -1985,9 +1985,9 @@ class SummaryDumper(Dumper, LogMixin): try: from pygdbmi import gdbmiparser except ImportError: - print "Qt summary provider requires the pygdbmi module, " \ - "please install using 'sudo /usr/bin/easy_install pygdbmi', " \ - "and then restart Xcode." + print("Qt summary provider requires the pygdbmi module, " + "please install using 'sudo /usr/bin/easy_install pygdbmi', " + "and then restart Xcode.") lldb.debugger.HandleCommand('type category delete Qt') return None From ae9925cdc152ac294787dfaa8bbc18c38464c154 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 25 Sep 2019 14:57:15 +0200 Subject: [PATCH 5/8] Debugger: Mark docks as default-visible when resetting a perspective Change-Id: I562a71de04335e8b4d34f90e7df3127fbb01ac5b Reviewed-by: Christian Stenger --- src/plugins/debugger/debuggermainwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index ee6ccae2383..e13d18e87f3 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -555,6 +555,7 @@ void PerspectivePrivate::resetPerspective() } else { op.setupLayout(); op.dock->setVisible(op.visibleByDefault); + theMainWindow->d->m_persistentChangedDocks.remove(op.name()); qCDebug(perspectivesLog) << "SETTING " << op.name() << " TO ACTIVE: " << op.visibleByDefault; } From 08149a7c348a3947352b92e0d5b6c44c0a2453e8 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 25 Sep 2019 12:51:41 +0200 Subject: [PATCH 6/8] Debugger: Improve assignment to simple expressions with LLDB Task-number: QTCREATORBUG-22696 Change-Id: Ifa084046ff83ba071c9e96a4221d7b4a09bfc22f Reviewed-by: Christian Stenger --- share/qtcreator/debugger/lldbbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 09bbc3a276c..689753a8003 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -1799,7 +1799,7 @@ class Dumper(DumperBase): expr = self.parseAndEvaluate(expr) self.qqEditable[typeName](self, expr, value) else: - lhs.SetValueFromCString(value, error) + self.parseAndEvaluate(expr + '=' + value) self.reportResult(self.describeError(error), args) def watchPoint(self, args): From 4323da700ad31f11031d56969358e0dde9357f04 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 26 Sep 2019 11:32:20 +0200 Subject: [PATCH 7/8] Debugger: Try harder to restore dock widget sizes This is bit of a hack: The dock widget sizes were actually restored but when previously non-existing docks were affected, a re-layout was triggered, resulting in different sizes. This can be avoided by instantiating all dock first. Fixes: QTCREATORBUG-22415 Change-Id: I4c0b27f5bab5864e93e303db758d8b909a51a425 Reviewed-by: Eike Ziller Reviewed-by: Christian Stenger --- src/plugins/debugger/debuggermainwindow.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index e13d18e87f3..70641b4a375 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -940,12 +940,10 @@ void PerspectivePrivate::restoreLayout() qCDebug(perspectivesLog) << "PERSPECTIVE STATE AVAILABLE BY FULL ID."; } - if (state.isEmpty()) { - qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORE NOT POSSIBLE, NO STORED STATE"; - } else { - bool result = theMainWindow->restoreState(state); - qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORED. SUCCESS: " << result; - } + // The order is important here: While QMainWindow can restore layouts with + // not-existing docks (some placeholders are used internally), later + // replacements with restoreDockWidget(dock) trigger a re-layout, resulting + // in different sizes. So make sure all docks exist first before restoring state. qCDebug(perspectivesLog) << "PERSPECTIVE" << m_id << "RESTORING LAYOUT FROM " << settingsId(); for (DockOperation &op : m_dockOperations) { @@ -958,6 +956,13 @@ void PerspectivePrivate::restoreLayout() << (active == op.visibleByDefault ? "DEFAULT USER" : "*** NON-DEFAULT USER"); } } + + if (state.isEmpty()) { + qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORE NOT POSSIBLE, NO STORED STATE"; + } else { + bool result = theMainWindow->restoreState(state); + qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORED, SUCCESS: " << result; + } } void PerspectivePrivate::saveLayout() From 2a980057794e4439bf03aff033db33705f1e88af Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 26 Sep 2019 14:39:38 +0200 Subject: [PATCH 8/8] Update qbs submodule To HEAD of 1.14 branch. Change-Id: I2549c89428490c2588f06003496296c54c6ededf Reviewed-by: Joerg Bornemann --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index 8c290c624d3..94fe404a5a6 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 8c290c624d343406442b87121ccb2e4eab0e6e51 +Subproject commit 94fe404a5a6d7cf91926bcfbd026953994b25815