This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch feature/rootless-mode in repository x2gokdrive. from 17ee1ef rootless mode for x2gokdrive new abc35a5 Focus handling 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: x2gokdriveremote.c | 24 +++++++++++++++++++++++- x2gokdriveremote.h | 1 + 2 files changed, 24 insertions(+), 1 deletion(-) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gokdrive.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch feature/rootless-mode in repository x2gokdrive. commit abc35a56b319509f9c2d6e4573b1ab47d9b44b19 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Thu Feb 3 10:06:33 2022 -0600 Focus handling --- x2gokdriveremote.c | 24 +++++++++++++++++++++++- x2gokdriveremote.h | 1 + 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/x2gokdriveremote.c b/x2gokdriveremote.c index e07f553..691ea70 100644 --- a/x2gokdriveremote.c +++ b/x2gokdriveremote.c @@ -37,6 +37,7 @@ #include "x2gokdriveremote.h" #include "x2gokdriveselection.h" #include "x2gokdrivelog.h" +#include "inputstr.h" #include <zlib.h> #include <propertyst.h> @@ -2588,6 +2589,8 @@ void client_win_change(char* buff) int16_t ny=*((int16_t*)(buff+14)); uint16_t nw=*((int16_t*)(buff+16)); uint16_t nh=*((int16_t*)(buff+18)); + uint8_t focus=*((int8_t*)(buff+20)); + BOOL move=FALSE, resize=FALSE, restack=FALSE; // EPHYR_DBG("Client request win change: %p %d:%d %dx%d",fptr, nx,ny,nw,nh); pWin=remote_find_window_on_screen_by_id(winId, remoteVars.ephyrScreen->pScreen->root); @@ -2698,6 +2701,15 @@ void client_win_change(char* buff) EPHYR_DBG("Client request to move : %p on top of %p",pWin, pSib); ReflectStackChange(pWin, pSib, VTOther); } + if(rw->hasFocus!=focus) + { + EPHYR_DBG("Focus changed for 0x%X",winId); + rw->hasFocus=focus; + if(focus) + { + SetInputFocus(wClient(pWin), inputInfo.keyboard, pWin->drawable.id, RevertToParent, CurrentTime, TRUE); + } + } } void set_client_version(uint16_t ver, uint16_t os) @@ -3742,6 +3754,8 @@ void remote_check_window(WindowPtr win) uint8_t winType=WINDOW_TYPE_NORMAL; int16_t x,y; uint16_t w,h,bw; + uint32_t focusWinId=0; + FocusClassPtr focus = inputInfo.keyboard->focus; WindowPtr parPtr; WindowPtr nextSibPtr, tmpPtr; parPtr=win->parent; @@ -3786,7 +3800,12 @@ void remote_check_window(WindowPtr win) * if window is not in list, create and send to client. If not same, update and send to client * if some list windows not there anymore, delete and send notification */ - + if (focus->win == NoneWin) + focusWinId = None; + else if (focus->win == PointerRootWin) + focusWinId = PointerRoot; + else + focusWinId = focus->win->drawable.id; if(win->optional && win->optional->userProps) { PropertyPtr prop=win->optional->userProps; @@ -3952,6 +3971,9 @@ void remote_check_window(WindowPtr win) } } + rwin->hasFocus=(win->drawable.id==focusWinId); + + rwin->foundInWinTree=TRUE; rwin->x=x; rwin->y=y; diff --git a/x2gokdriveremote.h b/x2gokdriveremote.h index 0e6ecc9..8f463e2 100644 --- a/x2gokdriveremote.h +++ b/x2gokdriveremote.h @@ -366,6 +366,7 @@ struct remoteWindow int16_t x,y; uint16_t w,h,bw; int8_t visibility; + int8_t hasFocus; uint8_t winType; char* name; BOOL foundInWinTree; -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gokdrive.git