Update cursor size.
authorsebastid <sebastid>
Fri, 2 Sep 2005 08:28:12 +0000 (08:28 +0000)
committersebastid <sebastid@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 2 Sep 2005 08:28:12 +0000 (08:28 +0000)
SVN revision: 16462

src/bin/e_ipc_handlers.h
src/bin/e_pointer.c
src/bin/e_pointer.h

index fe60de0aa05b903a25903229b0706765265e8972..e41e8eefeef7acd97b3d94f6393cb136c0775fc1 100644 (file)
@@ -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)
index 8bbacf52f99bc7b2d8d28a8c6afa2a4c17bd7337..46d3b46fa92dea0cbf1fd1b05541a2c8976edb7c 100644 (file)
@@ -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)
 {
index 7c96cfaa2327a45ffd8b3ef6116b159b80f401a9..24075bb2a96d15752eb1cd04b58e01f1396363b8 100644 (file)
@@ -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