This should not happen, but when it happens, the resulting crash is
quite cryptic. Make it a bit more obvious.
Change-Id: Icbe40206cfdbae93ccb072d7027fcaf109f2f39f
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This allows to hide setting categories by id.
For example:
HideOptionCategories=C++, Debug, Designer, Kits, BuildAndRun, CPaster, LanguageClient, Version Control
Change-Id: Ifeacbf7885fc2d51ef262fdb8bbbfc81f52bce53
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Since we also license under GPL-3.0 WITH Qt-GPL-exception-1.0,
this applies only to a hypothetical newer version of GPL, that doesn't
exist yet. If such a version emerges, we can still decide to relicense...
While at it, replace (deprecated) GPL-3.0 with more explicit GPL-3.0-only
Change was done by running
find . -type f -exec perl -pi -e "s/LicenseRef-Qt-Commercial OR GPL-3.0\+ OR GPL-3.0 WITH Qt-GPL-exception-1.0/LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0/g" {} \;
Change-Id: I5097e6ce8d10233993ee30d7e25120e2659eb10b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
We've been requiring C++17 since Qt 6.0, and our qAsConst use finally
starts to bother us (QTBUG-99313), so time to port away from it
now.
Since qAsConst has exactly the same semantics as std::as_const (down
to rvalue treatment, constexpr'ness and noexcept'ness), there's really
nothing more to it than a global search-and-replace.
Task-number: QTBUG-99313
Change-Id: I88edd91395849574436299b8badda21bb93bea39
Reviewed-by: hjk <hjk@qt.io>
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
Task-number: QTBUG-67283
Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
readability-make-member-function-const finds lots of member functions
that could be made const. This change just picks getter functions that
really should be const.
readability-convert-member-functions-to-static finds non-static member
functions which do not access this. This change turns most of them
into static ones, but leaves some non static to keep the class API
consistent.
Change-Id: I004d6f7fab4375f9902f940f29b4a4f561fc7604
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Try to not save settings that weren't changed from their default, and
make it possible for defaults to change in the future.
Task-number: QTCREATORBUG-24762
Change-Id: If469b72573791bc92ed535edf00271ef09b55386
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
The coreplugin/id.h header is kept for downstream for now.
Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
QSortFilterProxyModel::filterRegExp is going to go away in Qt6,
so port over to use QRegularExpression instead.
This required some changes where setFilterWildcard/FixedString()
was being used, as those would instantiate QRegExp based filters
in Qt 5, and will use QRegularExpression in Qt 6. Use the generic
setFilterRegularExpression here, to keep things portable between
5 and 6.
Change-Id: I6379be781aa3821b10ba783c088f82c1a0970911
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Do set the global application flag AA_DisableWindowContextHelpButton
to avoid having to unset the default WindowContextHelpButtonHint
in every single dialog.
AA_DisableWindowContextHelpButton was added in Qt 5.10.
Change-Id: I21fe8bc5ddfa4c01ec7a799b04bfb6ff1c9d6d86
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Not all requests are the same, handling code might want to act
differently on different request reasons.
Main driver here is the handling of the debugger/analyzer main window
state savings which depends on actual visibility of certain windows.
Change-Id: I87b2a9149e3d09d27bc14b44aace9f2e0686db04
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
We want it to have a reasonable first-use size, but we can just set that
manually when opening it the first time. Afterwards the geometry is
restored from the settings.
All pages already have a vertical scrollbar available, but that also
forced a relatively large minimum size. Reduce this.
Fix-up of dba102ff61 and
63be3a4024
Fixes: QTCREATORBUG-21678
Change-Id: Iff5810b6ebfe51e3fe4da528bc859598c8df2bb4
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Do not destroy QEventLoop until it's exec() call
is over. Instead only call exit() for all loops
when the settings dialog is closed.
Change-Id: I9598270ee5f4d294ffcad9b45dda4543e15d63f0
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
If the vertical scrollbar is invisible, it reports a width of 100
pixels. Use the width of the size hint, instead.
Task-number: QTCREATORBUG-20353
Change-Id: I3d50041788f12360a98a8f41923c6a38e23a63e3
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
With a custom deleter the event loop is exiting. The erase function is
defining the order of deletion.
Change-Id: I50cb166c4e117cbb779db2d1b992221cd1d8ad60
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Set the minimum size on first start to something reasonable. Currently
the SettingsDialog starts out tiny on Linux and is unusable till
resized for the first time with empty settings.
Change-Id: I1e0f6dc0bc5a41ba53f655f81181fbba84da23df
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Only the getSettingsDialog + exec combination was ever used. Make
that accessible by a free function, move everything else to
settingdialog.cpp.
Take the opportunity for some code cosmetics and remove a few
indirections by using direct members instead of pointers where
appropriate.
Change-Id: I14bc47395a85045ab439d418da0bc459add844bb
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
If the settings dialog contains more than one visible tabbar when
trying to access its tabs Squish fails to distinguish them.
Assign a unique name for the main tabbar of a category inside
the settings dialog.
Change-Id: I349b480871306784b5adc9858984933dc26d7958
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
... by additionally keeping local (currently non-owning) pools per
"interesting" type.
Current situation:
- The global object pool does not scale well for looking up
objects, as iteration plus qobject_cast typically iterates
over all pooled objects.
- User code that can use typed results from the object
pool need to have access to the full type definition anyway,
i.e. depend on the plugin of the target class anyway.
The patch here solves the scaling problem is to have local
type-specific pools to which objects register in their
constructors and deregister in their destructors.
This patch here does *not* change the ownership model of the
pooled objects, however, it opens the possibility to change
the ownership model per type (e.g. by not putting things into
the global pool at all anymore and make the local pool 'owning')
and the intent is to handle that in later patchs.
Even without the follow-up patches this here is a performance
improvement for the cases that access the local pools instead
the global one, i.e. "practically all".
Change-Id: Ib11a42df2c4ecf5e1155534730083a520dd1995b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
If QTC_SCREENSHOTS_PATH points to a writable directory, each widget that
has been registered with ICore's setupScreenShooter(const QString &name,
QWidget *w) will dump a screen shot to this directory as soon as the
widget is shown.
Change-Id: I2dec12064f1bb3c510d2fd9d27c1b79f7b7d5f30
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Q*Application classes have unusually many static functions. In many
cases in our code, these functions are unnecessarily called as instance
functions, using the qApp helper.
This patch replaces many occurencies of qApp with the according
Q*Application classname.
Change-Id: I6099a419fa7bf969891269c37ed7a9e817ef5124
Reviewed-by: hjk <hjk@qt.io>
Improve handling of page sizes, especially of the kits page (with
small and big dialog sizes).
Change-Id: I8dba7b4b5028cb41e0719a2f9aec15eb89858a8a
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
For pages that are not delayed additionally by an OptionsPageProvider,
we can just look for the ID without creating any widgets.
Task-number: QTCREATORBUG-15848
Change-Id: I118aa4713e76c8a43df7abad9f846e68105c659e
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Designer options were always coming last because that uses an options
provider instead of option pages directly.
Change-Id: I2c02ce7d2ff122beb5d563a9c9ac263bdc71f62b
Reviewed-by: hjk <hjk@theqtcompany.com>
Since we are referring to them by ID without specifying the category in
addition.
This requirement was implicitly added by
592ffe7377
Task-number: QTCREATORBUG-14742
Change-Id: I7be539127b76de90c19b0282565d845fa42010ab
Reviewed-by: Robert Loehning <robert.loehning@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
Whenever you remove a plugin with a settings page you will eventually
run into this. We can silently ignore it.
Change-Id: I887d7e7d21e1e2f68375b60456160f9998f9c650
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
PageIds are supposed to be unique, so the CategoryId can be determined
from the PageId. Look for PageIds in the already expanded categories
first before searching through expensive categories.
Change-Id: I006beb0df6183453163ac1810fe59a306a0f52b1
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
The default button would move to the first pushbutton that got focus.
E.g. tabbing through the android settings would move the default button
to the first button that got focus.
The cause of that is that for QPushButton::setDefault to work, the
button needs to be a child of the QDialog. So call it after adding
the buttongroup to the layout.
Change-Id: Ife35bf15aa8585f7931a87ee715f316bb02b36be
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>