summaryrefslogtreecommitdiffstats
path: root/recipes/e17/e-wm/disable-e-cursor.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/e17/e-wm/disable-e-cursor.patch')
-rw-r--r--recipes/e17/e-wm/disable-e-cursor.patch277
1 files changed, 277 insertions, 0 deletions
diff --git a/recipes/e17/e-wm/disable-e-cursor.patch b/recipes/e17/e-wm/disable-e-cursor.patch
new file mode 100644
index 0000000000..51618434a5
--- /dev/null
+++ b/recipes/e17/e-wm/disable-e-cursor.patch
@@ -0,0 +1,277 @@
+Index: e/src/bin/e_config.c
+===================================================================
+--- e.orig/src/bin/e_config.c
++++ e/src/bin/e_config.c
+@@ -461,6 +461,7 @@ e_config_init(void)
+ E_CONFIG_VAL(D, T, focus_last_focused_per_desktop, INT); /**/
+ E_CONFIG_VAL(D, T, focus_revert_on_hide_or_close, INT); /**/
+ E_CONFIG_VAL(D, T, pointer_slide, INT); /**/
++ E_CONFIG_VAL(D, T, show_cursor, INT); /**/
+ E_CONFIG_VAL(D, T, use_e_cursor, INT); /**/
+ E_CONFIG_VAL(D, T, cursor_size, INT); /**/
+ E_CONFIG_VAL(D, T, menu_autoscroll_margin, INT); /**/
+@@ -705,6 +706,7 @@ e_config_init(void)
+ e_config->focus_last_focused_per_desktop = 1;
+ e_config->focus_revert_on_hide_or_close = 1;
+ e_config->pointer_slide = 1;
++ e_config->show_cursor = 1;
+ e_config->use_e_cursor = 1;
+ e_config->cursor_size = 32;
+ e_config->menu_autoscroll_margin = 0;
+@@ -1570,6 +1572,7 @@ e_config_init(void)
+ E_CONFIG_LIMIT(e_config->focus_last_focused_per_desktop, 0, 1);
+ E_CONFIG_LIMIT(e_config->focus_revert_on_hide_or_close, 0, 1);
+ E_CONFIG_LIMIT(e_config->pointer_slide, 0, 1);
++ E_CONFIG_LIMIT(e_config->show_cursor, 0, 1);
+ E_CONFIG_LIMIT(e_config->use_e_cursor, 0, 1);
+ E_CONFIG_LIMIT(e_config->cursor_size, 0, 1024);
+ E_CONFIG_LIMIT(e_config->menu_autoscroll_margin, 0, 50);
+Index: e/src/modules/conf_mouse_cursor/e_int_config_cursor.c
+===================================================================
+--- e.orig/src/modules/conf_mouse_cursor/e_int_config_cursor.c
++++ e/src/modules/conf_mouse_cursor/e_int_config_cursor.c
+@@ -3,16 +3,25 @@
+ static void *_create_data(E_Config_Dialog *cfd);
+ static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
+ static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
++static void _basic_show_cursor_cb_change(void *data, Evas_Object *obj);
+ static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
+ static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
++static void _advanced_show_cursor_cb_change(void *data, Evas_Object *obj);
+ static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
+
+ struct _E_Config_Dialog_Data
+ {
++ int show_cursor;
+ int use_e_cursor;
+
+ /* Advanced */
+ int cursor_size;
++
++ struct
++ {
++ Evas_Object *radio_use_e_cursor;
++ Evas_Object *slider_cursor_size;
++ } gui;
+ };
+
+ EAPI E_Config_Dialog *
+@@ -41,6 +50,7 @@ e_int_config_cursor(E_Container *con, co
+ static void
+ _fill_data(E_Config_Dialog_Data *cfdata)
+ {
++ cfdata->show_cursor = e_config->show_cursor;
+ cfdata->use_e_cursor = e_config->use_e_cursor;
+ cfdata->cursor_size = e_config->cursor_size;
+ }
+@@ -66,9 +76,11 @@ _basic_apply_data(E_Config_Dialog *cfd,
+ {
+ int changed = 0;
+
++ if (e_config->show_cursor != cfdata->show_cursor) changed = 1;
+ if (e_config->use_e_cursor != cfdata->use_e_cursor) changed = 1;
+
+ e_config->use_e_cursor = cfdata->use_e_cursor;
++ e_config->show_cursor = cfdata->show_cursor;
+ e_config_save_queue();
+
+ if (changed)
+@@ -79,6 +91,11 @@ _basic_apply_data(E_Config_Dialog *cfd,
+ {
+ E_Manager *man;
+ man = l->data;
++ if (man->pointer && !e_config->show_cursor)
++ {
++ e_pointer_hide(man->pointer);
++ continue;
++ }
+ if (man->pointer) e_object_del(E_OBJECT(man->pointer));
+ man->pointer = e_pointer_window_new(man->root, 1);
+ }
+@@ -86,6 +103,17 @@ _basic_apply_data(E_Config_Dialog *cfd,
+ return 1;
+ }
+
++static void
++_basic_show_cursor_cb_change(void *data, Evas_Object *obj)
++{
++ E_Config_Dialog_Data *cfdata;
++
++ cfdata = data;
++ if (!cfdata) return;
++
++ e_widget_disabled_set(cfdata->gui.radio_use_e_cursor, !cfdata->show_cursor);
++}
++
+ static Evas_Object *
+ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
+ {
+@@ -94,8 +122,14 @@ _basic_create_widgets(E_Config_Dialog *c
+
+ o = e_widget_list_add(evas, 0, 0);
+
++ ob = e_widget_check_add(evas, _("Show Cursor"), &(cfdata->show_cursor));
++ e_widget_on_change_hook_set(ob, _basic_show_cursor_cb_change, cfdata);
++ e_widget_list_object_append(o, ob, 1, 1, 0.5);
++
+ of = e_widget_framelist_add(evas, _("Cursor Settings"), 0);
+ rg = e_widget_radio_group_new(&cfdata->use_e_cursor);
++ cfdata->gui.radio_use_e_cursor = rg;
++
+ ob = e_widget_radio_add(evas, _("Use Enlightenment Cursor"), 1, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Use X Cursor"), 0, rg);
+@@ -111,9 +145,11 @@ _advanced_apply_data(E_Config_Dialog *cf
+ {
+ int changed = 0;
+
++ if (e_config->show_cursor != cfdata->show_cursor) changed = 1;
+ if (e_config->use_e_cursor != cfdata->use_e_cursor) changed = 1;
+ if (e_config->cursor_size != cfdata->cursor_size) changed = 1;
+-
++
++ e_config->show_cursor = cfdata->show_cursor;
+ e_config->use_e_cursor = cfdata->use_e_cursor;
+ if (cfdata->cursor_size <= 0) cfdata->cursor_size = 1;
+ e_config->cursor_size = cfdata->cursor_size;
+@@ -128,6 +164,11 @@ _advanced_apply_data(E_Config_Dialog *cf
+ {
+ E_Manager *man;
+ man = l->data;
++ if (man->pointer && !e_config->show_cursor)
++ {
++ e_pointer_hide(man->pointer);
++ continue;
++ }
+ if (man->pointer) e_object_del(E_OBJECT(man->pointer));
+ man->pointer = e_pointer_window_new(man->root, 1);
+ }
+@@ -135,6 +176,18 @@ _advanced_apply_data(E_Config_Dialog *cf
+ return 1;
+ }
+
++static void
++_advanced_show_cursor_cb_change(void *data, Evas_Object *obj)
++{
++ E_Config_Dialog_Data *cfdata;
++
++ cfdata = data;
++ if (!cfdata) return;
++
++ e_widget_disabled_set(cfdata->gui.radio_use_e_cursor, !cfdata->show_cursor);
++ e_widget_disabled_set(cfdata->gui.slider_cursor_size, !cfdata->show_cursor);
++}
++
+ static Evas_Object *
+ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
+ {
+@@ -143,16 +196,27 @@ _advanced_create_widgets(E_Config_Dialog
+
+ o = e_widget_list_add(evas, 0, 0);
+
++ ob = e_widget_check_add(evas, _("Show Cursor"), &(cfdata->show_cursor));
++ e_widget_on_change_hook_set(ob, _advanced_show_cursor_cb_change, cfdata);
++ e_widget_list_object_append(o, ob, 1, 1, 0.5);
++
+ of = e_widget_framelist_add(evas, _("Cursor Settings"), 0);
+ rg = e_widget_radio_group_new(&cfdata->use_e_cursor);
++ cfdata->gui.radio_use_e_cursor = rg;
++
+ ob = e_widget_radio_add(evas, _("Use Enlightenment Cursor"), 1, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Use X Cursor"), 0, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_label_add(evas, _("Cursor Size"));
+ e_widget_framelist_object_append(of, ob);
++
+ ob = e_widget_slider_add(evas, 1, 0, _("%1.0f pixels"), 8, 128, 4, 0, NULL, &(cfdata->cursor_size), 150);
++ cfdata->gui.slider_cursor_size = ob;
++
+ e_widget_framelist_object_append(of, ob);
++
+ e_widget_list_object_append(o, of, 1, 1, 0.5);
++
+ return o;
+ }
+Index: e/src/bin/e_pointer.c
+===================================================================
+--- e.orig/src/bin/e_pointer.c
++++ e/src/bin/e_pointer.c
+@@ -94,6 +94,8 @@ e_pointers_size_set(int size)
+ {
+ Evas_List *l;
+
++ if (!e_config->show_cursor) return;
++
+ for (l = _e_pointers; l; l = l->next)
+ {
+ E_Pointer *p;
+@@ -136,6 +138,13 @@ e_pointers_size_set(int size)
+ }
+
+ EAPI void
++e_pointer_hide(E_Pointer *p)
++{
++ if (p->win) ecore_x_window_cursor_set(p->win, 0);
++ if (p->evas) _e_pointer_canvas_del(p);
++}
++
++EAPI void
+ e_pointer_type_push(E_Pointer *p, void *obj, const char *type)
+ {
+ E_Pointer_Stack *stack;
+@@ -199,6 +208,7 @@ EAPI void
+ e_pointer_idler_before(void)
+ {
+ Evas_List *l;
++ if (!e_config->show_cursor) return;
+
+ for (l = _e_pointers; l; l = l->next)
+ {
+@@ -305,6 +315,8 @@ _e_pointer_cb_move(void *data, Evas *e _
+ E_Pointer *p;
+ Evas_Coord x, y;
+
++ if (!e_config->show_cursor) return;
++
+ p = data;
+ if (!p->e_cursor) return;
+ evas_object_geometry_get(p->hot_object, &x, &y, NULL, NULL);
+@@ -353,6 +365,13 @@ _e_pointer_type_set(E_Pointer *p, const
+ if (p->type) evas_stringshare_del(p->type);
+ p->type = evas_stringshare_add(type);
+
++ /* Do not set type if in "hidden mode" */
++ if (!e_config->show_cursor)
++ {
++ ecore_x_window_cursor_set(p->win, 0);
++ return 1;
++ }
++
+ if (p->e_cursor)
+ {
+ Evas_Object *o;
+Index: e/src/bin/e_config.h
+===================================================================
+--- e.orig/src/bin/e_config.h
++++ e/src/bin/e_config.h
+@@ -166,6 +166,7 @@ struct _E_Config
+ int focus_last_focused_per_desktop; // GUI
+ int focus_revert_on_hide_or_close; // GUI
+ int pointer_slide; // GUI
++ int show_cursor; // GUI
+ int use_e_cursor; // GUI
+ int cursor_size; // GUI
+ int menu_autoscroll_margin; // GUI
+Index: e/src/bin/e_pointer.h
+===================================================================
+--- e.orig/src/bin/e_pointer.h
++++ e/src/bin/e_pointer.h
+@@ -42,6 +42,7 @@ struct _E_Pointer
+ EAPI int e_pointer_init(void);
+ EAPI int e_pointer_shutdown(void);
+ EAPI E_Pointer *e_pointer_window_new(Ecore_X_Window win, int filled);
++EAPI void e_pointer_hide(E_Pointer *p);
+ EAPI void e_pointer_type_push(E_Pointer *p, void *obj, const char *type);
+ EAPI void e_pointer_type_pop(E_Pointer *p, void *obj, const char *type);
+ EAPI void e_pointers_size_set(int size);