diff --git a/src/bin/e_ipc_handlers.h b/src/bin/e_ipc_handlers.h index fe60de0aa..e41e8eefe 100644 --- a/src/bin/e_ipc_handlers.h +++ b/src/bin/e_ipc_handlers.h @@ -4591,8 +4591,8 @@ break; #elif (TYPE == E_WM_IN) START_INT(val, HDL); e_config->cursor_size = val; - /* TODO: Update cursor size on screen! */ E_CONFIG_LIMIT(e_config->cursor_size, 0, 1024); + e_pointers_size_set(e_config->cursor_size); SAVE; END_INT; #elif (TYPE == E_REMOTE_IN) diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c index 8bbacf52f..46d3b46fa 100644 --- a/src/bin/e_pointer.c +++ b/src/bin/e_pointer.c @@ -34,7 +34,7 @@ e_pointer_window_set(Ecore_X_Window win) evas_output_size_set(p->evas, p->w, p->h); evas_output_viewport_set(p->evas, 0, 0, p->w, p->h); - p->pixels = calloc(p->w * p->h, sizeof(int)); + p->pixels = malloc(p->w * p->h * sizeof(int)); einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(p->evas); if (einfo) @@ -88,6 +88,37 @@ e_pointer_window_set(Ecore_X_Window win) return p; } +void +e_pointers_size_set(int size) +{ + Evas_List *l; + + for (l = _e_pointers; l; l = l->next) + { + E_Pointer *p; + Evas_Engine_Info_Buffer *einfo; + + p = l->data; + + p->w = p->h = size; + evas_output_size_set(p->evas, p->w, p->h); + evas_output_viewport_set(p->evas, 0, 0, p->w, p->h); + + p->pixels = realloc(p->pixels, p->w * p->h * sizeof(int)); + + einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(p->evas); + if (einfo) + { + einfo->info.dest_buffer = p->pixels; + einfo->info.dest_buffer_row_bytes = p->w * sizeof(int); + evas_engine_info_set(p->evas, (Evas_Engine_Info *)einfo); + } + + evas_object_move(p->pointer_object, 0, 0); + evas_object_resize(p->pointer_object, p->w, p->h); + } +} + void e_pointer_idler_before(void) { diff --git a/src/bin/e_pointer.h b/src/bin/e_pointer.h index 7c96cfaa2..24075bb2a 100644 --- a/src/bin/e_pointer.h +++ b/src/bin/e_pointer.h @@ -28,6 +28,7 @@ struct _E_Pointer }; EAPI E_Pointer *e_pointer_window_set(Ecore_X_Window win); +EAPI void e_pointers_size_set(int size); EAPI void e_pointer_idler_before(void); #endif