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 9d1e3636e771304325a3e272b587d36be2f6ce4c Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Wed Feb 9 10:40:24 2022 -0600 Handling WM_DELETE_WINDOW --- client.cpp | 14 +++++++++++++- client.h | 2 ++ displayarea.cpp | 3 ++- extwin.cpp | 16 +++++++++++++++- extwin.h | 1 + 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/client.cpp b/client.cpp index 798bd14..0d447b2 100644 --- a/client.cpp +++ b/client.cpp @@ -1919,7 +1919,19 @@ void Client::changeWindow(ExtWin* win) memcpy(evmsg+18,(char*)&h,2); memcpy(evmsg+20,(char*)&focus,1); sendEvent(evmsg); -// QTimer::singleShot(1,win,SLOT(update())); + // QTimer::singleShot(1,win,SLOT(update())); +} + +//request window closing +void Client::closeWindow(ExtWin* win) +{ + char evmsg[EVLENGTH]{}; + uint32_t etype; + uint32_t extWinId=win->getExtWinId(); + etype=WINCLOSE; + memcpy(evmsg,(char*)&etype,4); + memcpy(evmsg+4,(char*)&extWinId,4); + sendEvent(evmsg); } //requesting on demand selection diff --git a/client.h b/client.h index 9e98cc0..976c815 100644 --- a/client.h +++ b/client.h @@ -62,6 +62,7 @@ enum OS_VERSION{OS_LINUX, OS_WINDOWS, OS_DARWIN}; #define KEEPALIVE 12 #define CACHEREBUILD 13 #define WINCHANGE 14 +#define WINCLOSE 15 #define ShiftMask (1<<0) #define LockMask (1<<1) @@ -195,6 +196,7 @@ public: static QString QRectToStr(const QRect& rec); static QString QSizeToStr(const QSizeF& sz); void changeWindow(ExtWin* win); + void closeWindow(ExtWin* win); bool isRootless(){return rootless;} const QList<ExtWin*> getExtWindows(){return extWindows;} const QList<ExtWin*> getSiblings(ExtWin* win); diff --git a/displayarea.cpp b/displayarea.cpp index de09197..444a758 100644 --- a/displayarea.cpp +++ b/displayarea.cpp @@ -91,7 +91,8 @@ DisplayArea::DisplayArea(Client* client, QWidget* parentWidget):QFrame(parentWid this->parentWidget=parentWidget; setMouseTracking(true); setFocusPolicy(Qt::StrongFocus); - grabKeyboard(); + if(!client->isRootless()) + grabKeyboard(); } diff --git a/extwin.cpp b/extwin.cpp index 14230f3..5d99b66 100644 --- a/extwin.cpp +++ b/extwin.cpp @@ -22,6 +22,8 @@ #include "client.h" #include <QApplication> #include <QTimer> +#include <QCloseEvent> + ExtWin::ExtWin(uint32_t extWinId, Client *client, QWidget* parent, Qt::WindowFlags flags): QMainWindow(parent, flags) { displayArea=new DisplayArea((Client*)client,this); @@ -69,6 +71,15 @@ void ExtWin::moveEvent(QMoveEvent* ev) QMainWindow::moveEvent(ev); } +void ExtWin::closeEvent(QCloseEvent* ev) +{ + if((windowType == WINDOW_TYPE_NORMAL)||(windowType == WINDOW_TYPE_DIALOG)) + { + Client::KDRStdErr()<<"Request window close "; + client->closeWindow(this); + ev->ignore(); + } +} void ExtWin::resizeEvent(QResizeEvent* ev) { @@ -88,8 +99,11 @@ void ExtWin::showEvent(QShowEvent *ev) void ExtWin::hideEvent(QHideEvent *ev) { - Client::KDRStdErr()<<"Hide "<<Client::QRectToStr(geometry())<<KDR_ENDL; QMainWindow::hideEvent(ev); + if(isMinimized()) + { + Client::KDRStdErr()<<"Minimized "<<Client::QRectToStr(geometry())<<KDR_ENDL; + } } void ExtWin::focusInEvent(QFocusEvent *ev) diff --git a/extwin.h b/extwin.h index 74047f2..f13279a 100644 --- a/extwin.h +++ b/extwin.h @@ -72,6 +72,7 @@ private slots: void slotCheckStackOrder(); protected: + void closeEvent(QCloseEvent*); void resizeEvent(QResizeEvent*); void moveEvent(QMoveEvent*); void showEvent(QShowEvent *event); -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gokdriveclient.git