Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: ewins.c ewmh.c gnome.c hints.c hints.h icccm.c Log Message: Split client message processing into client and root message parts. =================================================================== RCS file: /cvs/e/e16/e/src/ewins.c,v retrieving revision 1.193 retrieving revision 1.194 diff -u -3 -r1.193 -r1.194 --- ewins.c 6 Apr 2007 21:44:22 -0000 1.193 +++ ewins.c 15 Apr 2007 14:34:45 -0000 1.194 @@ -2268,7 +2268,7 @@ break; case ClientMessage: - HintsProcessClientMessage(&(ev->xclient)); + HintsProcessClientClientMessage(ewin, &(ev->xclient)); break; case EX_EVENT_SHAPE_NOTIFY: @@ -2348,7 +2348,7 @@ break; case ClientMessage: - HintsProcessClientMessage(&(ev->xclient)); + HintsProcessRootClientMessage(&(ev->xclient)); break; default: =================================================================== RCS file: /cvs/e/e16/e/src/ewmh.c,v retrieving revision 1.112 retrieving revision 1.113 diff -u -3 -r1.112 -r1.113 --- ewmh.c 6 Mar 2007 03:33:31 -0000 1.112 +++ ewmh.c 15 Apr 2007 14:34:46 -0000 1.113 @@ -810,6 +810,25 @@ } /* + * Process property change + */ +void +EWMH_ProcessPropertyChange(EWin * ewin, Atom atom_change) +{ + if (atom_change == ECORE_X_ATOM_NET_WM_NAME) + EWMH_GetWindowName(ewin); + else if (atom_change == ECORE_X_ATOM_NET_WM_ICON_NAME) + EWMH_GetWindowIconName(ewin); + else if (atom_change == ECORE_X_ATOM_NET_WM_STRUT_PARTIAL || + atom_change == ECORE_X_ATOM_NET_WM_STRUT) + EWMH_GetWindowStrut(ewin); + else if (atom_change == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY) + EWMH_GetWindowOpacity(ewin); + else if (atom_change == ECORE_X_ATOM_NET_WM_USER_TIME) + EWMH_GetWindowUserTime(ewin); +} + +/* * Process configuration requests from clients */ static int @@ -828,15 +847,8 @@ } void -EWMH_ProcessClientMessage(XClientMessageEvent * ev) +EWMH_ProcessRootClientMessage(XClientMessageEvent * ev) { - EWin *ewin; - int source; - Time ts; - - /* - * The ones that don't target an application window - */ if (ev->message_type == ECORE_X_ATOM_NET_CURRENT_DESKTOP) { DeskGotoNum(ev->data.l[0]); @@ -852,28 +864,24 @@ EwinsShowDesktop(ev->data.l[0]); goto done; } +#if 0 /* These messages are sent to dedicated window */ else if (ev->message_type == ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN) { -#if 0 - Eprintf - ("EWMH_ProcessClientMessage: ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN: %lx: %s\n", - ev->window, (char *)ev->data.l); -#endif + Eprintf("ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN: %lx: %s\n", + ev->window, (char *)ev->data.l); goto done; } else if (ev->message_type == ECORE_X_ATOM_NET_STARTUP_INFO) { -#if 0 - Eprintf - ("EWMH_ProcessClientMessage: ECORE_X_ATOM_NET_STARTUP_INFO : %lx: %s\n", - ev->window, (char *)ev->data.l); -#endif + Eprintf("ECORE_X_ATOM_NET_STARTUP_INFO : %lx: %s\n", + ev->window, (char *)ev->data.l); goto done; } +#endif + +#if 0 /* Obsolete? */ + EWin *ewin; - /* - * The ones that do target an application window - */ ewin = EwinFindByClient(ev->window); if (ewin == NULL) { @@ -898,6 +906,17 @@ } goto done; } +#endif + + done: + ; +} + +void +EWMH_ProcessClientClientMessage(EWin * ewin, XClientMessageEvent * ev) +{ + int source; + Time ts; if (ev->message_type == ECORE_X_ATOM_NET_ACTIVE_WINDOW) { @@ -1084,23 +1103,4 @@ done: ; -} - -/* - * Process received window property change - */ -void -EWMH_ProcessPropertyChange(EWin * ewin, Atom atom_change) -{ - if (atom_change == ECORE_X_ATOM_NET_WM_NAME) - EWMH_GetWindowName(ewin); - else if (atom_change == ECORE_X_ATOM_NET_WM_ICON_NAME) - EWMH_GetWindowIconName(ewin); - else if (atom_change == ECORE_X_ATOM_NET_WM_STRUT_PARTIAL || - atom_change == ECORE_X_ATOM_NET_WM_STRUT) - EWMH_GetWindowStrut(ewin); - else if (atom_change == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY) - EWMH_GetWindowOpacity(ewin); - else if (atom_change == ECORE_X_ATOM_NET_WM_USER_TIME) - EWMH_GetWindowUserTime(ewin); } =================================================================== RCS file: /cvs/e/e16/e/src/gnome.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -3 -r1.69 -r1.70 --- gnome.c 17 Jan 2007 01:10:43 -0000 1.69 +++ gnome.c 15 Apr 2007 14:34:46 -0000 1.70 @@ -751,20 +751,14 @@ } void -GNOME_ProcessClientMessage(XClientMessageEvent * event) +GNOME_ProcessRootClientMessage(XClientMessageEvent * event) { - static Atom a2 = 0, a3 = 0, a4 = 0, a5 = 0; - - EWin *ewin; + static Atom a2 = 0, a3 = 0; if (!a2) a2 = XInternAtom(disp, "_WIN_AREA", False); if (!a3) a3 = XInternAtom(disp, "_WIN_WORKSPACE", False); - if (!a4) - a4 = XInternAtom(disp, "_WIN_LAYER", False); - if (!a5) - a5 = XInternAtom(disp, "_WIN_STATE", False); if (event->message_type == a2) { @@ -776,26 +770,30 @@ DeskGotoNum(event->data.l[0]); return; } +} + +void +GNOME_ProcessClientClientMessage(EWin * ewin, XClientMessageEvent * event) +{ + static Atom a4 = 0, a5 = 0; + + if (!a4) + a4 = XInternAtom(disp, "_WIN_LAYER", False); + if (!a5) + a5 = XInternAtom(disp, "_WIN_STATE", False); + if (event->message_type == a4) { - ewin = EwinFindByClient(event->window); - if (ewin) - { - unsigned int val; - - val = event->data.l[0]; - EoSetLayer(ewin, val); - ecore_x_window_prop_card32_set(EwinGetClientXwin(ewin), a4, - &val, 1); - EwinRaise(ewin); - } + unsigned int val; + + val = event->data.l[0]; + EoSetLayer(ewin, val); + ecore_x_window_prop_card32_set(EwinGetClientXwin(ewin), a4, &val, 1); + EwinRaise(ewin); return; } if (event->message_type == a5) { - ewin = EwinFindByClient(event->window); - if (!ewin) - return; if (event->data.l[0] & WIN_STATE_FIXED_POSITION) { if (event->data.l[1] & WIN_STATE_FIXED_POSITION) =================================================================== RCS file: /cvs/e/e16/e/src/hints.c,v retrieving revision 1.79 retrieving revision 1.80 diff -u -3 -r1.79 -r1.80 --- hints.c 7 Apr 2007 14:18:45 -0000 1.79 +++ hints.c 15 Apr 2007 14:34:46 -0000 1.80 @@ -266,7 +266,7 @@ } void -HintsProcessClientMessage(XClientMessageEvent * event) +HintsProcessClientClientMessage(EWin * ewin, XClientMessageEvent * event) { char *name; @@ -275,12 +275,35 @@ return; if (!memcmp(name, "WM_", 3)) - ICCCM_ProcessClientMessage(event); + ICCCM_ProcessClientClientMessage(ewin, event); else if (!memcmp(name, "_NET_", 5)) - EWMH_ProcessClientMessage(event); + EWMH_ProcessClientClientMessage(ewin, event); #if ENABLE_GNOME else if (!memcmp(name, "_WIN_", 5)) - GNOME_ProcessClientMessage(event); + GNOME_ProcessClientClientMessage(ewin, event); +#endif + XFree(name); +} + +void +HintsProcessRootClientMessage(XClientMessageEvent * event) +{ + char *name; + + name = XGetAtomName(disp, event->message_type); + if (name == NULL) + return; + +#if 0 + if (!memcmp(name, "WM_", 3)) + ICCCM_ProcessRootClientMessage(event); + else +#endif + if (!memcmp(name, "_NET_", 5)) + EWMH_ProcessRootClientMessage(event); +#if ENABLE_GNOME + else if (!memcmp(name, "_WIN_", 5)) + GNOME_ProcessRootClientMessage(event); #endif XFree(name); } =================================================================== RCS file: /cvs/e/e16/e/src/hints.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- hints.h 13 Jan 2007 19:14:27 -0000 1.11 +++ hints.h 15 Apr 2007 14:34:46 -0000 1.12 @@ -51,8 +51,11 @@ void EWMH_SetWindowActions(const EWin * ewin); void EWMH_GetWindowHints(EWin * ewin); void EWMH_DelWindowHints(const EWin * ewin); -void EWMH_ProcessClientMessage(XClientMessageEvent * event); void EWMH_ProcessPropertyChange(EWin * ewin, Atom atom_change); +void EWMH_ProcessClientClientMessage(EWin * ewin, + XClientMessageEvent * + event); +void EWMH_ProcessRootClientMessage(XClientMessageEvent * event); #if ENABLE_GNOME /* gnome.c */ @@ -68,7 +71,10 @@ void GNOME_GetHints(EWin * ewin, Atom atom_change); void GNOME_DelHints(const EWin * ewin); void GNOME_SetHints(Window win_wm_check); -void GNOME_ProcessClientMessage(XClientMessageEvent * event); +void GNOME_ProcessClientClientMessage(EWin * ewin, + XClientMessageEvent * + event); +void GNOME_ProcessRootClientMessage(XClientMessageEvent * event); #endif /* hints.c */ @@ -91,7 +97,10 @@ void HintsGetWindowHints(EWin * ewin); void HintsDelWindowHints(const EWin * ewin); void HintsProcessPropertyChange(EWin * ewin, Atom atom_change); -void HintsProcessClientMessage(XClientMessageEvent * event); +void HintsProcessClientClientMessage(EWin * ewin, + XClientMessageEvent * + event); +void HintsProcessRootClientMessage(XClientMessageEvent * event); Pixmap HintsGetRootPixmap(Win win); void HintsSetRootHints(Win win); @@ -110,7 +119,9 @@ /* icccm.c */ void ICCCM_Init(void); -void ICCCM_ProcessClientMessage(XClientMessageEvent * event); +void ICCCM_ProcessClientClientMessage(EWin * ewin, + XClientMessageEvent * + event); void ICCCM_GetTitle(EWin * ewin, Atom atom_change); void ICCCM_Delete(const EWin * ewin); void ICCCM_Save(const EWin * ewin); =================================================================== RCS file: /cvs/e/e16/e/src/icccm.c,v retrieving revision 1.136 retrieving revision 1.137 diff -u -3 -r1.136 -r1.137 --- icccm.c 13 Jan 2007 19:14:28 -0000 1.136 +++ icccm.c 15 Apr 2007 14:34:46 -0000 1.137 @@ -54,17 +54,12 @@ } void -ICCCM_ProcessClientMessage(XClientMessageEvent * event) +ICCCM_ProcessClientClientMessage(EWin * ewin, XClientMessageEvent * event) { - EWin *ewin; Atom a; if (event->message_type == ECORE_X_ATOM_WM_CHANGE_STATE) { - ewin = EwinFindByClient(event->window); - if (ewin == NULL) - return; - if (event->data.l[0] == IconicState) { EwinIconify(ewin); ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs