Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: ecore-e16.c ecore-e16.h events.c ewin-ops.c ewins.c ewins.h ewmh.c ipc.c Log Message: Action source handling - continued. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ecore-e16.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- ecore-e16.c 30 Oct 2005 19:40:49 -0000 1.18 +++ ecore-e16.c 13 Nov 2005 01:22:28 -0000 1.19 @@ -847,11 +847,12 @@ Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON; +Ecore_X_Atom ECORE_X_ATOM_NET_WM_USER_TIME; + #if 0 /* Not used */ Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON_GEOMETRY; Ecore_X_Atom ECORE_X_ATOM_NET_WM_PID; Ecore_X_Atom ECORE_X_ATOM_NET_WM_HANDLED_ICONS; -Ecore_X_Atom ECORE_X_ATOM_NET_WM_USER_TIME; Ecore_X_Atom ECORE_X_ATOM_NET_WM_PING; Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST; @@ -863,9 +864,9 @@ Ecore_X_Atom ECORE_X_ATOM_NET_CLOSE_WINDOW; Ecore_X_Atom ECORE_X_ATOM_NET_MOVERESIZE_WINDOW; Ecore_X_Atom ECORE_X_ATOM_NET_WM_MOVERESIZE; +Ecore_X_Atom ECORE_X_ATOM_NET_RESTACK_WINDOW; #if 0 /* Not yet implemented */ -Ecore_X_Atom ECORE_X_ATOM_NET_RESTACK_WINDOW; Ecore_X_Atom ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS; #endif @@ -962,11 +963,12 @@ ECORE_X_ATOM_NET_WM_ICON = _ATOM_GET("_NET_WM_ICON"); + ECORE_X_ATOM_NET_WM_USER_TIME = _ATOM_GET("_NET_WM_USER_TIME"); + #if 0 /* Not used */ ECORE_X_ATOM_NET_WM_ICON_GEOMETRY = _ATOM_GET("_NET_WM_ICON_GEOMETRY"); ECORE_X_ATOM_NET_WM_PID = _ATOM_GET("_NET_WM_PID"); ECORE_X_ATOM_NET_WM_HANDLED_ICONS = _ATOM_GET("_NET_WM_HANDLED_ICONS"); - ECORE_X_ATOM_NET_WM_USER_TIME = _ATOM_GET("_NET_WM_USER_TIME"); ECORE_X_ATOM_NET_WM_PING = _ATOM_GET("_NET_WM_PING"); ECORE_X_ATOM_NET_WM_SYNC_REQUEST = _ATOM_GET("_NET_WM_SYNC_REQUEST"); @@ -977,9 +979,9 @@ ECORE_X_ATOM_NET_CLOSE_WINDOW = _ATOM_GET("_NET_CLOSE_WINDOW"); ECORE_X_ATOM_NET_MOVERESIZE_WINDOW = _ATOM_GET("_NET_MOVERESIZE_WINDOW"); ECORE_X_ATOM_NET_WM_MOVERESIZE = _ATOM_GET("_NET_WM_MOVERESIZE"); + ECORE_X_ATOM_NET_RESTACK_WINDOW = _ATOM_GET("_NET_RESTACK_WINDOW"); #if 0 /* Not yet implemented */ - ECORE_X_ATOM_NET_RESTACK_WINDOW = _ATOM_GET("_NET_RESTACK_WINDOW"); ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS = _ATOM_GET("_NET_REQUEST_FRAME_EXTENTS"); #endif =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ecore-e16.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- ecore-e16.h 10 Jul 2005 00:23:52 -0000 1.12 +++ ecore-e16.h 13 Nov 2005 01:22:28 -0000 1.13 @@ -179,11 +179,12 @@ extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON; +extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_USER_TIME; + #if 0 /* Not used */ extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON_GEOMETRY; extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_PID; extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_HANDLED_ICONS; -extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_USER_TIME; extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_PING; extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST; @@ -195,9 +196,9 @@ extern Ecore_X_Atom ECORE_X_ATOM_NET_CLOSE_WINDOW; extern Ecore_X_Atom ECORE_X_ATOM_NET_MOVERESIZE_WINDOW; extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_MOVERESIZE; +extern Ecore_X_Atom ECORE_X_ATOM_NET_RESTACK_WINDOW; #if 0 /* Not yet implemented */ -extern Ecore_X_Atom ECORE_X_ATOM_NET_RESTACK_WINDOW; extern Ecore_X_Atom ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS; #endif =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/events.c,v retrieving revision 1.107 retrieving revision 1.108 diff -u -3 -r1.107 -r1.108 --- events.c 9 Nov 2005 21:34:41 -0000 1.107 +++ events.c 13 Nov 2005 01:22:28 -0000 1.108 @@ -891,10 +891,10 @@ case ClientMessage: txt = XGetAtomName(disp, ev->xclient.message_type); Eprintf - ("%#08lx EV-%s win=%#lx ev_type=%s(%ld) data[0-3]= %08lx %08lx %08lx %08lx\n", + ("%#08lx EV-%s win=%#lx ev_type=%s(%ld) data: %08lx %08lx %08lx %08lx %08lx\n", ser, name, win, txt, ev->xclient.message_type, ev->xclient.data.l[0], ev->xclient.data.l[1], ev->xclient.data.l[2], - ev->xclient.data.l[3]); + ev->xclient.data.l[3], ev->xclient.data.l[4]); XFree(txt); break; case MappingNotify: =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.c,v retrieving revision 1.78 retrieving revision 1.79 diff -u -3 -r1.78 -r1.79 --- ewin-ops.c 12 Nov 2005 19:55:42 -0000 1.78 +++ ewin-ops.c 13 Nov 2005 01:22:28 -0000 1.79 @@ -626,6 +626,7 @@ if (lst) Efree(lst); + EwinStateUpdate(ewin); HintsSetWindowState(ewin); call_depth--; @@ -700,6 +701,7 @@ if (lst) Efree(lst); + EwinStateUpdate(ewin); HintsSetWindowState(ewin); call_depth--; @@ -734,6 +736,7 @@ EoSetSticky(ewin, 0); EwinMoveToDesktopAt(ewin, DesksGetCurrent(), EoGetX(ewin), EoGetY(ewin)); EwinBorderUpdateState(ewin); + EwinStateUpdate(ewin); HintsSetWindowState(ewin); HintsSetWindowDesktop(ewin); SnapshotEwinUpdate(ewin, SNAP_USE_STICKY); @@ -762,6 +765,7 @@ EoSetSticky(ewin, 1); EwinMoveToDesktopAt(ewin, DesksGetCurrent(), x, y); EwinBorderUpdateState(ewin); + EwinStateUpdate(ewin); HintsSetWindowState(ewin); HintsSetWindowDesktop(ewin); SnapshotEwinUpdate(ewin, SNAP_USE_STICKY); @@ -1072,6 +1076,7 @@ Eprintf("EwinShade-E\n"); #endif + EwinStateUpdate(ewin); HintsSetWindowState(ewin); } @@ -1279,11 +1284,12 @@ Eprintf("EwinUnShade-E\n"); #endif + EwinStateUpdate(ewin); HintsSetWindowState(ewin); } void -EwinSetFullscreen(EWin * ewin, int on) +EwinOpFullscreen(EWin * ewin, int source __UNUSED__, int on) { int x, y, w, h, ww, hh; EWin **lst; @@ -1371,6 +1377,7 @@ RaiseEwin(ewin); EwinMoveResize(ewin, x, y, w, h); } + HintsSetWindowState(ewin); } @@ -1579,12 +1586,13 @@ ewin->props.skip_ext_task = skip; ewin->props.skip_winlist = skip; ewin->props.skip_focuslist = skip; + + EwinStateUpdate(ewin); HintsSetWindowState(ewin); #if ENABLE_GNOME GNOME_SetClientList(); #endif SnapshotEwinUpdate(ewin, SNAP_USE_SKIP_LISTS); - EwinStateUpdate(ewin); } #if 0 /* Unused */ @@ -1592,36 +1600,37 @@ EwinOpSkipTask(EWin * ewin, int skip) { ewin->props.skip_ext_task = skip; + + EwinStateUpdate(ewin); HintsSetWindowState(ewin); #if ENABLE_GNOME GNOME_SetClientList(); #endif SnapshotEwinUpdate(ewin, SNAP_USE_SKIP_LISTS); - EwinStateUpdate(ewin); } void EwinOpSkipFocus(EWin * ewin, int skip) { ewin->props.skip_focuslist = skip; - SnapshotEwinUpdate(ewin, SNAP_USE_SKIP_LISTS); EwinStateUpdate(ewin); + SnapshotEwinUpdate(ewin, SNAP_USE_SKIP_LISTS); } void EwinOpSkipWinlist(EWin * ewin, int skip) { ewin->props.skip_winlist = skip; - SnapshotEwinUpdate(ewin, SNAP_USE_SKIP_LISTS); EwinStateUpdate(ewin); + SnapshotEwinUpdate(ewin, SNAP_USE_SKIP_LISTS); } void EwinOpNeverFocus(EWin * ewin, int on) { ewin->props.never_focus = on; - SnapshotEwinUpdate(ewin, SNAP_USE_FOCUS_NEVER); EwinStateUpdate(ewin); + SnapshotEwinUpdate(ewin, SNAP_USE_FOCUS_NEVER); } #endif @@ -1695,6 +1704,7 @@ } EoSetLayer(ewin, layer); RaiseEwin(ewin); + EwinStateUpdate(ewin); HintsSetWindowState(ewin); SnapshotEwinUpdate(ewin, SNAP_USE_LAYER); } @@ -1783,6 +1793,7 @@ EwinMoveToDesktop(ewin, dsk); RaiseEwin(ewin); EwinBorderUpdateState(ewin); + EwinStateUpdate(ewin); HintsSetWindowState(ewin); HintsSetWindowDesktop(ewin); SnapshotEwinUpdate(ewin, SNAP_USE_STICKY); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v retrieving revision 1.127 retrieving revision 1.128 diff -u -3 -r1.127 -r1.128 --- ewins.c 12 Nov 2005 17:51:11 -0000 1.127 +++ ewins.c 13 Nov 2005 01:22:28 -0000 1.128 @@ -649,19 +649,19 @@ ewin->state.inhibit_move = EwinInhGetUser(ewin, move) || ewin->state.fullscreen; - ewin->state.inhibit_resize = - EwinInhGetUser(ewin, size) || ewin->state.shaded || - ewin->state.fullscreen; + ewin->state.inhibit_resize = ewin->state.iconified || ewin->state.shaded || + EwinInhGetUser(ewin, size) || ewin->state.fullscreen; ewin->state.inhibit_iconify = EwinInhGetWM(ewin, iconify); - ewin->state.inhibit_shade = ewin->state.no_border || ewin->state.fullscreen; + ewin->state.inhibit_shade = ewin->state.no_border || + ewin->state.iconified || ewin->state.fullscreen; ewin->state.inhibit_stick = 0; - ewin->state.inhibit_max_hor = + ewin->state.inhibit_max_hor = ewin->state.inhibit_resize || ewin->props.no_resize_h || ewin->state.fullscreen; - ewin->state.inhibit_max_ver = + ewin->state.inhibit_max_ver = ewin->state.inhibit_resize || ewin->props.no_resize_v || ewin->state.fullscreen; ewin->state.inhibit_fullscreeen = ewin->state.inhibit_move || ewin->state.inhibit_resize; - ewin->state.inhibit_change_desk = 0; + ewin->state.inhibit_change_desk = ewin->state.iconified; ewin->state.inhibit_close = EwinInhGetApp(ewin, close) || EwinInhGetUser(ewin, close); } @@ -783,7 +783,7 @@ if (ewin->state.fullscreen) { - EwinSetFullscreen(ewin, 2); + EwinOpFullscreen(ewin, OPSRC_WM, 2); ewin->state.placed = 1; EwinMoveToDesktopAt(ewin, dsk, EoGetX(ewin), EoGetY(ewin)); ShowEwin(ewin); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ewins.h,v retrieving revision 1.29 retrieving revision 1.30 diff -u -3 -r1.29 -r1.30 --- ewins.h 12 Nov 2005 19:55:42 -0000 1.29 +++ ewins.h 13 Nov 2005 01:22:28 -0000 1.30 @@ -332,7 +332,6 @@ void EwinInstantUnShade(EWin * ewin); void EwinShade(EWin * ewin); void EwinUnShade(EWin * ewin); -void EwinSetFullscreen(EWin * ewin, int on); void EwinMoveToArea(EWin * ewin, int ax, int ay); void EwinOpClose(EWin * ewin, int source); @@ -349,6 +348,7 @@ void EwinOpSetOpacity(EWin * ewin, int source, int opacity); void EwinOpMoveToDesk(EWin * ewin, int source, struct _desk *dsk, int inc); +void EwinOpFullscreen(EWin * ewin, int source, int on); /* finders.c */ EWin *EwinFindByPtr(const EWin * ewin); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ewmh.c,v retrieving revision 1.96 retrieving revision 1.97 diff -u -3 -r1.96 -r1.97 --- ewmh.c 12 Nov 2005 19:55:42 -0000 1.96 +++ ewmh.c 13 Nov 2005 01:22:28 -0000 1.97 @@ -49,6 +49,13 @@ #define _NET_WM_STATE_ADD 1 #define _NET_WM_STATE_TOGGLE 2 +/* Source indication */ +#define _NET_WM_SOURCE_UNKNOWN 0 +#define _NET_WM_SOURCE_APP 1 +#define _NET_WM_SOURCE_USER 2 + +#define OPSRC(src) (((src) == _NET_WM_SOURCE_USER) ? _NET_WM_SOURCE_USER : _NET_WM_SOURCE_APP) + #ifndef ENABLE_HINTS_GNOME Atom _G_WIN_LAUER; #endif @@ -789,6 +796,8 @@ EWMH_ProcessClientMessage(XClientMessageEvent * ev) { EWin *ewin; + int source; + Time ts; /* * The ones that don't target an application window @@ -857,23 +866,29 @@ if (ev->message_type == ECORE_X_ATOM_NET_ACTIVE_WINDOW) { - EwinOpActivate(ewin, OPSRC_UNKNOWN); + source = OPSRC(ev->data.l[0]); + ts = ev->data.l[1]; +/* cwin = ev->data.l[2]; */ + EwinOpActivate(ewin, source); } else if (ev->message_type == ECORE_X_ATOM_NET_CLOSE_WINDOW) { - EwinOpClose(ewin, OPSRC_UNKNOWN); +/* ts = ev->data.l[0]; */ + source = OPSRC(ev->data.l[1]); + EwinOpClose(ewin, source); } else if (ev->message_type == ECORE_X_ATOM_NET_WM_DESKTOP) { + source = OPSRC(ev->data.l[1]); if ((unsigned)ev->data.l[0] == 0xFFFFFFFF) { if (!EoIsSticky(ewin)) - EwinOpStick(ewin, OPSRC_UNKNOWN, 1); + EwinOpStick(ewin, source, 1); } else { if (EoIsSticky(ewin)) - EwinOpStick(ewin, OPSRC_UNKNOWN, 0); + EwinOpStick(ewin, source, 0); else EwinMoveToDesktop(ewin, DeskGet(ev->data.l[0])); } @@ -890,6 +905,7 @@ action = ev->data.l[0]; atom = ev->data.l[1]; atom2 = ev->data.l[2]; + source = OPSRC(ev->data.l[3]); if (atom == ECORE_X_ATOM_NET_WM_STATE_MODAL) { action = do_set(ewin->state.modal, action); @@ -899,12 +915,12 @@ else if (atom == ECORE_X_ATOM_NET_WM_STATE_STICKY) { action = do_set(EoIsSticky(ewin), action); - EwinOpStick(ewin, OPSRC_UNKNOWN, action); + EwinOpStick(ewin, source, action); } else if (atom == ECORE_X_ATOM_NET_WM_STATE_SHADED) { action = do_set(ewin->state.shaded, action); - EwinOpShade(ewin, OPSRC_UNKNOWN, action); + EwinOpShade(ewin, source, action); } else if (atom == ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR) { @@ -958,23 +974,23 @@ if (ewin->state.fullscreen == action) goto done; - EwinSetFullscreen(ewin, action); + EwinOpFullscreen(ewin, source, action); } else if (atom == ECORE_X_ATOM_NET_WM_STATE_ABOVE) { action = do_set(EoGetLayer(ewin) >= 6, action); if (action) - EwinOpSetLayer(ewin, OPSRC_UNKNOWN, 6); + EwinOpSetLayer(ewin, source, 6); else - EwinOpSetLayer(ewin, OPSRC_UNKNOWN, 4); + EwinOpSetLayer(ewin, source, 4); } else if (atom == ECORE_X_ATOM_NET_WM_STATE_BELOW) { action = do_set(EoGetLayer(ewin) <= 2, action); if (action) - EwinOpSetLayer(ewin, OPSRC_UNKNOWN, 2); + EwinOpSetLayer(ewin, source, 2); else - EwinOpSetLayer(ewin, OPSRC_UNKNOWN, 4); + EwinOpSetLayer(ewin, source, 4); } else if (atom == ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION) { @@ -991,14 +1007,16 @@ grav = flags & 0xf; if (grav == 0) grav = ewin->client.grav; - x = (flags & 0x100) ? ev->data.l[1] : EoGetX(ewin); - y = (flags & 0x200) ? ev->data.l[2] : EoGetY(ewin); - w = (flags & 0x400) ? ev->data.l[3] : ewin->client.w; - h = (flags & 0x800) ? ev->data.l[4] : ewin->client.h; + x = (flags & 0x0100) ? ev->data.l[1] : EoGetX(ewin); + y = (flags & 0x0200) ? ev->data.l[2] : EoGetY(ewin); + w = (flags & 0x0400) ? ev->data.l[3] : ewin->client.w; + h = (flags & 0x0800) ? ev->data.l[4] : ewin->client.h; +/* source = OPSRC((flags & 0xF000) >> 12); */ EwinMoveResizeWithGravity(ewin, x, y, w, h, grav); } else if (ev->message_type == ECORE_X_ATOM_NET_WM_MOVERESIZE) { +/* source = OPSRC(ev->data.l[4]); */ switch (ev->data.l[2]) { case _NET_WM_MOVERESIZE_SIZE_TOPLEFT: @@ -1023,6 +1041,11 @@ break; } } + else if (ev->message_type == ECORE_X_ATOM_NET_RESTACK_WINDOW) + { +/* source = OPSRC(ev->data.l[0]); */ + /* FIXME - Implement */ + } done: ; =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v retrieving revision 1.245 retrieving revision 1.246 diff -u -3 -r1.245 -r1.246 --- ipc.c 12 Nov 2005 19:55:42 -0000 1.245 +++ ipc.c 13 Nov 2005 01:22:28 -0000 1.246 @@ -639,7 +639,7 @@ case EWIN_OP_FULLSCREEN: on = ewin->state.fullscreen; if (SetEwinBoolean(wop->name, &on, param1, 1)) - EwinSetFullscreen(ewin, on); + EwinOpFullscreen(ewin, OPSRC_USER, on); break; case EWIN_OP_ZOOM: ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs