@ -16,7 +16,6 @@
# include <QScreen>
# include <QStyle>
# include <QProxyStyle>
# include <QWindow>
/* ─── VideoRenderWidget ─── */
@ -61,10 +60,6 @@ static QPoint mouseGlobalPos(const QMouseEvent* e) {
# endif
}
static bool isWaylandPlatform ( ) {
return QGuiApplication : : platformName ( ) = = QLatin1String ( " wayland " ) ;
}
/* Слайдер перемотки: клик по любому месту шкалы = прыжок к позиции (нативно через стиль). */
class SeekSliderStyle : public QProxyStyle {
public :
@ -313,14 +308,11 @@ void VideoPlayerWindow::mousePressEvent(QMouseEvent* e) {
}
ResizeMode m = hitTestResize ( e - > pos ( ) ) ;
if ( m ! = ResizeNone ) {
if ( isWaylandPlatform ( ) ) {
/* Wayland: позицию окна задаёт композитор — только нативный resize тянет край */
if ( windowHandle ( ) ) windowHandle ( ) - > startSystemResize ( edgesForMode ( m ) ) ;
} else {
beginResize ( m , mouseGlobalPos ( e ) ) ;
}
} else {
if ( windowHandle ( ) ) windowHandle ( ) - > startSystemMove ( ) ;
m_dragging = true ;
m_dragStart = mouseGlobalPos ( e ) ;
m_windowStart = frameGeometry ( ) . topLeft ( ) ;
}
}
}
@ -334,12 +326,19 @@ void VideoPlayerWindow::mouseMoveEvent(QMouseEvent* e) {
applyResize ( mouseGlobalPos ( e ) ) ;
return ;
}
if ( m_dragging & & ( e - > buttons ( ) & Qt : : LeftButton ) ) {
move ( m_windowStart + ( mouseGlobalPos ( e ) - m_dragStart ) ) ;
return ;
}
if ( ! ( e - > buttons ( ) & Qt : : LeftButton ) )
updateResizeCursor ( e - > pos ( ) ) ;
}
void VideoPlayerWindow : : mouseReleaseEvent ( QMouseEvent * e ) {
if ( e - > button ( ) = = Qt : : LeftButton ) m_resizeMode = ResizeNone ;
if ( e - > button ( ) = = Qt : : LeftButton ) {
m_dragging = false ;
m_resizeMode = ResizeNone ;
}
}
void VideoPlayerWindow : : mouseDoubleClickEvent ( QMouseEvent * e ) {
@ -359,11 +358,7 @@ bool VideoPlayerWindow::eventFilter(QObject* obj, QEvent* ev) {
QPoint gp = mouseGlobalPos ( me ) ;
if ( t = = QEvent : : MouseButtonPress & & me - > button ( ) = = Qt : : LeftButton ) {
if ( isWaylandPlatform ( ) ) {
if ( windowHandle ( ) ) windowHandle ( ) - > startSystemResize ( edgesForMode ( m ) ) ;
} else {
beginResize ( m , gp ) ;
}
return true ;
}
if ( t = = QEvent : : MouseMove & & m_resizeMode ! = ResizeNone & & ( me - > buttons ( ) & Qt : : LeftButton ) ) {
@ -423,20 +418,6 @@ void VideoPlayerWindow::updateResizeCursor(const QPoint& pos) {
}
}
Qt : : Edges VideoPlayerWindow : : edgesForMode ( ResizeMode m ) {
switch ( m ) {
case ResizeLeft : return Qt : : LeftEdge ;
case ResizeRight : return Qt : : RightEdge ;
case ResizeTop : return Qt : : TopEdge ;
case ResizeBottom : return Qt : : BottomEdge ;
case ResizeTopLeft : return Qt : : TopEdge | Qt : : LeftEdge ;
case ResizeTopRight : return Qt : : TopEdge | Qt : : RightEdge ;
case ResizeBottomLeft : return Qt : : BottomEdge | Qt : : LeftEdge ;
case ResizeBottomRight : return Qt : : BottomEdge | Qt : : RightEdge ;
default : return { } ;
}
}
void VideoPlayerWindow : : beginResize ( ResizeMode m , const QPoint & globalPos ) {
m_resizeMode = m ;
m_resizeStartGeom = geometry ( ) ;