Qt6 incompatibilities fixed

This commit is contained in:
Uwe Rathmann 2020-10-25 15:56:22 +01:00
parent 0c37453d5f
commit a101080231
4 changed files with 26 additions and 11 deletions

View File

@ -16,6 +16,15 @@ QSK_QT_PRIVATE_BEGIN
#include <private/qobject_p.h> #include <private/qobject_p.h>
QSK_QT_PRIVATE_END QSK_QT_PRIVATE_END
static inline void *qskMetaTypeCreate( int type, const void *copy )
{
#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 )
return QMetaType( type ).create( copy );
#else
return QMetaType::create( type, copy );
#endif
}
namespace namespace
{ {
using CallFunction = QObjectPrivate::StaticMetaCallFunction; using CallFunction = QObjectPrivate::StaticMetaCallFunction;
@ -233,7 +242,7 @@ static void qskInvokeMetaCall(
} }
types[ i ] = method.parameterType( i - 1 ); types[ i ] = method.parameterType( i - 1 );
arguments[ i ] = QMetaType::create( types[ i ], argv[ i ] ); arguments[ i ] = qskMetaTypeCreate( types[ i ], argv[ i ] );
} }
} }
else else
@ -247,7 +256,7 @@ static void qskInvokeMetaCall(
arguments = static_cast< void** >( malloc( argc * sizeof( void* ) ) ); arguments = static_cast< void** >( malloc( argc * sizeof( void* ) ) );
types[ 0 ] = property.userType(); types[ 0 ] = property.userType();
arguments[ 0 ] = QMetaType::create( types[ 0 ], argv[ 0 ] ); arguments[ 0 ] = qskMetaTypeCreate( types[ 0 ], argv[ 0 ] );
} }
if ( receiver.isNull() ) if ( receiver.isNull() )

View File

@ -1,4 +1,5 @@
#include "QskGestureRecognizer.h" #include "QskGestureRecognizer.h"
#include "QskEvent.h"
#include <qbasictimer.h> #include <qbasictimer.h>
#include <qcoreapplication.h> #include <qcoreapplication.h>
@ -20,7 +21,7 @@ static inline QMouseEvent* qskClonedMouseEvent(
if ( item ) if ( item )
{ {
QPointF localPos = item->mapFromScene( event->windowPos() ); QPointF localPos = item->mapFromScene( qskMouseScenePosition( event ) );
clonedEvent = QQuickWindowPrivate::cloneMouseEvent( event, &localPos ); clonedEvent = QQuickWindowPrivate::cloneMouseEvent( event, &localPos );
} }
else else

View File

@ -6,6 +6,7 @@
#include "QskSlider.h" #include "QskSlider.h"
#include "QskAnimationHint.h" #include "QskAnimationHint.h"
#include "QskAspect.h" #include "QskAspect.h"
#include "QskIntervalF.h"
QSK_SUBCONTROL( QskSlider, Panel ) QSK_SUBCONTROL( QskSlider, Panel )
QSK_SUBCONTROL( QskSlider, Groove ) QSK_SUBCONTROL( QskSlider, Groove )

View File

@ -90,7 +90,7 @@ class QskSubWindowArea::PrivateData
bool isDraggableByHeaderOnly : 1; bool isDraggableByHeaderOnly : 1;
bool isDragging : 1; bool isDragging : 1;
Qt::Edges draggedEdges; Qt::Edges draggedEdges;
QPoint mousePos; QPointF mousePos;
}; };
QskSubWindowArea::QskSubWindowArea( QQuickItem* parent ) QskSubWindowArea::QskSubWindowArea( QQuickItem* parent )
@ -192,7 +192,9 @@ bool QskSubWindowArea::mouseEventFilter( QskSubWindow* window, const QMouseEvent
{ {
case QEvent::MouseButtonPress: case QEvent::MouseButtonPress:
{ {
if ( !( cr.contains( event->localPos() ) && const auto mousePos = qskMousePosition( event );
if ( !( cr.contains( mousePos ) &&
event->button() == Qt::LeftButton ) ) event->button() == Qt::LeftButton ) )
{ {
return false; return false;
@ -214,14 +216,14 @@ bool QskSubWindowArea::mouseEventFilter( QskSubWindow* window, const QMouseEvent
if ( !doDrag ) if ( !doDrag )
{ {
// dragging by title bar only // dragging by title bar only
doDrag = window->titleBarRect().contains( event->localPos() ); doDrag = window->titleBarRect().contains( mousePos );
} }
if ( doDrag ) if ( doDrag )
{ {
m_data->isDragging = true; m_data->isDragging = true;
m_data->draggedEdges = qskSelectedEdges( cr, event->localPos() ); m_data->draggedEdges = qskSelectedEdges( cr, mousePos );
m_data->mousePos = event->globalPos(); m_data->mousePos = qskMouseScenePosition( event );
setDragging( window, true ); setDragging( window, true );
return true; return true;
@ -233,10 +235,12 @@ bool QskSubWindowArea::mouseEventFilter( QskSubWindow* window, const QMouseEvent
{ {
if ( m_data->isDragging ) if ( m_data->isDragging )
{ {
qskDragWindow( event->globalPos() - m_data->mousePos, const auto scenePos = qskMouseScenePosition( event );
qskDragWindow( scenePos - m_data->mousePos,
m_data->draggedEdges, window ); m_data->draggedEdges, window );
m_data->mousePos = event->globalPos(); m_data->mousePos = scenePos;
return true; return true;
} }
break; break;
@ -247,7 +251,7 @@ bool QskSubWindowArea::mouseEventFilter( QskSubWindow* window, const QMouseEvent
{ {
setDragging( window, false ); setDragging( window, false );
m_data->mousePos = QPoint(); m_data->mousePos = QPointF();
m_data->isDragging = false; m_data->isDragging = false;
return true; return true;