[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