From b6cb36bd5119c63a2376f64001a9f0afbee3cafc Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 4 May 2016 12:44:01 -0400 Subject: Have lumina-screenshot use the current window stacking order for determining which window is under the mouse click (in the case of layered windows at the click point). --- src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp') diff --git a/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp b/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp index 47828cdd..446e9bf7 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp +++ b/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp @@ -158,10 +158,16 @@ void MainUI::mouseReleaseEvent(QMouseEvent *ev){ //In the middle of selecting a window to take a screenshot // Get the window underneath the mouse click and take the screenshot QList wins = XCB->WindowList(); + QList stack = XCB->WM_Get_Client_List(true); cwin = 0; //qDebug() << "Try to select window:" << ev->globalPos(); - for(int i=0; iWindowGeometry(wins[i], true).contains(ev->globalPos()) ){ cwin = wins[i]; } + //for(int i=0; i=0 && cwin==0; i--){ //work top->bottom in the stacking order + if(!wins.contains(stack[i])){ continue; } + if( XCB->WindowGeometry(stack[i], true).contains(ev->globalPos()) && XCB->WindowState(stack[i])!=LXCB::INVISIBLE ){ + qDebug() << "Found Window:" << i << XCB->WindowClass(stack[i]); + cwin = stack[i]; + } } qDebug() << " - Got window:" << cwin; if(cwin==this->winId()){ return; } //cancelled -- cgit