Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
E.h borders.c config.c cursors.c ipc.c main.c
Log Message:
Cursor code namespace cleanup.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.305
retrieving revision 1.306
diff -u -3 -r1.305 -r1.306
--- E.h 13 Jul 2004 19:58:57 -0000 1.305
+++ E.h 15 Jul 2004 16:46:04 -0000 1.306
@@ -589,6 +589,7 @@
typedef struct _slideout Slideout;
typedef struct _soundclass SoundClass;
typedef struct _background Background;
+typedef struct _ecursor ECursor;
typedef struct _efont Efont;
@@ -818,19 +819,6 @@
}
Geometry;
-typedef struct _ecursor
-{
- char *name;
-#if 0 /* Not used */
- Imlib_Color fg, bg;
-#endif
- char *file;
- Cursor cursor;
- unsigned int ref_count;
- char inroot;
-}
-ECursor;
-
typedef struct _winpart
{
Geometry geom;
@@ -1922,10 +1910,22 @@
void CoordsHide(void);
/* cursors.c */
-ECursor *CreateECursor(char *name, char *image, int native_id,
- XColor * fg, XColor * bg);
-void ApplyECursor(Window win, ECursor * ec);
-void FreeECursor(ECursor * ec);
+#define ECSR_ROOT 0
+#define ECSR_GRAB 1
+#define ECSR_ACT_MOVE 2
+#define ECSR_ACT_RESIZE 3
+#define ECSR_COUNT 4
+void ECursorsInit(void);
+ECursor *ECursorCreate(const char *name, const char *image,
+ int native_id, XColor * fg, XColor * bg);
+void ECursorApply(ECursor * ec, Window win);
+void ECursorDestroy(ECursor * ec);
+void ECursorIncRefcount(ECursor * ec);
+void ECursorDecRefcount(ECursor * ec);
+int ECursorGetRefcount(ECursor * ec);
+const char *ECursorGetName(ECursor * ec);
+Cursor ECsrGet(int which);
+void ECsrApply(int which, Window win);
/* desktops.c */
void ChangeNumberOfDesktops(int quantity);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v
retrieving revision 1.215
retrieving revision 1.216
diff -u -3 -r1.215 -r1.216
--- borders.c 14 Jul 2004 19:05:30 -0000 1.215
+++ borders.c 15 Jul 2004 16:46:04 -0000 1.216
@@ -1692,7 +1692,7 @@
else
{
ewin->bits[i].win = ECreateWindow(ewin->win, -10, -10, 1, 1, 0);
- ApplyECursor(ewin->bits[i].win, b->part[i].ec);
+ ECursorApply(b->part[i].ec, ewin->bits[i].win);
EMapWindow(disp, ewin->bits[i].win);
/*
* KeyPressMask KeyReleaseMask ButtonPressMask
@@ -2272,7 +2272,7 @@
if (b->part[i].aclass)
b->part[i].aclass->ref_count--;
if (b->part[i].ec)
- b->part[i].ec->ref_count--;
+ ECursorDecRefcount(b->part[i].ec);
}
if (b->num_winparts > 0)
@@ -2354,7 +2354,7 @@
b->part[n - 1].ec = ec;
if (ec)
- ec->ref_count++;
+ ECursorIncRefcount(ec);
b->part[n - 1].ontop = ontop;
b->part[n - 1].flags = flags;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/config.c,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -3 -r1.107 -r1.108
--- config.c 3 Jul 2004 00:58:19 -0000 1.107
+++ config.c 15 Jul 2004 16:46:05 -0000 1.108
@@ -2074,9 +2074,7 @@
switch (ii1)
{
case CONFIG_CLOSE:
- ec = CreateECursor(name, file, native_id, &xclr, &xclr2);
- if (ec)
- AddItem(ec, ec->name, 0, LIST_TYPE_ECURSOR);
+ ec = ECursorCreate(name, file, native_id, &xclr, &xclr2);
if (name)
Efree(name);
if (file)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/cursors.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- cursors.c 4 May 2004 19:04:26 -0000 1.17
+++ cursors.c 15 Jul 2004 16:46:05 -0000 1.18
@@ -21,9 +21,25 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "E.h"
+#include "X11/cursorfont.h"
+
+struct _ecursor
+{
+ char *name;
+#if 0 /* Not used */
+ Imlib_Color fg, bg;
+#endif
+ char *file;
+ Cursor cursor;
+ unsigned int ref_count;
+#if 0 /* Not used */
+ char inroot;
+#endif
+};
ECursor *
-CreateECursor(char *name, char *image, int native_id, XColor * fg, XColor * bg)
+ECursorCreate(const char *name, const char *image, int native_id, XColor * fg,
+ XColor * bg)
{
Cursor curs;
Pixmap pmap, mask;
@@ -80,21 +96,43 @@
#endif
ec->cursor = curs;
ec->ref_count = 0;
+#if 0 /* Not used */
ec->inroot = 0;
+#endif
+
+ AddItem(ec, ec->name, 0, LIST_TYPE_ECURSOR);
return ec;
}
void
-ApplyECursor(Window win, ECursor * ec)
+ECursorApply(ECursor * ec, Window win)
{
if (!ec)
return;
XDefineCursor(disp, win, ec->cursor);
+#if 0 /* Not used */
+ if (win == VRoot.win)
+ ec->inroot = 1;
+#endif
+}
+
+static Cursor
+ECursorGetByName(const char *name, unsigned int fallback)
+{
+ ECursor *ec;
+
+ ec = FindItem(name, 0, LIST_FINDBY_NAME, LIST_TYPE_ECURSOR);
+ if (!ec)
+ return fallback;
+
+ ECursorIncRefcount(ec);
+
+ return ec->cursor;
}
void
-FreeECursor(ECursor * ec)
+ECursorDestroy(ECursor * ec)
{
if (!ec)
return;
@@ -114,3 +152,55 @@
Efree(ec->file);
Efree(ec);
}
+
+void
+ECursorIncRefcount(ECursor * ec)
+{
+ if (ec)
+ ec->ref_count++;
+}
+
+void
+ECursorDecRefcount(ECursor * ec)
+{
+ if (ec)
+ ec->ref_count--;
+}
+
+const char *
+ECursorGetName(ECursor * ec)
+{
+ return (ec) ? ec->name : 0;
+}
+
+int
+ECursorGetRefcount(ECursor * ec)
+{
+ return (ec) ? ec->ref_count : 0;
+}
+
+static Cursor ECsrs[ECSR_COUNT];
+
+Cursor
+ECsrGet(int which)
+{
+ return (which >= 0 && which < ECSR_COUNT) ? ECsrs[which] : None;
+}
+
+void
+ECsrApply(int which, Window win)
+{
+ XDefineCursor(disp, win, ECsrGet(which));
+}
+
+/*
+ * Set up some basic cursors
+ */
+void
+ECursorsInit(void)
+{
+ ECsrs[ECSR_ROOT] = ECursorGetByName("DEFAULT", XC_arrow);
+ ECsrs[ECSR_GRAB] = ECursorGetByName("GRAB", XC_circle);
+ ECsrs[ECSR_ACT_MOVE] = ECursorGetByName("ACTION_MOVE", XC_X_cursor);
+ ECsrs[ECSR_ACT_RESIZE] = ECursorGetByName("ACTION_RESIZE", XC_sizing);
+}
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.169
retrieving revision 1.170
diff -u -3 -r1.169 -r1.170
--- ipc.c 13 Jul 2004 19:58:58 -0000 1.169
+++ ipc.c 15 Jul 2004 16:46:05 -0000 1.170
@@ -853,7 +853,7 @@
ec = (ECursor *) FindItem(param1, 0, LIST_FINDBY_NAME,
LIST_TYPE_ECURSOR);
if (ec)
- FreeECursor(ec);
+ ECursorDestroy(ec);
}
else if (!strcmp(param2, "modify"))
{
@@ -866,7 +866,7 @@
LIST_TYPE_ECURSOR);
if (ec)
Esnprintf(buf, sizeof(buf), "%u references remain",
- ec->ref_count);
+ ECursorGetRefcount(ec));
}
else
{
@@ -1548,7 +1548,7 @@
for (i = 0; i < num; i++)
{
buf2[0] = 0;
- Esnprintf(buf2, sizeof(buf2), "%s\n", lst[i]->name);
+ Esnprintf(buf2, sizeof(buf2), "%s\n", ECursorGetName(lst[i]));
if (buf)
buf = realloc(buf, strlen(buf) + strlen(buf2) + 1);
else
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/main.c,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -3 -r1.98 -r1.99
--- main.c 30 Jun 2004 13:04:18 -0000 1.98
+++ main.c 15 Jul 2004 16:46:06 -0000 1.99
@@ -53,7 +53,6 @@
main(int argc, char **argv)
{
int i;
- ECursor *ec = NULL;
struct utsname ubuf;
char *str;
@@ -304,13 +303,8 @@
Mode.queue_up = DRAW_QUEUE_ENABLE;
/* of course, we have to set the cursors */
- ec = FindItem("DEFAULT", 0, LIST_FINDBY_NAME, LIST_TYPE_ECURSOR);
- if (ec)
- {
- ApplyECursor(VRoot.win, ec);
- ec->ref_count++;
- ec->inroot = 1;
- }
+ ECursorsInit();
+ ECsrApply(ECSR_ROOT, VRoot.win);
Mode.wm.startup = 0;
Mode.wm.save_ok = Mode.wm.master;
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs