[X2Go-Commits] [x2gokdriveclient] 01/01: Handling WM_DELETE_WINDOW

git-admin at x2go.org git-admin at x2go.org
Wed Feb 9 17:40:34 CET 2022


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 at 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


More information about the x2go-commits mailing list