Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
Tag: branch-exp
E.h events.c ewin-ops.c ewins.c gnome.c icccm.c menus.c mwm.c
session.c x.c
Log Message:
Fix menus, cleanups.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.314.2.62
retrieving revision 1.314.2.63
diff -u -3 -r1.314.2.62 -r1.314.2.63
--- E.h 21 Nov 2004 22:15:19 -0000 1.314.2.62
+++ E.h 23 Nov 2004 23:46:20 -0000 1.314.2.63
@@ -692,6 +692,7 @@
#define EWIN_TYPE_PAGER 0x08
#define EwinIsMapped(ewin) (ewin->state >= EWIN_STATE_MAPPED)
+#define EwinIsInternal(ewin) (ewin->type != EWIN_TYPE_NORMAL)
struct _ewin
{
@@ -701,7 +702,6 @@
int lx, ly, lw, lh, ll;
char type;
char state;
- char internal;
char toggle;
Window win_container;
WinClient client;
@@ -1047,7 +1047,6 @@
int start_x, start_y;
char have_place_grab;
char action_inhibit;
- char justclicked;
EWin *focuswin;
EWin *mouse_over_ewin;
EWin *context_ewin;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/events.c,v
retrieving revision 1.69.2.18
retrieving revision 1.69.2.19
diff -u -3 -r1.69.2.18 -r1.69.2.19
--- events.c 31 Oct 2004 19:47:11 -0000 1.69.2.18
+++ events.c 23 Nov 2004 23:46:25 -0000 1.69.2.19
@@ -322,13 +322,9 @@
/* This shouldn't be here */
GrabPointerRelease();
- if (MenusActive() && (!Mode.justclicked))
- MenusHide();
-
if ((Mode.slideout) && (pslideout))
SlideoutHide(Mode.slideout);
- Mode.justclicked = 0;
Mode.last_bpress = 0;
Mode.action_inhibit = 0;
break;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ewin-ops.c,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -u -3 -r1.1.2.17 -r1.1.2.18
--- ewin-ops.c 30 Oct 2004 15:04:27 -0000 1.1.2.17
+++ ewin-ops.c 23 Nov 2004 23:46:26 -0000 1.1.2.18
@@ -1222,8 +1222,8 @@
if (on)
{
- if (ewin->internal || ewin->iconified || ewin->props.donthide ||
- ewin->client.transient)
+ if (EwinIsInternal(ewin) || ewin->iconified || ewin->props.donthide
+ || ewin->client.transient)
continue;
ewin->st.showingdesk = 1;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ewins.c,v
retrieving revision 1.1.2.29
retrieving revision 1.1.2.30
diff -u -3 -r1.1.2.29 -r1.1.2.30
--- ewins.c 21 Nov 2004 22:15:20 -0000 1.1.2.29
+++ ewins.c 23 Nov 2004 23:46:26 -0000 1.1.2.30
@@ -156,7 +156,8 @@
Eprintf("EwinDestroy %#lx state=%d\n", ewin->client.win, ewin->state);
RemoveItem(NULL, ewin->client.win, LIST_FINDBY_ID, LIST_TYPE_EWIN);
- EUnregisterWindow(disp, ewin->client.win);
+ EventCallbackUnregister(ewin->client.win, 0, EwinHandleEventsClient, ewin);
+
EobjListStackDel(&ewin->o);
EobjListFocusDel(&ewin->o);
@@ -541,7 +542,6 @@
ewin = EwinCreate(win);
ewin->border = border;
- ewin->internal = 1;
ewin->type = type;
switch (type)
{
@@ -1735,7 +1735,7 @@
for (i = num - 1; i >= 0; i--)
{
ewin = lst[i];
- if (ewin->internal)
+ if (EwinIsInternal(ewin))
continue;
/* This makes E determine the client window stacking at exit */
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/gnome.c,v
retrieving revision 1.39.2.5
retrieving revision 1.39.2.6
diff -u -3 -r1.39.2.5 -r1.39.2.6
--- gnome.c 21 Oct 2004 17:25:46 -0000 1.39.2.5
+++ gnome.c 23 Nov 2004 23:46:26 -0000 1.39.2.6
@@ -290,8 +290,10 @@
Pixmap mask;
EDBUG(6, "GNOME_GetHintIcons");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!atom_get)
atom_get = XInternAtom(disp, XA_WIN_ICONS, False);
if ((atom_change) && (atom_change != atom_get))
@@ -317,8 +319,10 @@
int size;
EDBUG(6, "GNOME_GetHintLayer");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!atom_get)
atom_get = XInternAtom(disp, XA_WIN_LAYER, False);
if ((atom_change) && (atom_change != atom_get))
@@ -341,8 +345,10 @@
int size;
EDBUG(6, "GNOME_GetHintState");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!atom_get)
atom_get = XInternAtom(disp, XA_WIN_STATE, False);
if ((atom_change) && (atom_change != atom_get))
@@ -372,8 +378,10 @@
/* have nothing interesting to do with an app state (lamp) right now */
EDBUG(6, "GNOME_GetHintAppState");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!atom_get)
atom_get = XInternAtom(disp, XA_WIN_APP_STATE, False);
if ((atom_change) && (atom_change != atom_get))
@@ -395,8 +403,10 @@
int *desk;
EDBUG(6, "GNOME_GetHintDesktop");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!atom_get)
atom_get = XInternAtom(disp, XA_WIN_WORKSPACE, False);
if ((atom_change) && (atom_change != atom_get))
@@ -421,8 +431,10 @@
/* E doesn't really care about these hints right now */
EDBUG(6, "GNOME_GetHint");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!atom_get)
atom_get = XInternAtom(disp, XA_WIN_HINTS, False);
if ((atom_change) && (atom_change != atom_get))
@@ -511,8 +523,10 @@
int size;
EDBUG(6, "GNOME_GetExpandedSize");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!atom_get)
atom_get = XInternAtom(disp, XA_WIN_EXPANDED_SIZE, False);
if ((atom_change) && (atom_change != atom_get))
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/icccm.c,v
retrieving revision 1.76.2.13
retrieving revision 1.76.2.14
diff -u -3 -r1.76.2.13 -r1.76.2.14
--- icccm.c 30 Oct 2004 15:04:27 -0000 1.76.2.13
+++ icccm.c 23 Nov 2004 23:46:28 -0000 1.76.2.14
@@ -133,7 +133,7 @@
}
XFree(xtp.value);
}
- else if (!ewin->internal)
+ else if (!EwinIsInternal(ewin))
{
ewin->icccm.wm_name = Estrdup("No Title");
}
@@ -152,7 +152,7 @@
EDBUG(6, "ICCCM_GetColormap");
- if (ewin->internal)
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
win = ewin->client.win;
@@ -173,7 +173,7 @@
void
ICCCM_Delete(EWin * ewin)
{
- if (ewin->internal)
+ if (EwinIsInternal(ewin))
{
EUnmapWindow(disp, ewin->client.win);
return;
@@ -189,7 +189,7 @@
void
ICCCM_Save(EWin * ewin)
{
- if (ewin->internal)
+ if (EwinIsInternal(ewin))
return;
ecore_x_icccm_send_save_yourself(ewin->client.win);
@@ -350,7 +350,7 @@
{
Window win = ewin->client.win;
- if (!ewin->internal)
+ if (!EwinIsInternal(ewin))
XAddToSaveSet(disp, win);
}
@@ -359,7 +359,7 @@
{
Window win = ewin->client.win;
- if (!ewin->internal)
+ if (!EwinIsInternal(ewin))
{
XSetWindowBorderWidth(disp, win, 0);
ewin->client.bw = 0;
@@ -397,7 +397,7 @@
ICCCM_GetColormap(ewin);
- if (ewin->internal)
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
if ((ewin->client.cmap) && (Mode.current_cmap != ewin->client.cmap))
@@ -769,7 +769,7 @@
EDBUG(6, "ICCCM_GetHints");
- if (ewin->internal)
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
MWM_GetHints(ewin, atom_change);
@@ -1014,8 +1014,10 @@
CARD32 c[8];
EDBUG(6, "ICCCM_SetEInfo");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
+
if (!a)
a = XInternAtom(disp, "ENL_INTERNAL_DATA", False);
if (!aa)
@@ -1124,7 +1126,8 @@
unsigned char *puc;
EDBUG(6, "ICCCM_GetEInfo");
- if (ewin->internal)
+
+ if (EwinIsInternal(ewin))
EDBUG_RETURN(0);
if (!a)
@@ -1185,7 +1188,7 @@
lst = EwinListGetAll(&num);
for (i = 0; i < num; i++)
- if (!(lst[i]->internal))
+ if (!EwinIsInternal(lst[i]))
ICCCM_SetEInfo(lst[i]);
ICCCM_SetMainEInfo();
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v
retrieving revision 1.147.2.20
retrieving revision 1.147.2.21
diff -u -3 -r1.147.2.20 -r1.147.2.21
--- menus.c 20 Nov 2004 20:48:58 -0000 1.147.2.20
+++ menus.c 23 Nov 2004 23:46:39 -0000 1.147.2.21
@@ -23,12 +23,15 @@
#include "E.h"
#include <X11/keysym.h>
+#define DEBUG_MENU_EVENTS 0
+
struct
{
EWin *context_ewin;
int current_depth;
Menu *list[256];
char clicked;
+ char just_shown;
Window cover_win;
Window win_covered;
} Mode_menus;
@@ -98,6 +101,7 @@
static void MenuHandleEvents(XEvent * ev, void *m);
static void MenuItemHandleEvents(XEvent * ev, void *mi);
+static void MenuMaskerHandleEvents(XEvent * ev, void *prm);
static Menu *active_menu = NULL;
static MenuItem *active_item = NULL;
@@ -109,6 +113,9 @@
rc = XGrabKeyboard(disp, win, False, GrabModeAsync, GrabModeAsync,
CurrentTime);
+#if DEBUG_MENU_EVENTS
+ Eprintf("GrabKeyboard %#lx %d\n", win, rc);
+#endif
}
static void
@@ -117,6 +124,9 @@
int rc;
rc = XUngrabKeyboard(disp, CurrentTime);
+#if DEBUG_MENU_EVENTS
+ Eprintf("UngrabKeyboard %d\n", rc);
+#endif
}
Menu *
@@ -225,6 +235,8 @@
ewin->Close = MenuEwinClose;
}
+static void MenuShowMasker(Menu * m);
+
static void
MenuShow(Menu * m, char noshow)
{
@@ -235,6 +247,7 @@
int head_num = 0;
EDBUG(5, "MenuShow");
+
if ((m->num <= 0) || (!m->style))
EDBUG_RETURN_;
@@ -369,15 +382,25 @@
if (!FindMenu(m->win))
AddItem(m, m->name, m->win, LIST_TYPE_MENU);
+ Mode_menus.just_shown = 1;
+
m->shown = 1;
if (Mode_menus.current_depth == 0)
{
Mode_menus.context_ewin = GetContextEwin();
+#if 0
Eprintf("Mode_menus.context_ewin set %s\n",
EwinGetTitle(Mode_menus.context_ewin));
+#endif
ecore_x_sync();
+#if 1 /* ??? */
+ Mode_menus.list[0] = m;
+ Mode_menus.current_depth = 1;
+ MenuShowMasker(m);
+#endif
GrabKeyboard(m->win);
}
+ m->ref_count++;
EDBUG_RETURN_;
}
@@ -1003,6 +1026,8 @@
LeaveWindowMask);
XRestackWindows(disp, wl, 2);
EMapWindow(disp, Mode_menus.cover_win);
+ EventCallbackRegister(Mode_menus.cover_win, 0, MenuMaskerHandleEvents,
+ NULL);
}
}
@@ -1029,6 +1054,7 @@
{
if (!FindEwinByMenu(m)) /* Don't show if already shown */
MenuShow(m, 0);
+#if 0
Mode_menus.list[0] = m;
Mode_menus.current_depth = 1;
MenuShowMasker(m);
@@ -1039,6 +1065,7 @@
Mode_menus.list[0] = NULL;
Mode_menus.current_depth = 0;
MenuHideMasker();
+#endif
}
EDBUG_RETURN_;
@@ -1139,9 +1166,11 @@
MoveEwin(ewin, lx, ly);
ShowEwin(ewin);
}
+#if 0
Mode_menus.list[0] = m;
Mode_menus.current_depth = 1;
MenuShowMasker(m);
+#endif
}
EDBUG_RETURN(m);
@@ -1171,6 +1200,7 @@
{
if (!FindEwinByMenu(m))
MenuShow(m, 0);
+#if 0
Mode_menus.list[0] = m;
Mode_menus.current_depth = 1;
MenuShowMasker(m);
@@ -1180,6 +1210,7 @@
Mode_menus.list[0] = NULL;
Mode_menus.current_depth = 0;
MenuHideMasker();
+#endif
}
EDBUG_RETURN_;
@@ -1369,31 +1400,7 @@
Menu *m;
EWin *ewin;
-#if 1 /* Previously in HandleMouseDown() ??? */
- if (MenusActive() && (!Mode_menus.clicked))
- {
- unsigned int bmask = 0, evmask;
-
- evmask =
- ev->xbutton.state & (Button1Mask | Button2Mask | Button3Mask |
- Button4Mask | Button5Mask);
- if (ev->xbutton.button == 1)
- bmask = Button1Mask;
- else if (ev->xbutton.button == 2)
- bmask = Button2Mask;
- else if (ev->xbutton.button == 3)
- bmask = Button3Mask;
- else if (ev->xbutton.button == 4)
- bmask = Button4Mask;
- else if (ev->xbutton.button == 5)
- bmask = Button5Mask;
-
- if (bmask != evmask)
- Mode_menus.clicked = 1;
- else
- EDBUG_RETURN_;
- }
-#endif
+ Mode_menus.just_shown = 0;
m = mi->menu;
mi->state = STATE_CLICKED;
@@ -1405,9 +1412,11 @@
unsigned int mw, mh;
EWin *ewin2;
+#if 0
Mode_menus.list[0] = m;
Mode_menus.current_depth = 1;
MenuShowMasker(m);
+#endif
ewin = FindEwinByMenu(m);
if (ewin)
{
@@ -1443,16 +1452,12 @@
MenuItemEventMouseUp(MenuItem * mi, XEvent * ev __UNUSED__)
{
Menu *m;
- EWin *ewin;
-#if 1 /* Previously in HandleMouseUp() ??? */
- if ((((float)(ev->xbutton.time - Mode.last_time) / 1000) < 0.5)
- && (MenusActive()) && (!Mode_menus.clicked))
+ if (Mode_menus.just_shown)
{
- Mode_menus.clicked = 1;
- Mode.justclicked = 1;
+ Mode_menus.just_shown = 0;
+ return;
}
-#endif
m = mi->menu;
@@ -1460,7 +1465,7 @@
{
mi->state = STATE_HILITED;
MenuDrawItem(m, mi, 1);
- if ((mi->params) && (!Mode.justclicked))
+ if ((mi->params) /* && (!Mode_menus.just_shown) */ )
{
MenusHide();
SetContextEwin(Mode_menus.context_ewin);
@@ -1469,41 +1474,6 @@
return;
}
}
-
- if (MenusActive() && (!Mode_menus.clicked))
- {
- if (!m)
- {
- Window ww;
-
- ww = WindowAtXY(Mode.x, Mode.y);
- if ((ewin = FindEwinByChildren(ww)))
- {
- int i;
-
- for (i = 0; i < ewin->border->num_winparts; i++)
- {
- if (ww == ewin->bits[i].win)
- {
- if ((ewin->border->part[i].flags & FLAG_TITLE) &&
- (ewin->type == EWIN_TYPE_MENU))
- {
- ((Menu *) (ewin->data))->stuck = 1;
- i = ewin->border->num_winparts;
- }
- }
- }
- }
- }
- MenusHide();
- return;
- }
-
- if (MenusActive() && (!Mode.justclicked))
- {
- MenusHide();
- return;
- }
}
#if 0 /* Was in HandleMotion() */
@@ -1885,6 +1855,9 @@
{
Menu *m = (Menu *) prm;
+#if DEBUG_MENU_EVENTS
+ Eprintf("MenuHandleEvents %d\n", ev->type);
+#endif
switch (ev->type)
{
case KeyPress:
@@ -1892,6 +1865,9 @@
break;
case ButtonRelease:
break;
+ case EnterNotify:
+ GrabKeyboard(m->win);
+ break;
}
}
@@ -1900,6 +1876,9 @@
{
MenuItem *mi = (MenuItem *) prm;
+#if DEBUG_MENU_EVENTS
+ Eprintf("MenuItemHandleEvents %d\n", ev->type);
+#endif
switch (ev->type)
{
case ButtonPress:
@@ -1917,6 +1896,20 @@
}
}
+static void
+MenuMaskerHandleEvents(XEvent * ev, void *prm __UNUSED__)
+{
+#if DEBUG_MENU_EVENTS
+ Eprintf("MenuMaskerHandleEvents %d\n", ev->type);
+#endif
+ switch (ev->type)
+ {
+ case ButtonRelease:
+ MenusHide();
+ break;
+ }
+}
+
/*
* Configuration load/save
*/
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/mwm.c,v
retrieving revision 1.21
retrieving revision 1.21.2.1
diff -u -3 -r1.21 -r1.21.2.1
--- mwm.c 5 Jul 2004 11:25:20 -0000 1.21
+++ mwm.c 23 Nov 2004 23:46:42 -0000 1.21.2.1
@@ -78,7 +78,7 @@
EDBUG(6, "MWM_GetHints");
- if (ewin->internal)
+ if (EwinIsInternal(ewin))
EDBUG_RETURN_;
if (!_MOTIF_WM_HINTS)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/session.c,v
retrieving revision 1.75.2.15
retrieving revision 1.75.2.16
diff -u -3 -r1.75.2.15 -r1.75.2.16
--- session.c 20 Oct 2004 21:04:11 -0000 1.75.2.15
+++ session.c 23 Nov 2004 23:46:42 -0000 1.75.2.16
@@ -88,7 +88,7 @@
for (i = 0; i < num; i++)
{
ewin = lst[i];
- if ((!(ewin->internal))
+ if ((!EwinIsInternal(ewin))
&& ((ewin->icccm.wm_command) || (ewin->session_id)))
{
x = 0;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/x.c,v
retrieving revision 1.71.2.12
retrieving revision 1.71.2.13
diff -u -3 -r1.71.2.12 -r1.71.2.13
--- x.c 26 Sep 2004 20:09:51 -0000 1.71.2.12
+++ x.c 23 Nov 2004 23:46:44 -0000 1.71.2.13
@@ -73,7 +73,7 @@
XFree(xid->rects);
#if 0
if (xid->cbl.lst)
- Eprintf("EventCallbacksUnregister: %p %#lx\n", xid, win);
+ Eprintf("EXidDestroy: %p %#lx\n", xid, xid->win);
#endif
if (xid->cbl.lst)
Efree(xid->cbl.lst);
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs