Allow the platform to specify a press and hold delay.
Press and hold is an interaction available on many platforms, particularly when touch is involved. In Qt Quick this is exposed to the user via MouseArea::onPressAndHold. This value should not be hard-coded, but rather use a platform-specified default. This commit adds the low-level hooks necessary for that to happen. Task-number: QTBUG-24793 Change-Id: I621a8ac9de66b881e34336228056bffbb6306a70 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
This commit is contained in:
parent
438a52e1a0
commit
16a26931d4
@ -359,6 +359,8 @@ QVariant QPlatformIntegration::styleHint(StyleHint hint) const
|
||||
return true;
|
||||
case SetFocusOnTouchRelease:
|
||||
return QVariant(false);
|
||||
case MousePressAndHoldInterval:
|
||||
return QPlatformTheme::defaultThemeHint(QPlatformTheme::MousePressAndHoldInterval);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -148,7 +148,8 @@ public:
|
||||
SynthesizeMouseFromTouchEvents,
|
||||
PasswordMaskCharacter,
|
||||
SetFocusOnTouchRelease,
|
||||
ShowIsMaximized
|
||||
ShowIsMaximized,
|
||||
MousePressAndHoldInterval
|
||||
};
|
||||
|
||||
virtual QVariant styleHint(StyleHint hint) const;
|
||||
|
@ -79,6 +79,9 @@ QT_BEGIN_NAMESPACE
|
||||
\value MouseDoubleClickInterval (int) Mouse double click interval in ms,
|
||||
overriding QPlatformIntegration::styleHint.
|
||||
|
||||
\value MousePressAndHoldInterval (int) Mouse press and hold interval in ms,
|
||||
overriding QPlatformIntegration::styleHint.
|
||||
|
||||
\value StartDragDistance (int) Start drag distance,
|
||||
overriding QPlatformIntegration::styleHint.
|
||||
|
||||
@ -423,6 +426,8 @@ QVariant QPlatformTheme::themeHint(ThemeHint hint) const
|
||||
return QGuiApplicationPrivate::platformIntegration()->styleHint(QPlatformIntegration::PasswordMaskDelay);
|
||||
case QPlatformTheme::PasswordMaskCharacter:
|
||||
return QGuiApplicationPrivate::platformIntegration()->styleHint(QPlatformIntegration::PasswordMaskCharacter);
|
||||
case QPlatformTheme::MousePressAndHoldInterval:
|
||||
return QGuiApplicationPrivate::platformIntegration()->styleHint(QPlatformIntegration::MousePressAndHoldInterval);
|
||||
default:
|
||||
return QPlatformTheme::defaultThemeHint(hint);
|
||||
}
|
||||
@ -488,6 +493,8 @@ QVariant QPlatformTheme::defaultThemeHint(ThemeHint hint)
|
||||
return QVariant::fromValue(QList<int>());
|
||||
case DialogSnapToDefaultButton:
|
||||
return QVariant(false);
|
||||
case MousePressAndHoldInterval:
|
||||
return QVariant(800);
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
@ -106,7 +106,8 @@ public:
|
||||
TabAllWidgets,
|
||||
IconPixmapSizes,
|
||||
PasswordMaskCharacter,
|
||||
DialogSnapToDefaultButton
|
||||
DialogSnapToDefaultButton,
|
||||
MousePressAndHoldInterval
|
||||
};
|
||||
|
||||
enum DialogType {
|
||||
|
@ -127,6 +127,17 @@ int QStyleHints::mouseDoubleClickInterval() const
|
||||
themeableHint(QPlatformTheme::MouseDoubleClickInterval, QPlatformIntegration::MouseDoubleClickInterval).toInt();
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the time limit in milliseconds that activates
|
||||
a press and hold.
|
||||
|
||||
\since 5.3
|
||||
*/
|
||||
int QStyleHints::mousePressAndHoldInterval() const
|
||||
{
|
||||
return themeableHint(QPlatformTheme::MousePressAndHoldInterval, QPlatformIntegration::MousePressAndHoldInterval).toInt();
|
||||
}
|
||||
|
||||
/*!
|
||||
Sets the \a startDragDistance.
|
||||
\internal
|
||||
|
@ -57,6 +57,7 @@ class Q_GUI_EXPORT QStyleHints : public QObject
|
||||
public:
|
||||
void setMouseDoubleClickInterval(int mouseDoubleClickInterval);
|
||||
int mouseDoubleClickInterval() const;
|
||||
int mousePressAndHoldInterval() const;
|
||||
void setStartDragDistance(int startDragDistance);
|
||||
int startDragDistance() const;
|
||||
void setStartDragTime(int startDragTime);
|
||||
|
@ -180,7 +180,8 @@ int main(int argc, char **argv)
|
||||
<< " startDragVelocity=" << styleHints->startDragVelocity() << " keyboardInputInterval=" << styleHints->keyboardInputInterval()
|
||||
<< " keyboardAutoRepeatRate=" << styleHints->keyboardAutoRepeatRate() << " cursorFlashTime=" << styleHints->cursorFlashTime()
|
||||
<< " showIsFullScreen=" << styleHints->showIsFullScreen() << " passwordMaskDelay=" << styleHints->passwordMaskDelay()
|
||||
<< " fontSmoothingGamma=" << styleHints->fontSmoothingGamma() << " useRtlExtensions=" << styleHints->useRtlExtensions() << '\n';
|
||||
<< " fontSmoothingGamma=" << styleHints->fontSmoothingGamma() << " useRtlExtensions=" << styleHints->useRtlExtensions()
|
||||
<< " mousePressAndHoldInterval=" << styleHints->mousePressAndHoldInterval() << '\n';
|
||||
|
||||
const QPlatformTheme *platformTheme = QGuiApplicationPrivate::platformTheme();
|
||||
std::cout << "\nTheme:\n Styles: " << platformTheme->themeHint(QPlatformTheme::StyleNames).toStringList();
|
||||
|
Loading…
x
Reference in New Issue
Block a user