Changeset 176 for smplayer/trunk/src/mplayerwindow.cpp
- Timestamp:
- May 3, 2016, 5:25:45 PM (9 years ago)
- Location:
- smplayer/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
smplayer/trunk
- Property svn:mergeinfo changed
/smplayer/vendor/current merged: 175
- Property svn:mergeinfo changed
-
smplayer/trunk/src/mplayerwindow.cpp
r165 r176 1 1 /* smplayer, GUI front-end for mplayer. 2 Copyright (C) 2006-201 4Ricardo Villalba <rvm@users.sourceforge.net>2 Copyright (C) 2006-2016 Ricardo Villalba <rvm@users.sourceforge.net> 3 3 4 4 This program is free software; you can redistribute it and/or modify … … 130 130 #endif 131 131 setAttribute(Qt::WA_PaintUnclipped); 132 setAttribute(Qt::WA_PaintOnScreen);132 //setAttribute(Qt::WA_PaintOnScreen); 133 133 #endif 134 134 #endif … … 161 161 162 162 #ifndef Q_OS_WIN 163 #if QT_VERSION >= 0x050000164 163 setAttribute(Qt::WA_PaintOnScreen); 165 #endif166 164 #endif 167 165 … … 174 172 175 173 #ifndef Q_OS_WIN 176 #if QT_VERSION >= 0x050000177 174 setAttribute(Qt::WA_PaintOnScreen, false); 178 #endif179 175 #endif 180 176 … … 210 206 , animated_logo(false) 211 207 #endif 212 , mouse_drag_tracking(false) 213 , isMoving(false) 214 , startDrag(QPoint(0,0)) 208 , corner_widget(0) 209 , drag_state(NOT_DRAGGING) 210 , start_drag(QPoint(0,0)) 211 , mouse_drag_tracking(false) 215 212 { 216 213 setAutoFillBackground(true); … … 254 251 } 255 252 253 void MplayerWindow::setCornerWidget(QWidget * w) { 254 corner_widget = w; 255 256 QHBoxLayout * blayout = new QHBoxLayout; 257 blayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding)); 258 blayout->addWidget(corner_widget); 259 260 QVBoxLayout * layout = new QVBoxLayout(this); 261 layout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding)); 262 layout->addLayout(blayout); 263 } 264 256 265 #if USE_COLORKEY 257 266 void MplayerWindow::setColorKey( QColor c ) { … … 268 277 269 278 void MplayerWindow::setLogoVisible( bool b) { 279 if (corner_widget) { 280 corner_widget->setVisible(b); 281 } 282 270 283 #if !LOGO_ANIMATION 271 284 logo->setVisible(b); … … 468 481 } 469 482 470 /* the code in eventFilter is based on dragmovecharm.cpp, under license GPL 2 or 3:471 https://qt.gitorious.org/qt-labs/graphics-dojo/source/8000ca3b229344ed2ba2ae81ed5ebaee86e9d63a:dragmove/dragmovecharm.cpp472 */473 483 bool MplayerWindow::eventFilter( QObject * object, QEvent * event ) { 474 //qDebug() << "MplayerWindow::eventFilter" << object; 475 476 if (!mouse_drag_tracking) return false; 477 478 QWidget * w = qobject_cast<QWidget*>(object); 479 if (!w) return false; 480 481 QEvent::Type type = event->type(); 482 if (type != QEvent::MouseButtonPress && type != QEvent::MouseButtonRelease && type != QEvent::MouseMove) { 483 return false; 484 } 485 486 QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent*>(event); 487 if (!mouseEvent || mouseEvent->modifiers() != Qt::NoModifier) { 488 return false; 489 } 490 Qt::MouseButton button = mouseEvent->button(); 491 492 bool consumed = false; 493 494 if (type == QEvent::MouseButtonPress && button == Qt::LeftButton) { 495 startDrag = mouseEvent->globalPos(); 496 //qDebug() << "MplayerWindow::eventFilter: startDrag:" << startDrag << "obj:" << object->objectName(); 497 isMoving = true; 498 event->accept(); 499 consumed = true; 500 } 501 502 if (type == QEvent::MouseButtonRelease) { 503 startDrag = QPoint(0, 0); 504 isMoving = false; 505 } 506 507 if (type == QEvent::MouseMove && isMoving) { 508 QPoint pos = mouseEvent->globalPos(); 509 QPoint diff = pos - startDrag; 510 //qDebug() << "MplayerWindow:eventFilter: diff" << diff << "obj:" << object->objectName(); 511 emit mouseMovedDiff(diff); 512 startDrag = pos; 513 consumed = true; 514 } 515 516 return consumed; 484 485 if (!mouse_drag_tracking) 486 return false; 487 488 QEvent::Type type = event->type(); 489 if (type != QEvent::MouseButtonPress 490 && type != QEvent::MouseButtonRelease 491 && type != QEvent::MouseMove) 492 return false; 493 494 QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent*>(event); 495 if (!mouseEvent) 496 return false; 497 498 if (mouseEvent->modifiers() != Qt::NoModifier) { 499 drag_state = NOT_DRAGGING; 500 return false; 501 } 502 503 if (type == QEvent::MouseButtonPress) { 504 if (mouseEvent->button() != Qt::LeftButton) { 505 drag_state = NOT_DRAGGING; 506 return false; 507 } 508 509 drag_state = START_DRAGGING; 510 start_drag = mouseEvent->globalPos(); 511 // Don't filter, so others can have a look at it too 512 return false; 513 } 514 515 if (type == QEvent::MouseButtonRelease) { 516 if (drag_state != DRAGGING || mouseEvent->button() != Qt::LeftButton) { 517 drag_state = NOT_DRAGGING; 518 return false; 519 } 520 521 // Stop dragging and eat event 522 drag_state = NOT_DRAGGING; 523 event->accept(); 524 return true; 525 } 526 527 // type == QEvent::MouseMove 528 if (drag_state == NOT_DRAGGING) 529 return false; 530 531 // buttons() note the s 532 if (mouseEvent->buttons() != Qt::LeftButton) { 533 drag_state = NOT_DRAGGING; 534 return false; 535 } 536 537 QPoint pos = mouseEvent->globalPos(); 538 QPoint diff = pos - start_drag; 539 if (drag_state == START_DRAGGING) { 540 // Don't start dragging before moving at least DRAG_THRESHOLD pixels 541 if (abs(diff.x()) < DRAG_THRESHOLD && abs(diff.y()) < DRAG_THRESHOLD) 542 return false; 543 544 drag_state = DRAGGING; 545 } 546 547 emit mouseMovedDiff(diff); 548 start_drag = pos; 549 event->accept(); 550 return true; 517 551 } 518 552
Note:
See TracChangeset
for help on using the changeset viewer.