This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch feature/rootless-mode in repository x2gokdriveclient. from 1b656c7 Focus handling new 5120c07 Cursor, icon handling, min size The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: client.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- extwin.cpp | 17 ++++++++--------- 2 files changed, 56 insertions(+), 12 deletions(-) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gokdriveclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch feature/rootless-mode in repository x2gokdriveclient. commit 5120c078b329fff2ae86cddce6cb574341b35c4e Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Tue Feb 8 14:31:41 2022 -0600 Cursor, icon handling, min size --- client.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- extwin.cpp | 17 ++++++++--------- 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/client.cpp b/client.cpp index d267821..798bd14 100644 --- a/client.cpp +++ b/client.cpp @@ -897,6 +897,13 @@ void Client::getCursorImage() freeMessageBuffer(); if(!rootless) displayArea->setCursor(*cursor); + else + { + for(int i=0;i<extWindows.count();++i) + { + extWindows[i]->getDisplayArea()->setCursor(*cursor); + } + } } @@ -957,6 +964,13 @@ void Client::getCursor() } if(!rootless) displayArea->setCursor(*cursorCache[currentCursor->serialNumber]); + else + { + for(int i=0;i<extWindows.count();++i) + { + extWindows[i]->getDisplayArea()->setCursor(*cursorCache[currentCursor->serialNumber]); + } + } } else { @@ -1122,7 +1136,7 @@ void Client::getWinUpdateBuffer() win=getExtWin(extWinId); if(!win) { - KDRStdErr()<<"Error: Wind "<<KDR_HEX<<extWinId<<" not found in the list"<<KDR_DEC<<KDR_ENDL; + KDRStdErr()<<"Error: update Wind "<<KDR_HEX<<extWinId<<" not found in the list"<<KDR_DEC<<KDR_ENDL; freeMessageBuffer(); return; } @@ -1137,10 +1151,12 @@ void Client::getWinUpdateBuffer() else { int16_t x, y; - uint16_t w,h,bw; + uint16_t w,h,minw,minh,bw; uint8_t visibility; uint8_t winType; uint16_t nameSize; + uint32_t icon_size; + QPixmap icon; QString name; uint32_t parId=*((uint32_t*)(messageBuffer+readFromBuf)); readFromBuf+=sizeof(uint32_t); @@ -1156,6 +1172,10 @@ void Client::getWinUpdateBuffer() readFromBuf+=sizeof(uint16_t); h=*((uint16_t*)(messageBuffer+readFromBuf)); readFromBuf+=sizeof(uint16_t); + minw=*((uint16_t*)(messageBuffer+readFromBuf)); + readFromBuf+=sizeof(uint16_t); + minh=*((uint16_t*)(messageBuffer+readFromBuf)); + readFromBuf+=sizeof(uint16_t); bw=*((uint16_t*)(messageBuffer+readFromBuf)); readFromBuf+=sizeof(uint16_t); @@ -1172,6 +1192,20 @@ void Client::getWinUpdateBuffer() name=QString::fromUtf8(messageBuffer+readFromBuf, nameSize); readFromBuf+=nameSize; } + icon_size=*((uint32_t*)(messageBuffer+readFromBuf)); + readFromBuf+=sizeof(uint32_t); + if(icon_size) + { + if(!icon.loadFromData((const uchar*)(messageBuffer+readFromBuf), icon_size)) + { + KDRStdErr()<<"Failed load icon from bytes: "<<icon_size; + } + else + { + KDRStdErr()<<"load icon: "<<icon.width()<<"x"<<icon.height(); + } + readFromBuf+=icon_size; + } if(state==1) { // KDRStdErr()<<"win changed: "<<KDR_HEX<<wptr; @@ -1190,6 +1224,7 @@ void Client::getWinUpdateBuffer() case WINDOW_TYPE_COMBO: case WINDOW_TYPE_POPUP_MENU: case WINDOW_TYPE_DROPDOWN_MENU: + case WINDOW_TYPE_UTILITY: flags=Qt::Window|Qt::FramelessWindowHint|Qt::BypassWindowManagerHint|Qt::X11BypassWindowManagerHint|Qt::WindowStaysOnTopHint; break; case WINDOW_TYPE_TOOLTIP: @@ -1232,6 +1267,7 @@ void Client::getWinUpdateBuffer() if(winType==WINDOW_TYPE_DIALOG) { win->setModality(ExtWin::MOD_SINGLE); + win->setWindowIcon(transWin->windowIcon()); } } } @@ -1243,14 +1279,23 @@ void Client::getWinUpdateBuffer() // KDRStdErr()<<"Place above"<<KDR_HEX<<nextSibPtr; win->setNextSibId(nextSibId); extWindows.append(win); + if(minh&&minw) + { + win->setMinimumWidth(minw); + win->setMinimumHeight(minh); + } win->resize(w,h); win->move(x,y); win->showNormal(); win->raise(); win->activateWindow(); + if(!icon.isNull()) + { + win->setWindowIcon(icon); + } // win->update(); } - KDRStdErr()<<KDR_DEC<<name<<" "<<x<<":"<<y<<" "<<w<<"x"<<h<<" bw - "<<bw<<" "<<visibility<<KDR_ENDL; + KDRStdErr()<<KDR_DEC<<name<<" "<<x<<":"<<y<<" "<<w<<"x"<<h<<" min size: "<<minw<<"x"<<minh<<" bw - "<<bw<<" "<<visibility<<KDR_ENDL; if(win->geometry().width() != w || win->geometry().height() != h) win->resize(w,h); if(win->geometry().x()!=x || win->geometry().y()!=y) diff --git a/extwin.cpp b/extwin.cpp index 6979da5..14230f3 100644 --- a/extwin.cpp +++ b/extwin.cpp @@ -47,6 +47,9 @@ ExtWin::ExtWin(uint32_t extWinId, Client *client, QWidget* parent, Qt::WindowFla case WINDOW_TYPE_TOOLTIP: setAttribute(Qt::WA_X11NetWmWindowTypeToolTip); break; + case WINDOW_TYPE_UTILITY: + setAttribute(Qt::WA_X11NetWmWindowTypeUtility); + break; } setFocusPolicy(Qt::NoFocus); } @@ -58,7 +61,7 @@ void ExtWin::setWinSize(int w, int h) void ExtWin::moveEvent(QMoveEvent* ev) { - if((windowType != WINDOW_TYPE_DROPDOWN_MENU)&&(windowType != WINDOW_TYPE_POPUP_MENU)) + if((windowType == WINDOW_TYPE_NORMAL)||(windowType == WINDOW_TYPE_DIALOG)) { Client::KDRStdErr()<<"Move "<<Client::QRectToStr(geometry())<<KDR_ENDL; client->changeWindow(this); @@ -69,7 +72,7 @@ void ExtWin::moveEvent(QMoveEvent* ev) void ExtWin::resizeEvent(QResizeEvent* ev) { - if((windowType != WINDOW_TYPE_DROPDOWN_MENU)&&(windowType != WINDOW_TYPE_POPUP_MENU)) + if((windowType == WINDOW_TYPE_NORMAL)||(windowType == WINDOW_TYPE_DIALOG)) { Client::KDRStdErr()<<"Resize "<<Client::QRectToStr(geometry())<<KDR_ENDL; client->changeWindow(this); @@ -313,15 +316,11 @@ bool ExtWin::checkModality(QList<ExtWin*> &siblings) bool ExtWin::nativeEvent(const QByteArray &eventType, void *message, long *result) { - if((windowType == WINDOW_TYPE_DROPDOWN_MENU)||(windowType == WINDOW_TYPE_POPUP_MENU)) - { - return QMainWindow::nativeEvent(eventType, message, result); - } - if(!eventType.compare("xcb_generic_event_t") && parentId==0) + if((windowType == WINDOW_TYPE_NORMAL)||(windowType == WINDOW_TYPE_DIALOG)) { - slotCheckStackOrder(); - // if(windowType == WINDOW_TYPE_DROPDOWN_MENU || windowType == WINDOW_TYPE_POPUP_MENU) + if(!eventType.compare("xcb_generic_event_t") && parentId==0) { + slotCheckStackOrder(); xcb_generic_event_t* ev = static_cast<xcb_generic_event_t *>(message); switch((ev->response_type & ~0x80)) { -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gokdriveclient.git