Hi all,

Got another two patches for the illume keyboard:

1: illume.compilewarnings.diff fixes the compiler warnings about
implicit function declarations and also a type in e_md_win.c

2: The keyboard uses for the match/dict/layout popups a e_scrollpane with
an e_ilist inside it. The calculation of the size of the ilist seem to
go wrong (at least for me).  The ilist is always a bit to large and
thus the scrollframe always shows the scrollbars.
In illume.e_widget_ilist.diff I changed it to use the e_widget_ilist
instead, this solves the problem.

On Mon, Dec 01, 2008 at 04:48:05PM +0100, I wrote:
> Attached are two patches related to the illume keyboard:
>  - When the ctrl and/or alt key are pressed they can't be deselected
>    again by pressing them, illume.ctrlalt.diff fixes this.
>  - it is possible to open both the layout and dict/matches ilists
>    over each other.
>    With illume.lists.diff the other open lists are closed when a new
>    list is show.  It also closes the matcheslist when a char is
>    entered/removed (though it probably would be beter to update the
>    matcheslist with the new matches).

Didn't receive any reply on my earlier patches.
I've attached them again, now I made them from the root of the trunk
(instead of from the illume dir as I did earlier).

kind regards,
Peter van de Werken
-- 
Everything fears time, but time fears the pyramids
    -- ancient Egyptian proverb
Index: e/src/modules/illume/e_mod_win.c
===================================================================
--- e/src/modules/illume/e_mod_win.c	(revision 38272)
+++ e/src/modules/illume/e_mod_win.c	(working copy)
@@ -140,7 +140,7 @@
    busycover = e_busycover_new(zone, e_module_dir_get(m));
 
    flaunch = e_flaunch_new(zone, e_module_dir_get(m));
-   e_flaunch_desktop_exec_callabck_set(flaunch, _desktop_run);
+   e_flaunch_desktop_exec_cb_set(flaunch, _desktop_run);
    
    handlers = eina_list_append
      (handlers, ecore_event_handler_add
Index: e/src/modules/illume/e_simplelock.c
===================================================================
--- e/src/modules/illume/e_simplelock.c	(revision 38272)
+++ e/src/modules/illume/e_simplelock.c	(working copy)
@@ -151,7 +151,7 @@
 {
    Eina_List	     *managers, *l, *l2, *l3;
 
-   if (locks) return;
+   if (locks) return 1;
    for (l = e_manager_list(); l; l = l->next)
      {
 	E_Manager *man;
Index: e/src/modules/illume/e_mod_layout.c
===================================================================
--- e/src/modules/illume/e_mod_layout.c	(revision 38272)
+++ e/src/modules/illume/e_mod_layout.c	(working copy)
@@ -3,6 +3,7 @@
 #include "e_mod_layout.h"
 #include "e_kbd.h"
 #include "e_cfg.h"
+#include "e_slipshelf.h"
 
 /* FIXME: THIS CODE IS UGLY. MUST FIX!!!!! */
 
Index: e/src/modules/illume/e_busycover.c
===================================================================
--- e/src/modules/illume/e_busycover.c	(revision 38272)
+++ e/src/modules/illume/e_busycover.c	(working copy)
@@ -1,6 +1,7 @@
 #include "e.h"
 #include "e_busycover.h"
 #include "e_cfg.h"
+#include "e_slipshelf.h"
 
 // FIXME: make code work - place busycover in safe area
 // FIXME: make theme for it
Index: e/src/modules/illume/e_cfg.c
===================================================================
--- e/src/modules/illume/e_cfg.c	(revision 38272)
+++ e/src/modules/illume/e_cfg.c	(working copy)
@@ -1,6 +1,7 @@
 #include "config.h"
 #include "e.h"
 #include "e_cfg.h"
+#include "e_pwr.h"
 #include "e_slipshelf.h"
 #include "e_mod_win.h"
 
Index: e/src/modules/illume/e_kbd_int.c
===================================================================
--- e/src/modules/illume/e_kbd_int.c	(revision 38272)
+++ e/src/modules/illume/e_kbd_int.c	(working copy)
@@ -3,6 +3,7 @@
 #include "e_kbd_int.h"
 #include "e_kbd_send.h"
 #include "e_cfg.h"
+#include "e_slipshelf.h"
 
 enum {
    NORMAL   = 0,
Index: e/src/modules/illume/e_kbd_int.c
===================================================================
--- e/src/modules/illume/e_kbd_int.c	(revision 38272)
+++ e/src/modules/illume/e_kbd_int.c	(working copy)
@@ -1358,13 +1358,15 @@
 }
 
 static void
-_e_kbd_int_cb_dictlist_item_sel(void *data, void *data2)
+_e_kbd_int_cb_dictlist_item_sel(void *data)
 {
    E_Kbd_Int *ki;
    const char *str;
+   int i;
    
    ki = data;
-   str = data2;
+   i = e_widget_ilist_selected_get(ki->dictlist.ilist_obj);
+   str = eina_list_nth(ki->dictlist.matches, i);
    e_kbd_buf_clear(ki->kbuf);
    if (ki->layout.state & (SHIFT | CTRL | ALT))
      {
@@ -1402,13 +1404,8 @@
 		      "e/modules/kbd/match/default");
    ki->dictlist.base_obj = o;
    
-   o = e_scrollframe_add(ki->dictlist.popup->evas);
-   edje_object_part_swallow(ki->dictlist.base_obj, "e.swallow.content", o);
-   evas_object_show(o);
-   ki->dictlist.scrollframe_obj = o;
-   
-   o = e_ilist_add(ki->dictlist.popup->evas);
-   e_ilist_selector_set(o, 1);
+   o = e_widget_ilist_add(ki->dictlist.popup->evas, 32 * e_scale, 32 * e_scale, NULL);
+   e_widget_ilist_selector_set(o, 1);
    e_ilist_freeze(o);
    ki->dictlist.ilist_obj = o;
 
@@ -1442,8 +1439,8 @@
 			    *pp = 0;
 			    str = evas_stringshare_add(file);
 			    ki->dictlist.matches = eina_list_append(ki->dictlist.matches, str);
-			    e_ilist_append(o, NULL, p, 0, _e_kbd_int_cb_dictlist_item_sel,
-					   NULL, ki, (char *)str);
+			    e_widget_ilist_append(o, NULL, p, _e_kbd_int_cb_dictlist_item_sel,
+						  ki, NULL);
 			    free(p);
 			 }
 		    }
@@ -1481,8 +1478,8 @@
 			    *pp = 0;
 			    str = evas_stringshare_add(file);
 			    ki->dictlist.matches = eina_list_append(ki->dictlist.matches, str);
-			    e_ilist_append(o, NULL, p, 0, _e_kbd_int_cb_dictlist_item_sel,
-					   NULL, ki, (char *)str);
+			    e_widget_ilist_append(o, NULL, p, _e_kbd_int_cb_dictlist_item_sel,
+						  ki, NULL);
 			    free(p);
 			 }
 		    }
@@ -1491,26 +1488,19 @@
 	  }
 	ecore_list_destroy(files);
      }
-   e_ilist_thaw(o);
+   e_widget_ilist_thaw(o);
+   e_widget_ilist_go(o);
    
-   e_ilist_min_size_get(o, &mw, &mh);
-   evas_object_resize(o, ki->win->w, mh);
-   e_scrollframe_child_set(ki->dictlist.scrollframe_obj, o);
-   
-   e_scrollframe_child_viewport_size_get(ki->dictlist.scrollframe_obj, &vw, &vh);
-   evas_object_geometry_get(ki->dictlist.scrollframe_obj, NULL, NULL, &w, &h);
-   if (mw > vw) mw = mw + (w - vw);
-   else if (mw < vw) evas_object_resize(o, vw, mh);
-   evas_object_show(o);
-   
-   edje_extern_object_min_size_set(ki->dictlist.scrollframe_obj, mw, mh);
+   e_widget_ilist_preferred_size_get(o, &mw, &mh);
+
+   edje_extern_object_min_size_set(ki->dictlist.ilist_obj, mw, mh);
    edje_object_part_swallow(ki->dictlist.base_obj, "e.swallow.content",
-			    ki->dictlist.scrollframe_obj);
+		   	    ki->dictlist.ilist_obj);
    edje_object_size_min_calc(ki->dictlist.base_obj, &mw, &mh);
    
-   edje_extern_object_min_size_set(ki->dictlist.scrollframe_obj, 0, 0);
+   edje_extern_object_min_size_set(ki->dictlist.ilist_obj, 0, 0);
    edje_object_part_swallow(ki->dictlist.base_obj, "e.swallow.content",
-			    ki->dictlist.scrollframe_obj);
+		   	    ki->dictlist.ilist_obj);
    
    e_slipshelf_safe_app_region_get(ki->win->border->zone, &sx, &sy, &sw, &sh);
    mw = ki->win->w;
@@ -1538,13 +1528,13 @@
 }
 
 static void
-_e_kbd_int_cb_matchlist_item_sel(void *data, void *data2)
+_e_kbd_int_cb_matchlist_item_sel(void *data)
 {
    E_Kbd_Int *ki;
    const char *str;
    
    ki = data;
-   str = data2;
+   str = e_widget_ilist_selected_label_get(ki->matchlist.ilist_obj);
    _e_kbd_int_string_send(ki, str);
    e_kbd_buf_clear(ki->kbuf);
    e_kbd_send_keysym_press("space", 0);
@@ -1574,16 +1564,12 @@
 		      "e/modules/kbd/match/default");
    ki->matchlist.base_obj = o;
    
-   o = e_scrollframe_add(ki->matchlist.popup->evas);
+   o = e_widget_ilist_add(ki->matchlist.popup->evas, 32 * e_scale, 32 * e_scale, NULL);
+   e_widget_ilist_selector_set(o, 1);
+   ki->matchlist.ilist_obj = o;
    edje_object_part_swallow(ki->matchlist.base_obj, "e.swallow.content", o);
    evas_object_show(o);
-   ki->matchlist.scrollframe_obj = o;
    
-   o = e_ilist_add(ki->matchlist.popup->evas);
-   e_ilist_selector_set(o, 1);
-   e_ilist_freeze(o);
-   ki->matchlist.ilist_obj = o;
-
    for (l = e_kbd_buf_string_matches_get(ki->kbuf); l; l = l->next)
      {
 	const char *str;
@@ -1595,36 +1581,29 @@
 	       {
 		  str = evas_stringshare_add(str);
 		  ki->matchlist.matches = eina_list_append(ki->matchlist.matches, str);
-		  e_ilist_append(o, NULL, str, 0, _e_kbd_int_cb_matchlist_item_sel,
-				 NULL, ki, (char *)str);
+		  e_widget_ilist_append(o, NULL, str, _e_kbd_int_cb_matchlist_item_sel,
+					ki, NULL);
 	       }
 	  }
 	str = l->data;
 	str = evas_stringshare_add(str);
 	ki->matchlist.matches = eina_list_append(ki->matchlist.matches, str);
-	e_ilist_append(o, NULL, str, 0, _e_kbd_int_cb_matchlist_item_sel,
-		       NULL, ki, (char *)str);
+	e_widget_ilist_append(o, NULL, str, _e_kbd_int_cb_matchlist_item_sel,
+			      ki, NULL);
      }
-   e_ilist_thaw(o);
+   e_widget_ilist_thaw(o);
+   e_widget_ilist_go(o);
    
-   e_ilist_min_size_get(o, &mw, &mh);
-   evas_object_resize(o, ki->win->w, mh);
-   e_scrollframe_child_set(ki->matchlist.scrollframe_obj, o);
+   e_widget_ilist_preferred_size_get(o, &mw, &mh);
    
-   e_scrollframe_child_viewport_size_get(ki->matchlist.scrollframe_obj, &vw, &vh);
-   evas_object_geometry_get(ki->matchlist.scrollframe_obj, NULL, NULL, &w, &h);
-   if (mw > vw) mw = mw + (w - vw);
-   else if (mw < vw) evas_object_resize(o, vw, mh);
-   evas_object_show(o);
-   
-   edje_extern_object_min_size_set(ki->matchlist.scrollframe_obj, mw, mh);
+   edje_extern_object_min_size_set(ki->matchlist.ilist_obj, mw, mh);
    edje_object_part_swallow(ki->matchlist.base_obj, "e.swallow.content",
-			    ki->matchlist.scrollframe_obj);
+		   	    ki->matchlist.ilist_obj);
    edje_object_size_min_calc(ki->matchlist.base_obj, &mw, &mh);
    
-   edje_extern_object_min_size_set(ki->matchlist.scrollframe_obj, 0, 0);
+   edje_extern_object_min_size_set(ki->matchlist.ilist_obj, 0, 0);
    edje_object_part_swallow(ki->matchlist.base_obj, "e.swallow.content",
-			    ki->matchlist.scrollframe_obj);
+		   	    ki->matchlist.ilist_obj);
    
    e_slipshelf_safe_app_region_get(ki->win->border->zone, &sx, &sy, &sw, &sh);
    mw = ki->win->w;
@@ -1674,13 +1653,15 @@
 }
 
 static void
-_e_kbd_int_cb_layoutlist_item_sel(void *data, void *data2)
+_e_kbd_int_cb_layoutlist_item_sel(void *data)
 {
    E_Kbd_Int *ki;
    E_Kbd_Int_Layout *kil;
+   int i;
    
    ki = data;
-   kil = data2;
+   i = e_widget_ilist_selected_get(ki->layoutlist.ilist_obj);
+   kil = eina_list_nth(ki->layouts, i);
    _e_kbd_int_layout_select(ki, kil);
    _e_kbd_int_layoutlist_down(ki);
 }
@@ -1690,7 +1671,7 @@
 {
    Eina_List *l;
    Evas_Object *o, *o2;
-   Evas_Coord w, h, mw, mh, vw, vh;
+   Evas_Coord mw, mh;
    int sx, sy, sw, sh;
    
    if (ki->layoutlist.popup) return;
@@ -1701,16 +1682,13 @@
 		      "e/modules/kbd/match/default");
    ki->layoutlist.base_obj = o;
    
-   o = e_scrollframe_add(ki->layoutlist.popup->evas);
+   o = e_widget_ilist_add(ki->layoutlist.popup->evas, 32 * e_scale, 32 * e_scale, NULL);
+   ki->layoutlist.ilist_obj = o;
+   e_widget_ilist_selector_set(o, 1);
    edje_object_part_swallow(ki->layoutlist.base_obj, "e.swallow.content", o);
    evas_object_show(o);
-   ki->layoutlist.scrollframe_obj = o;
    
-   o = e_ilist_add(ki->layoutlist.popup->evas);
-   e_ilist_selector_set(o, 1);
-   e_ilist_freeze(o);
-   ki->layoutlist.ilist_obj = o;
-   
+   e_widget_ilist_freeze(o);
    for (l = ki->layouts; l; l = l->next)
      {
 	E_Kbd_Int_Layout *kil;
@@ -1731,29 +1709,23 @@
 	       e_icon_file_set(o2, kil->icon);
 	  }
 	evas_object_show(o2);
-	e_ilist_append(o, o2, kil->name, 0, _e_kbd_int_cb_layoutlist_item_sel,
-		       NULL, ki, kil);
+	e_widget_ilist_append(o, o2, kil->name,
+			      _e_kbd_int_cb_layoutlist_item_sel, ki, NULL);
      }
-   e_ilist_thaw(o);
+   e_widget_ilist_thaw(o);
+   e_widget_ilist_go(o);
    
-   e_ilist_min_size_get(o, &mw, &mh);
-   evas_object_resize(o, ki->win->w, mh);
-   e_scrollframe_child_set(ki->layoutlist.scrollframe_obj, o);
+   e_widget_ilist_preferred_size_get(o, &mw, &mh);
    
-   e_scrollframe_child_viewport_size_get(ki->layoutlist.scrollframe_obj, &vw, &vh);
-   evas_object_geometry_get(ki->layoutlist.scrollframe_obj, NULL, NULL, &w, &h);
-   if (mw > vw) mw = mw + (w - vw);
-   else if (mw < vw) evas_object_resize(o, vw, mh);
-   evas_object_show(o);
-   
-   edje_extern_object_min_size_set(ki->layoutlist.scrollframe_obj, mw, mh);
+   edje_extern_object_min_size_set(ki->layoutlist.ilist_obj, mw, mh);
    edje_object_part_swallow(ki->layoutlist.base_obj, "e.swallow.content",
-			    ki->layoutlist.scrollframe_obj);
+		   	    ki->layoutlist.ilist_obj);
+
    edje_object_size_min_calc(ki->layoutlist.base_obj, &mw, &mh);
    
-   edje_extern_object_min_size_set(ki->layoutlist.scrollframe_obj, 0, 0);
+   edje_extern_object_min_size_set(ki->layoutlist.ilist_obj, 0, 0);
    edje_object_part_swallow(ki->layoutlist.base_obj, "e.swallow.content",
-			    ki->layoutlist.scrollframe_obj);
+			    ki->layoutlist.ilist_obj);
    
    e_slipshelf_safe_app_region_get(ki->win->border->zone, &sx, &sy, &sw, &sh);
    mw = ki->win->w;
Index: e/src/modules/illume/e_kbd_int.h
===================================================================
--- e/src/modules/illume/e_kbd_int.h	(revision 38272)
+++ e/src/modules/illume/e_kbd_int.h	(working copy)
@@ -49,16 +49,16 @@
    } down;
    struct {
       E_Popup          *popup;
-      Evas_Object      *base_obj, *scrollframe_obj, *ilist_obj;
+      Evas_Object      *base_obj, *ilist_obj;
    } layoutlist;
    struct {
       E_Popup          *popup;
-      Evas_Object      *base_obj, *scrollframe_obj, *ilist_obj;
+      Evas_Object      *base_obj, *ilist_obj;
       Eina_List        *matches;
    } matchlist;
    struct {
       E_Popup          *popup;
-      Evas_Object      *base_obj, *scrollframe_obj, *ilist_obj;
+      Evas_Object      *base_obj, *ilist_obj;
       Eina_List        *matches;
    } dictlist;
    struct {
Index: e/src/modules/illume/e_kbd_int.c
===================================================================
--- e/src/modules/illume/e_kbd_int.c	(revision 38272)
+++ e/src/modules/illume/e_kbd_int.c	(working copy)
@@ -376,7 +376,6 @@
 	else ki->layout.state |= CTRL;
 	if (e_kbd_buf_actual_string_get(ki->kbuf)) _e_kbd_int_buf_send(ki);
 	e_kbd_buf_clear(ki->kbuf);
-	ki->layout.state |= CTRL;
 	_e_kbd_int_layout_state_update(ki);
 	_e_kbd_int_matches_update(ki);
 	return;
@@ -387,7 +386,6 @@
 	else ki->layout.state |= ALT;
 	if (e_kbd_buf_actual_string_get(ki->kbuf)) _e_kbd_int_buf_send(ki);
 	e_kbd_buf_clear(ki->kbuf);
-	ki->layout.state |= ALT;
 	_e_kbd_int_layout_state_update(ki);
 	_e_kbd_int_matches_update(ki);
 	return;
Index: e/src/modules/illume/e_kbd_int.c
===================================================================
--- e/src/modules/illume/e_kbd_int.c	(revision 38272)
+++ e/src/modules/illume/e_kbd_int.c	(working copy)
@@ -348,6 +348,8 @@
    edje_extern_object_min_size_set(ki->box_obj, 0, mh);
    edje_object_part_swallow(ki->base_obj, "e.swallow.label", ki->box_obj);
    evas_event_thaw(ki->win->evas);
+   
+   _e_kbd_int_matchlist_down(ki);
 }
 
 static void
@@ -1522,6 +1524,9 @@
    evas_object_show(ki->dictlist.base_obj);
    e_popup_edje_bg_object_set(ki->dictlist.popup, ki->dictlist.base_obj);
    e_popup_show(ki->dictlist.popup);
+   
+   _e_kbd_int_layoutlist_down(ki);
+   _e_kbd_int_matchlist_down(ki);
 }
 
 static void
@@ -1636,6 +1641,9 @@
    evas_object_show(ki->matchlist.base_obj);
    e_popup_edje_bg_object_set(ki->matchlist.popup, ki->matchlist.base_obj);
    e_popup_show(ki->matchlist.popup);
+   
+   _e_kbd_int_dictlist_down(ki);
+   _e_kbd_int_layoutlist_down(ki);
 }
 
 static void
@@ -1765,6 +1773,9 @@
    evas_object_show(ki->layoutlist.base_obj);
    e_popup_edje_bg_object_set(ki->layoutlist.popup, ki->layoutlist.base_obj);
    e_popup_show(ki->layoutlist.popup);
+   
+   _e_kbd_int_dictlist_down(ki);
+   _e_kbd_int_matchlist_down(ki);
 }
 
 static void

Attachment: signature.asc
Description: Digital signature

------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to