aboutsummaryrefslogtreecommitdiff
path: root/debian/patches/108_nxagent_wine-close-delay.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/108_nxagent_wine-close-delay.patch')
-rw-r--r--debian/patches/108_nxagent_wine-close-delay.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/debian/patches/108_nxagent_wine-close-delay.patch b/debian/patches/108_nxagent_wine-close-delay.patch
new file mode 100644
index 000000000..4ea4cd69c
--- /dev/null
+++ b/debian/patches/108_nxagent_wine-close-delay.patch
@@ -0,0 +1,53 @@
+--- a/nxagent/programs/Xserver/hw/nxagent/Window.c
++++ b/nxagent/programs/Xserver/hw/nxagent/Window.c
+@@ -176,6 +176,14 @@
+
+ static int nxagentForceExposure(WindowPtr pWin, pointer ptr);
+
++/* by dimbor */
++typedef struct
++{
++ CARD32 state;
++ Window icon;
++}
++nxagentWMStateRec;
++
+ /*
+ * This is currently unused.
+ */
+@@ -1640,6 +1648,17 @@
+ nxagentAddConfiguredWindow(pWin, CWStackingOrder);
+ nxagentAddConfiguredWindow(pWin, CW_Shape);
+
++ /* add by dimbor */
++ if (nxagentOption(Rootless) && nxagentWindowTopLevel(pWin))
++ {
++ Atom prop = MakeAtom("WM_STATE", strlen("WM_STATE"), True);
++ nxagentWMStateRec wmState;
++ wmState.state = 1; /* NormalState */
++ wmState.icon = None;
++ if (ChangeWindowProperty(pWin, prop, prop, 32, 0, 2, &wmState, 1) != Success)
++ fprintf(stderr, "nxagentRealizeWindow: Additing WM_STATE fail.\n");
++ }
++
+ #ifdef SHAPE
+
+ /*
+@@ -1686,6 +1705,17 @@
+ return True;
+ }
+
++ /* add by dimbor */
++ if (nxagentOption(Rootless) && nxagentWindowTopLevel(pWin))
++ {
++ Atom prop = MakeAtom("WM_STATE", strlen("WM_STATE"), True);
++ nxagentWMStateRec wmState;
++ wmState.state = 3; /* WithdrawnState */
++ wmState.icon = None;
++ if (ChangeWindowProperty(pWin, prop, prop, 32, 0, 2, &wmState, 1) != Success)
++ fprintf(stderr, "nxagentUnRealizeWindow: Changing WM_STATE failed.\n");
++ }
++
+ XUnmapWindow(nxagentDisplay, nxagentWindow(pWin));
+
+ return True;