forked from qt-creator/qt-creator
GuiUtils: Apply wheel blocker to more widgets
Attach it to configuration and aspect widgets. Change-Id: Ifd649f6dbf8bbb1ce1cf7251ac46b7cfac9798e3 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
#include "checkablemessagebox.h"
|
||||
#include "environment.h"
|
||||
#include "fancylineedit.h"
|
||||
#include "guiutils.h"
|
||||
#include "iconbutton.h"
|
||||
#include "layoutbuilder.h"
|
||||
#include "passworddialog.h"
|
||||
@@ -23,7 +22,6 @@
|
||||
#include <QAction>
|
||||
#include <QButtonGroup>
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QCompleter>
|
||||
#include <QDebug>
|
||||
#include <QGroupBox>
|
||||
@@ -2343,7 +2341,6 @@ void IntegerAspect::addToLayout(Layouting::LayoutItem &parent)
|
||||
d->m_spinBox->setRange(int(d->m_minimumValue.value() / d->m_displayScaleFactor),
|
||||
int(d->m_maximumValue.value() / d->m_displayScaleFactor));
|
||||
d->m_spinBox->setValue(int(value() / d->m_displayScaleFactor)); // Must happen after setRange()
|
||||
setWheelScrollingWithoutFocusBlocked(d->m_spinBox);
|
||||
addLabeledItem(parent, d->m_spinBox);
|
||||
connect(d->m_spinBox.data(), &QSpinBox::valueChanged,
|
||||
this, &IntegerAspect::handleGuiChanged);
|
||||
@@ -2443,7 +2440,6 @@ void DoubleAspect::addToLayout(LayoutItem &builder)
|
||||
d->m_spinBox->setSpecialValueText(d->m_specialValueText);
|
||||
if (d->m_maximumValue && d->m_maximumValue)
|
||||
d->m_spinBox->setRange(d->m_minimumValue.value(), d->m_maximumValue.value());
|
||||
setWheelScrollingWithoutFocusBlocked(d->m_spinBox);
|
||||
bufferToGui(); // Must happen after setRange()!
|
||||
addLabeledItem(builder, d->m_spinBox);
|
||||
connect(d->m_spinBox.data(), &QDoubleSpinBox::valueChanged,
|
||||
@@ -3528,6 +3524,7 @@ void StringSelectionAspect::addToLayout(Layouting::LayoutItem &parent)
|
||||
comboBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
|
||||
comboBox->setModel(m_model);
|
||||
setWheelScrollingWithoutFocusBlocked(comboBox);
|
||||
|
||||
connect(m_selectionModel,
|
||||
&QItemSelectionModel::currentChanged,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "filepath.h"
|
||||
#include "guiutils.h"
|
||||
#include "id.h"
|
||||
#include "infolabel.h"
|
||||
#include "macroexpander.h"
|
||||
@@ -15,6 +16,8 @@
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
|
||||
#include <QAbstractSpinBox>
|
||||
#include <QComboBox>
|
||||
#include <QUndoCommand>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
@@ -245,6 +248,10 @@ protected:
|
||||
Widget *createSubWidget(Args && ...args) {
|
||||
auto w = new Widget(args...);
|
||||
registerSubWidget(w);
|
||||
if constexpr (std::is_base_of_v<QComboBox, Widget>
|
||||
|| std::is_base_of_v<QAbstractSpinBox, Widget>) {
|
||||
setWheelScrollingWithoutFocusBlocked(w);
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@ public:
|
||||
void QTCREATOR_UTILS_EXPORT setWheelScrollingWithoutFocusBlocked(QWidget *widget)
|
||||
{
|
||||
static Internal::WheelEventFilter instance;
|
||||
// Installing duplicated event filter for the same objects just brings the event filter
|
||||
// to the front and is otherwise no-op (the second event filter isn't installed).
|
||||
widget->installEventFilter(&instance);
|
||||
if (widget->focusPolicy() == Qt::WheelFocus)
|
||||
widget->setFocusPolicy(Qt::StrongFocus);
|
||||
|
||||
@@ -10,13 +10,16 @@
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/fancylineedit.h>
|
||||
#include <utils/guiutils.h>
|
||||
#include <utils/hostosinfo.h>
|
||||
#include <utils/icon.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/stylehelper.h>
|
||||
|
||||
#include <QAbstractSpinBox>
|
||||
#include <QApplication>
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QDialog>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QEventLoop>
|
||||
@@ -337,6 +340,14 @@ public:
|
||||
|
||||
// ----------- SmartScrollArea
|
||||
|
||||
template <typename T>
|
||||
void setWheelScrollingWithoutFocusBlockedForChildren(QWidget *widget)
|
||||
{
|
||||
const auto children = widget->findChildren<T>();
|
||||
for (auto child : children)
|
||||
setWheelScrollingWithoutFocusBlocked(child);
|
||||
}
|
||||
|
||||
class SmartScrollArea : public QScrollArea
|
||||
{
|
||||
public:
|
||||
@@ -353,6 +364,8 @@ private:
|
||||
{
|
||||
if (!widget()) {
|
||||
if (QWidget *inner = m_page->widget()) {
|
||||
setWheelScrollingWithoutFocusBlockedForChildren<QComboBox *>(inner);
|
||||
setWheelScrollingWithoutFocusBlockedForChildren<QAbstractSpinBox *>(inner);
|
||||
setWidget(inner);
|
||||
inner->setAutoFillBackground(false);
|
||||
} else {
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/guiutils.h>
|
||||
#include <utils/layoutbuilder.h>
|
||||
|
||||
#include <QCheckBox>
|
||||
@@ -106,7 +105,6 @@ GeneralSettingsPageWidget::GeneralSettingsPageWidget()
|
||||
zoomSpinBox->setSingleStep(10);
|
||||
zoomSpinBox->setValue(100);
|
||||
zoomSpinBox->setSuffix(Tr::tr("%"));
|
||||
setWheelScrollingWithoutFocusBlocked(zoomSpinBox);
|
||||
antialiasCheckBox = new QCheckBox(Tr::tr("Antialias"));
|
||||
|
||||
auto fontGroupBox = new QGroupBox(Tr::tr("Font"));
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <projectexplorer/project.h>
|
||||
|
||||
#include <utils/environment.h>
|
||||
#include <utils/guiutils.h>
|
||||
#include <utils/layoutbuilder.h>
|
||||
#include <utils/pathchooser.h>
|
||||
|
||||
@@ -122,6 +123,7 @@ void CommandBuilderAspect::addToLayout(Layouting::LayoutItem &parent)
|
||||
d->m_activeCommandBuilder = d->m_commandBuilders[idx];
|
||||
updateGui();
|
||||
});
|
||||
setWheelScrollingWithoutFocusBlocked(d->commandBuilder);
|
||||
}
|
||||
|
||||
if (!d->makePathChooser) {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <coreplugin/session.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/guiutils.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/stringutils.h>
|
||||
#include <utils/stylehelper.h>
|
||||
@@ -66,6 +67,7 @@ BuildSettingsWidget::BuildSettingsWidget(Target *target) :
|
||||
m_buildConfigurationComboBox = new QComboBox(this);
|
||||
m_buildConfigurationComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
m_buildConfigurationComboBox->setModel(m_target->buildConfigurationModel());
|
||||
setWheelScrollingWithoutFocusBlocked(m_buildConfigurationComboBox);
|
||||
hbox->addWidget(m_buildConfigurationComboBox);
|
||||
|
||||
m_addButton = new QPushButton(this);
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <utils/environment.h>
|
||||
#include <utils/environmentdialog.h>
|
||||
#include <utils/guard.h>
|
||||
#include <utils/guiutils.h>
|
||||
#include <utils/layoutbuilder.h>
|
||||
#include <utils/macroexpander.h>
|
||||
#include <utils/pathchooser.h>
|
||||
@@ -215,6 +216,7 @@ public:
|
||||
auto cb = new QComboBox;
|
||||
cb->setSizePolicy(QSizePolicy::Ignored, cb->sizePolicy().verticalPolicy());
|
||||
cb->setToolTip(factory->description());
|
||||
setWheelScrollingWithoutFocusBlocked(cb);
|
||||
|
||||
m_languageComboboxMap.insert(l, cb);
|
||||
layout->addWidget(cb, row, 1);
|
||||
@@ -247,6 +249,7 @@ private:
|
||||
IDeviceConstPtr device = BuildDeviceKitAspect::device(kit());
|
||||
|
||||
const GuardLocker locker(m_ignoreChanges);
|
||||
// TODO: Get rid of keys, iterate directly on hash.
|
||||
const QList<Id> keys = m_languageComboboxMap.keys();
|
||||
for (const Id l : keys) {
|
||||
const Toolchains ltcList = ToolchainManager::toolchains(equal(&Toolchain::language, l));
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <coreplugin/session.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/guiutils.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/stringutils.h>
|
||||
#include <utils/stylehelper.h>
|
||||
@@ -41,6 +42,7 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
|
||||
Q_ASSERT(m_target);
|
||||
|
||||
m_deployConfigurationCombo = new QComboBox(this);
|
||||
Utils::setWheelScrollingWithoutFocusBlocked(m_deployConfigurationCombo);
|
||||
m_addDeployToolButton = new QPushButton(Tr::tr("Add"), this);
|
||||
m_removeDeployToolButton = new QPushButton(Tr::tr("Remove"), this);
|
||||
m_renameDeployButton = new QPushButton(Tr::tr("Rename..."), this);
|
||||
@@ -50,6 +52,7 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
|
||||
m_runConfigurationCombo = new QComboBox(this);
|
||||
m_runConfigurationCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
m_runConfigurationCombo->setMinimumContentsLength(15);
|
||||
Utils::setWheelScrollingWithoutFocusBlocked(m_runConfigurationCombo);
|
||||
|
||||
m_addRunToolButton = new QPushButton(Tr::tr("Add..."), this);
|
||||
m_removeRunToolButton = new QPushButton(Tr::tr("Remove"), this);
|
||||
|
||||
Reference in New Issue
Block a user