diff options
author | Ken Moore <ken@ixsystems.com> | 2018-06-05 12:36:47 -0400 |
---|---|---|
committer | Ken Moore <ken@ixsystems.com> | 2018-06-05 12:36:47 -0400 |
commit | d35f4f6e8a02a964c335705bf13f2548977d76b2 (patch) | |
tree | 6c7e02d4f474326f811416e4723fc35bcfa739a7 /src-qt5/core/lumina-desktop-unified | |
parent | Get the window movement working, and mouse cursor changes on mouseover workin... (diff) | |
download | lumina-d35f4f6e8a02a964c335705bf13f2548977d76b2.tar.gz lumina-d35f4f6e8a02a964c335705bf13f2548977d76b2.tar.bz2 lumina-d35f4f6e8a02a964c335705bf13f2548977d76b2.zip |
Try to get the window resizes working.
Not done yet - got the timer warnings fixed, and did more thread-safe conversions.
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified')
-rw-r--r-- | src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp | 32 | ||||
-rw-r--r-- | src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h | 1 |
2 files changed, 10 insertions, 23 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp index 3c4562c1..60bb0b9c 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp @@ -18,7 +18,7 @@ NativeWindow::NativeWindow( NativeWindowObject *obj ) : QFrame(0, Qt::Window | Q moveTimer = new QTimer(this); moveTimer->setSingleShot(true); moveTimer->setInterval(100); //1/10 second - connect(moveTimer, SIGNAL(timeout()), this, SLOT(syncGeom()) ); + connect(moveTimer, SIGNAL(timeout()), this, SLOT(submitLocationChange()) ); //Let the window system know the window has moved //WIN->addFrameWinID(this->winId()); } @@ -125,29 +125,11 @@ NativeWindow::ModState NativeWindow::getStateAtPoint(QPoint pt, bool setoffset){ return ResizeBottom; } }else if(onLeft){ - //Left side options - /*if(pt.y() < this->height()/5){ - if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner - return ResizeTopLeft; - }else if(pt.y() > (this->height()*4.0/5.0)){ - if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()-this->height()); } //difference from bottom-left corner - return ResizeBottomLeft; - }else{*/ if(setoffset){ offset.setX(pt.x()); offset.setY(0); } //difference from left edge (Y does not matter) return ResizeLeft; - //} }else if(onRight){ - //Right side options - /*if(pt.y() < this->height()/5){ - if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(pt.y()); } //difference from top-right corner - return ResizeTopRight; - }else if(pt.y() > (this->height()*4.0/5.0)){ - if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(pt.y()-this->height()); } //difference from bottom-right corner - return ResizeBottomRight; - }else{*/ if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(0); } //difference from right edge (Y does not matter) return ResizeRight; - //} }else{ return Normal; } @@ -313,6 +295,10 @@ void NativeWindow::syncGeom(){ } } +void NativeWindow::submitLocationChange(){ + emit windowMoved(WIN); +} + // === PROTECTED === void NativeWindow::mousePressEvent(QMouseEvent *ev){ container->activateWindow(); @@ -413,9 +399,9 @@ void NativeWindow::mouseMoveEvent(QMouseEvent *ev){ //if( (geom.width()%2==0 && geom.height()%2==0) || activeState==Move){ //qDebug() << " Change Window:" << this->geometry() << geom; if(activeState==Move){ this->setGeometry(geom); } - else{ - //qDebug() << " Change Window Dimensions:" << this->geometry() << geom; - //qDebug() << " - Mouse Pos:" << ev->globalPos() << ev->pos() << "Offset" << offset; + else if(this->geometry()!=geom){ + qDebug() << " Change Window Dimensions:" << this->geometry() << geom; + qDebug() << " - Mouse Pos:" << ev->globalPos() << ev->pos() << "Offset" << offset; this->setGeometry(geom); } //} @@ -458,6 +444,6 @@ void NativeWindow::moveEvent(QMoveEvent *ev){ //qDebug() << "Got Move Event:" << ev->pos() << container->geometry(); QFrame::moveEvent(ev); //if(!closing && !container->isPaused()){ - moveTimer->start(); + QTimer::singleShot(0,moveTimer, SLOT(start())); //this needs to be thread-safe //} } diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h index 20491014..71f6e701 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h @@ -62,6 +62,7 @@ private slots: void syncVisibility(bool init = false); void syncWinType(); void syncGeom(); + void submitLocationChange(); protected: void mousePressEvent(QMouseEvent*); |