Merge branch 'master' of https://github.com/uwerat/qskinny
This commit is contained in:
commit
b53eaaaa95
@ -35,6 +35,7 @@ class QskShortcutHandler final : public QObject
|
||||
void setAutoRepeat( int id, bool repeat );
|
||||
|
||||
bool eventFilter( QObject*, QEvent* ) override;
|
||||
bool invoke( QQuickItem*, const QKeySequence& );
|
||||
|
||||
private:
|
||||
void cleanUp( QObject* );
|
||||
@ -48,6 +49,16 @@ class QskShortcutHandler final : public QObject
|
||||
{
|
||||
}
|
||||
|
||||
void invoke() const
|
||||
{
|
||||
auto that = const_cast< InvokeData* >( this );
|
||||
auto object = const_cast< QObject* >( receiver );
|
||||
|
||||
void* args[] = { nullptr };
|
||||
that->invokable.invoke( object, args, Qt::AutoConnection );
|
||||
}
|
||||
|
||||
QKeySequence sequence;
|
||||
QQuickItem* item;
|
||||
const QObject* receiver;
|
||||
QskMetaInvokable invokable;
|
||||
@ -132,6 +143,7 @@ int QskShortcutHandler::insert(
|
||||
|
||||
auto& data = m_invokeDataMap[ id ];
|
||||
|
||||
data.sequence = sequence;
|
||||
data.item = item;
|
||||
data.receiver = receiver;
|
||||
data.invokable = invokable;
|
||||
@ -240,10 +252,7 @@ bool QskShortcutHandler::eventFilter( QObject* object, QEvent* event )
|
||||
|
||||
Q_ASSERT( data.item == nullptr || data.item == object );
|
||||
|
||||
auto receiver = const_cast< QObject* >( data.receiver );
|
||||
void* args[] = { nullptr };
|
||||
|
||||
data.invokable.invoke( receiver, args, Qt::AutoConnection );
|
||||
data.invoke( );
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -252,6 +261,24 @@ bool QskShortcutHandler::eventFilter( QObject* object, QEvent* event )
|
||||
return false;
|
||||
}
|
||||
|
||||
bool QskShortcutHandler::invoke( QQuickItem* item, const QKeySequence& sequence )
|
||||
{
|
||||
bool found = false;
|
||||
|
||||
for ( const auto& entry : qskAsConst( m_invokeDataMap ) )
|
||||
{
|
||||
auto& data = entry.second;
|
||||
|
||||
if ( ( data.item == item ) && ( data.sequence == sequence ) )
|
||||
{
|
||||
data.invoke();
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
int QskShortcutMap::addMethod( QQuickItem* item, const QKeySequence& sequence,
|
||||
bool autoRepeat, const QObject* receiver, const char* method )
|
||||
{
|
||||
@ -279,6 +306,23 @@ int QskShortcutMap::addFunction( QQuickItem* item, const QKeySequence& sequence,
|
||||
item, sequence, autoRepeat, receiver, function );
|
||||
}
|
||||
|
||||
bool QskShortcutMap::invokeCallback( const QKeySequence& sequence )
|
||||
{
|
||||
QQuickItem* item = nullptr;
|
||||
return qskShortcutHandler->invoke( item, sequence );
|
||||
}
|
||||
|
||||
bool QskShortcutMap::invokeCallback( QQuickWindow* window, const QKeySequence& sequence )
|
||||
{
|
||||
auto item = window ? window->contentItem() : nullptr;
|
||||
return qskShortcutHandler->invoke( item, sequence );
|
||||
}
|
||||
|
||||
bool QskShortcutMap::invokeCallback( QQuickItem* item, const QKeySequence& sequence )
|
||||
{
|
||||
return qskShortcutHandler->invoke( item, sequence );
|
||||
}
|
||||
|
||||
void QskShortcutMap::setAutoRepeat( int id, bool on )
|
||||
{
|
||||
qskShortcutHandler->setAutoRepeat( id, on );
|
||||
|
@ -64,6 +64,10 @@ class QSK_EXPORT QskShortcutMap
|
||||
static int addShortcut( QQuickWindow*, const QKeySequence&, bool autoRepeat,
|
||||
const typename QtPrivate::FunctionPointer< T >::Object* receiver, T function );
|
||||
|
||||
// calling the registered callbacks manually
|
||||
static bool invokeCallback( const QKeySequence& );
|
||||
static bool invokeCallback( QQuickWindow*, const QKeySequence& );
|
||||
static bool invokeCallback( QQuickItem*, const QKeySequence& );
|
||||
|
||||
static bool contextMatcher( const QQuickItem*, Qt::ShortcutContext );
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "QskAnimationHint.h"
|
||||
#include "QskAspect.h"
|
||||
#include "QskIntervalF.h"
|
||||
#include "QskEvent.h"
|
||||
|
||||
QSK_SUBCONTROL( QskSlider, Panel )
|
||||
QSK_SUBCONTROL( QskSlider, Groove )
|
||||
@ -24,15 +25,6 @@ static inline QskAspect::Aspect qskAspectPosition( const QskSlider* slider )
|
||||
return slider->effectiveSubcontrol( QskSlider::Handle ) | Position | Metric;
|
||||
}
|
||||
|
||||
static inline QPointF qskMousePosition( const QMouseEvent* event )
|
||||
{
|
||||
#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 )
|
||||
return event->position();
|
||||
#else
|
||||
return event->localPos();
|
||||
#endif
|
||||
}
|
||||
|
||||
class QskSlider::PrivateData
|
||||
{
|
||||
public:
|
||||
|
Loading…
x
Reference in New Issue
Block a user