aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README14
-rw-r--r--data/themes/default_pointer.edc211
-rw-r--r--data/themes/images/Makefile.am6
-rw-r--r--data/themes/images/e17_pointer.png (renamed from data/themes/images/pointer.png)bin1460 -> 1461 bytes
-rw-r--r--data/themes/images/e17_pointer_mono.pngbin0 -> 230 bytes
-rw-r--r--data/themes/images/pointer_mono.pngbin229 -> 0 bytes
-rw-r--r--src/bin/e_container.c2
-rw-r--r--src/bin/e_container.h1
-rw-r--r--src/bin/e_error.c10
-rw-r--r--src/bin/e_pointer.c37
-rw-r--r--src/bin/e_pointer.h26
11 files changed, 152 insertions, 155 deletions
diff --git a/README b/README
index bc009321d..6408e4842 100644
--- a/README
+++ b/README
@@ -9,3 +9,17 @@ of its own (recommended) like:
./configure --prefix=/usr/local/e17
You will, as usual need to add the subsequent bin dir to your $PATH etc.
+
+NOTES:
+
+* do NOT use -mfpmath=sse in CFLAGS - we are not sure, but it may have bugds
+and screws up things in edje, evas and e17. if your gcc uses this by default
+(which apparently gcc4.x does on amd64), turn it off with a -fpmath=387 in
+your CFLAGS.
+
+* your freetype2 version must be > 2.1.7
+
+* i remember hearing of bugs with later versions of freetype on some
+distributions (2.1.9 and 2.1.10) with certain patches or missing certain
+patches. be aware of this as a possible font problem.
+
diff --git a/data/themes/default_pointer.edc b/data/themes/default_pointer.edc
index 97d843cb7..aa0bcd8fc 100644
--- a/data/themes/default_pointer.edc
+++ b/data/themes/default_pointer.edc
@@ -1,123 +1,124 @@
images {
- image: "pointer.png" COMP;
- image: "pointer_mono.png" COMP;
+ image: "e17_pointer.png" COMP;
+ image: "e17_pointer_mono.png" COMP;
}
- group {
- name: "pointer/enlightenment/default";
- parts {
- part {
- name: "pointer";
- type: IMAGE;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- rel1 {
- relative: 0.0 0.0;
- offset: 0 0;
- }
- rel2 {
- relative: 0.68750 1.0;
- offset: -1 -1;
- }
- image {
- normal: "pointer.png";
- }
+group {
+ name: "pointer/enlightenment/default/color";
+ parts {
+ part {
+ name: "pointer";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 0;
}
- description {
- state: "test" 0.0;
- aspect: 0.75 1.0;
- rel1 {
- relative: 0.0 0.0;
- offset: 8 8;
- }
- rel2 {
- relative: 0.0 0.0;
- offset: 24 32;
- }
- image {
- normal: "pointer_mono.png";
- }
+ rel2 {
+ relative: 0.68750 1.0;
+ offset: -1 -1;
+ }
+ image {
+ normal: "e17_pointer.png";
+ }
+ }
+ description {
+ state: "test" 0.0;
+ aspect: 0.75 1.0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 8 8;
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 24 32;
+ }
+ image {
+ normal: "e17_pointer_mono.png";
+ }
+ }
+ }
+ part {
+ name: "hotspot";
+ type: SWALLOW;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 1 2;
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 1 2;
}
}
- part {
- name: "hotspot";
- type: SWALLOW;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- rel1 {
- relative: 0.0 0.0;
- offset: 1 2;
- }
- rel2 {
- relative: 0.0 0.0;
- offset: 2 3;
- }
+ description {
+ state: "test" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 8 8;
}
- description {
- state: "test" 0.0;
- visible: 0;
- rel1 {
- relative: 0.0 0.0;
- offset: 8 8;
- }
- rel2 {
- relative: 0.0 0.0;
- offset: 9 9;
- }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 8 8;
}
}
}
- programs {
- program {
- name: "test_hot";
- signal: "test";
- source: "";
- action: STATE_SET "test" 0.0;
- target: "hotspot";
- }
- program {
- name: "test_pointer";
- signal: "test";
- source: "";
- action: STATE_SET "test" 0.0;
- target: "pointer";
- }
+ }
+ programs {
+ program {
+ name: "test_hot";
+ signal: "test";
+ source: "";
+ action: STATE_SET "test" 0.0;
+ target: "hotspot";
+ }
+ program {
+ name: "test_pointer";
+ signal: "test";
+ source: "";
+ action: STATE_SET "test" 0.0;
+ target: "pointer";
}
}
- group {
- name: "pointer/enlightenment/mono";
- parts {
- part {
- name: "pointer";
- type: IMAGE;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- aspect: 0.75 1.0;
- image {
- normal: "pointer_mono.png";
- }
+}
+
+group {
+ name: "pointer/enlightenment/default/mono";
+ parts {
+ part {
+ name: "pointer";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ aspect: 0.75 1.0;
+ image {
+ normal: "e17_pointer_mono.png";
}
}
- part {
- name: "hotspot";
- type: SWALLOW;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- rel1 {
- relative: 0.0 0.0;
- offset: 0 0;
- }
- rel2 {
- relative: 0.0 0.0;
- offset: 1 1;
- }
+ }
+ part {
+ name: "hotspot";
+ type: SWALLOW;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 0 0;
}
}
}
}
+}
diff --git a/data/themes/images/Makefile.am b/data/themes/images/Makefile.am
index e5f21edde..3e4aca3ba 100644
--- a/data/themes/images/Makefile.am
+++ b/data/themes/images/Makefile.am
@@ -306,6 +306,6 @@ e17_icon_run.png \
e17_icon_theme_0.png \
e17_icon_theme_glow_0.png \
e17_icon_windows.png \
-e17_icon_lost_windows.png
-
-
+e17_icon_lost_windows.png \
+e17_pointer.png \
+e17_pointer_mono.png
diff --git a/data/themes/images/pointer.png b/data/themes/images/e17_pointer.png
index 3682632f5..634323053 100644
--- a/data/themes/images/pointer.png
+++ b/data/themes/images/e17_pointer.png
Binary files differ
diff --git a/data/themes/images/e17_pointer_mono.png b/data/themes/images/e17_pointer_mono.png
new file mode 100644
index 000000000..207685601
--- /dev/null
+++ b/data/themes/images/e17_pointer_mono.png
Binary files differ
diff --git a/data/themes/images/pointer_mono.png b/data/themes/images/pointer_mono.png
deleted file mode 100644
index 3e3d24d36..000000000
--- a/data/themes/images/pointer_mono.png
+++ /dev/null
Binary files differ
diff --git a/src/bin/e_container.c b/src/bin/e_container.c
index 97af8e581..beccf4237 100644
--- a/src/bin/e_container.c
+++ b/src/bin/e_container.c
@@ -123,7 +123,6 @@ e_container_new(E_Manager *man)
evas_object_show(o);
con->pointer.root = e_pointer_window_set(con->manager->root);
- con->pointer.win = e_pointer_window_set(con->win);
con->num = container_num;
container_num++;
@@ -892,7 +891,6 @@ _e_container_free(E_Container *con)
int i;
if (con->pointer.root) e_object_del(E_OBJECT(con->pointer.root));
- if (con->pointer.win) e_object_del(E_OBJECT(con->pointer.win));
ecore_x_window_del(con->event_win);
if (con->gadman) e_object_del(E_OBJECT(con->gadman));
diff --git a/src/bin/e_container.h b/src/bin/e_container.h
index 58557c0c8..817b51751 100644
--- a/src/bin/e_container.h
+++ b/src/bin/e_container.h
@@ -57,7 +57,6 @@ struct _E_Container
struct {
E_Pointer *root;
- E_Pointer *win;
} pointer;
};
diff --git a/src/bin/e_error.c b/src/bin/e_error.c
index 0b7fcd3fd..952da108f 100644
--- a/src/bin/e_error.c
+++ b/src/bin/e_error.c
@@ -61,7 +61,6 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
Evas_Coord maxw, maxh;
E_Container *con;
Ecore_X_Window win;
- E_Pointer *p;
int x, y;
char *s;
@@ -94,8 +93,6 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
ecore_evas_title_set(ee, "Enlightenment: Low Level Dialog");
// ecore_evas_avoid_damage_set(ee, 1);
e = ecore_evas_get(ee);
- p = e_pointer_window_set(win);
- ecore_evas_data_set(ee, "pointer", p);
o = edje_object_add(e);
if (!e_theme_edje_object_set(o, "base/theme/error", "error/main"))
@@ -423,17 +420,12 @@ _e_error_cb_job_ecore_evas_free(void *data)
{
Ecore_Evas *ee;
Evas_List *shapelist, *l;
- E_Pointer *p;
ee = data;
shapelist = ecore_evas_data_get(ee, "shapes");
- for (l = shapelist; l; l = l->next)
- e_object_del(E_OBJECT(l->data));
+ for (l = shapelist; l; l = l->next) e_object_del(E_OBJECT(l->data));
evas_list_free(shapelist);
- p = ecore_evas_data_get(ee, "pointer");
- e_object_del(E_OBJECT(p));
-
e_canvas_del(ee);
ecore_evas_free(ee);
}
diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c
index 46735fddc..8bbacf52f 100644
--- a/src/bin/e_pointer.c
+++ b/src/bin/e_pointer.c
@@ -56,28 +56,19 @@ e_pointer_window_set(Ecore_X_Window win)
{
if (!e_theme_edje_object_set(o,
"base/theme/pointer",
- "pointer/enlightenment/default"))
- {
- /* error */
- printf("ERROR: No default theme for pointer!\n");
- if (!e_theme_edje_object_set(o,
- "base/theme/pointer",
- "pointer/enlightenment/mono"))
- {
- /* error */
- printf("ERROR: No mono theme for pointer!\n");
- }
- }
+ "pointer/enlightenment/default/color"))
+ e_theme_edje_object_set(o,
+ "base/theme/pointer",
+ "pointer/enlightenment/default/mono");
}
else
{
if (!e_theme_edje_object_set(o,
"base/theme/pointer",
- "pointer/enlightenment/mono"))
- {
- /* error */
- printf("ERROR: No mono theme for pointer!\n");
- }
+ "pointer/enlightenment/default/mono"))
+ e_theme_edje_object_set(o,
+ "base/theme/pointer",
+ "pointer/enlightenment/default/color");
}
/* Create the hotspot object */
@@ -109,15 +100,15 @@ e_pointer_idler_before(void)
p = l->data;
updates = evas_render_updates(p->evas);
- if (updates)
+ if ((updates) || (p->hot.update))
{
Ecore_X_Cursor cur;
cur = ecore_x_cursor_new(p->win, p->pixels, p->w, p->h, p->hot.x, p->hot.y);
ecore_x_window_cursor_set(p->win, cur);
ecore_x_cursor_free(cur);
-
evas_render_updates_free(updates);
+ p->hot.update = 0;
}
}
}
@@ -131,8 +122,12 @@ _e_pointer_cb_move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event
p = data;
evas_object_geometry_get(p->hot_object, &x, &y, NULL, NULL);
- p->hot.x = x;
- p->hot.y = y;
+ if ((p->hot.x != x) || (p->hot.y != y))
+ {
+ p->hot.x = x;
+ p->hot.y = y;
+ p->hot.update = 1;
+ }
}
static void
diff --git a/src/bin/e_pointer.h b/src/bin/e_pointer.h
index 2ddfa400f..7c96cfaa2 100644
--- a/src/bin/e_pointer.h
+++ b/src/bin/e_pointer.h
@@ -13,20 +13,18 @@ typedef struct _E_Pointer E_Pointer;
struct _E_Pointer
{
- E_Object e_obj_inherit;
-
- Evas *evas;
- Evas_Object *pointer_object;
- Evas_Object *hot_object;
- int *pixels;
-
- Ecore_X_Window win;
-
- int w, h;
-
- struct {
- int x, y;
- } hot;
+ E_Object e_obj_inherit;
+
+ Evas *evas;
+ Evas_Object *pointer_object;
+ Evas_Object *hot_object;
+ int *pixels;
+ Ecore_X_Window win;
+ int w, h;
+ struct {
+ int x, y;
+ unsigned char update : 1;
+ } hot;
};
EAPI E_Pointer *e_pointer_window_set(Ecore_X_Window win);