Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
E.h icccm.c ipc.c
Log Message:
Shuffle some ICCCM client message code around.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.303
retrieving revision 1.304
diff -u -3 -r1.303 -r1.304
--- E.h 4 Jul 2004 08:47:27 -0000 1.303
+++ E.h 13 Jul 2004 17:15:20 -0000 1.304
@@ -881,6 +881,8 @@
Window group;
Window client_leader;
char need_input;
+ char take_focus;
+ char delete_window;
signed char transient;
Window transient_for;
char is_group_leader;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/icccm.c,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -3 -r1.74 -r1.75
--- icccm.c 4 Jul 2004 08:47:28 -0000 1.74
+++ icccm.c 13 Jul 2004 17:15:20 -0000 1.75
@@ -70,6 +70,20 @@
}
}
+static void
+ICCCM_ClientMessageSend(Window win, Atom atom)
+{
+ XEvent ev;
+
+ ev.type = ClientMessage;
+ ev.xclient.window = win;
+ ev.xclient.message_type = E_XA_WM_PROTOCOLS;
+ ev.xclient.format = 32;
+ ev.xclient.data.l[0] = atom;
+ ev.xclient.data.l[1] = CurrentTime;
+ XSendEvent(disp, win, False, 0, &ev);
+}
+
void
ICCCM_ProcessClientMessage(XClientMessageEvent * event)
{
@@ -174,10 +188,6 @@
void
ICCCM_Delete(EWin * ewin)
{
- XClientMessageEvent ev;
- Atom *prop;
- int num, i, del;
-
EDBUG(6, "ICCCM_Delete");
if (ewin->internal)
@@ -186,28 +196,10 @@
EDBUG_RETURN_;
}
- del = 0;
- if (XGetWMProtocols(disp, ewin->client.win, &prop, &num))
- {
- for (i = 0; i < num; i++)
- if (prop[i] == E_XA_WM_DELETE_WINDOW)
- del = 1;
- XFree(prop);
- }
- if (del)
- {
- ev.type = ClientMessage;
- ev.window = ewin->client.win;
- ev.message_type = E_XA_WM_PROTOCOLS;
- ev.format = 32;
- ev.data.l[0] = E_XA_WM_DELETE_WINDOW;
- ev.data.l[1] = CurrentTime;
- XSendEvent(disp, ewin->client.win, False, 0, (XEvent *) & ev);
- }
+ if (ewin->client.delete_window)
+ ICCCM_ClientMessageSend(ewin->client.win, E_XA_WM_DELETE_WINDOW);
else
- {
- XKillClient(disp, (XID) ewin->client.win);
- }
+ XKillClient(disp, (XID) ewin->client.win);
EDBUG_RETURN_;
}
@@ -215,20 +207,12 @@
void
ICCCM_Save(EWin * ewin)
{
- XClientMessageEvent ev;
-
EDBUG(6, "ICCCM_Save");
if (ewin->internal)
EDBUG_RETURN_;
- ev.type = ClientMessage;
- ev.window = ewin->client.win;
- ev.message_type = E_XA_WM_PROTOCOLS;
- ev.format = 32;
- ev.data.l[0] = E_XA_WM_SAVE_YOURSELF;
- ev.data.l[1] = CurrentTime;
- XSendEvent(disp, ewin->client.win, False, 0, (XEvent *) & ev);
+ ICCCM_ClientMessageSend(ewin->client.win, E_XA_WM_SAVE_YOURSELF);
EDBUG_RETURN_;
}
@@ -495,10 +479,6 @@
void
ICCCM_Focus(EWin * ewin)
{
- XClientMessageEvent ev;
- Atom *prop;
- int num, i, foc;
-
EDBUG(6, "ICCCM_Focus");
if (!ewin)
@@ -508,25 +488,8 @@
EDBUG_RETURN_;
}
- foc = 0;
- if (XGetWMProtocols(disp, ewin->client.win, &prop, &num))
- {
- for (i = 0; i < num; i++)
- if (prop[i] == E_XA_WM_TAKE_FOCUS)
- foc = 1;
- XFree(prop);
- }
- if (foc)
- {
- ev.type = ClientMessage;
- ev.window = ewin->client.win;
- ev.message_type = E_XA_WM_PROTOCOLS;
- ev.format = 32;
- ev.data.l[0] = E_XA_WM_TAKE_FOCUS;
- ev.data.l[1] = CurrentTime;
- XSendEvent(disp, ewin->client.win, False, 0, (XEvent *) & ev);
- }
-/* else */
+ if (ewin->client.take_focus)
+ ICCCM_ClientMessageSend(ewin->client.win, E_XA_WM_TAKE_FOCUS);
XSetInputFocus(disp, ewin->client.win, RevertToPointerRoot, CurrentTime);
HintsSetActiveWindow(ewin->client.win);
@@ -936,9 +899,15 @@
{
if (XGetWMProtocols(disp, ewin->client.win, &prop, &num))
{
+ ewin->client.take_focus = 0;
+ ewin->client.delete_window = 0;
for (i = 0; i < num; i++)
- if (prop[i] == E_XA_WM_TAKE_FOCUS)
- ewin->client.need_input = 1;
+ {
+ if (prop[i] == E_XA_WM_TAKE_FOCUS)
+ ewin->client.take_focus = ewin->client.need_input = 1;
+ else if (prop[i] == E_XA_WM_DELETE_WINDOW)
+ ewin->client.delete_window = 1;
+ }
XFree(prop);
}
}
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.167
retrieving revision 1.168
diff -u -3 -r1.167 -r1.168
--- ipc.c 4 Jul 2004 08:47:28 -0000 1.167
+++ ipc.c 13 Jul 2004 17:15:20 -0000 1.168
@@ -5752,7 +5752,7 @@
"Base, min, max, inc w/h %ix%i, %ix%i, %ix%i %ix%i\n"
"Aspect min, max %5.5f, %5.5f\n"
"MWM border %i resizeh %i title %i menu %i minimize %i maximize %i\n"
- "NeedsInput %i FocusNever %i FocusClick %i\n"
+ "NeedsInput %i TakeFocus %i FocusNever %i FocusClick %i\n"
"NeverUseArea %i FixedPos %i\n"
"Desktop %i Layer %i\n"
"Iconified %i Sticky %i Shaded %i Docked %i\n"
@@ -5786,7 +5786,8 @@
ewin->client.mwm_decor_border, ewin->client.mwm_decor_resizeh,
ewin->client.mwm_decor_title, ewin->client.mwm_decor_menu,
ewin->client.mwm_decor_minimize, ewin->client.mwm_decor_maximize,
- ewin->client.need_input, ewin->neverfocus, ewin->focusclick,
+ ewin->client.need_input, ewin->client.take_focus,
+ ewin->neverfocus, ewin->focusclick,
ewin->never_use_area, ewin->fixedpos,
ewin->desktop, ewin->layer,
ewin->iconified, ewin->sticky, ewin->shaded, ewin->docked,
-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
digital self defense, top technical experts, no vendor pitches,
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs