Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/pager


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:


now this is better for the deskname popup :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -3 -r1.113 -r1.114
--- e_mod_main.c        6 Sep 2005 05:32:18 -0000       1.113
+++ e_mod_main.c        6 Sep 2005 07:29:47 -0000       1.114
@@ -34,6 +34,7 @@
 static Pager_Win  *_pager_desk_border_find(Pager_Desk *pd, E_Border *border);
 static Pager_Desk *_pager_face_desk_find(Pager_Face *face, E_Desk *desk);
 static void        _pager_face_desk_select(Pager_Desk *pd);
+static void        _pager_popup_free(Pager_Popup *pp);
 
 static void        _pager_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, 
E_Gadman_Change change);
 static int         _pager_face_cb_event_border_resize(void *data, int type, 
void *event);
@@ -195,17 +196,21 @@
 #define D _conf_edd
    E_CONFIG_LIST(D, T, faces, _conf_face_edd);
    E_CONFIG_VAL(D, T, deskname_pos, UINT);
-   E_CONFIG_VAL(D, T, speed, UINT);
+   E_CONFIG_VAL(D, T, popup_speed, DOUBLE);
    E_CONFIG_VAL(D, T, popup, UINT);
 
    pager->conf = e_config_domain_load("module.pager", _conf_edd);
+   
    if (!pager->conf)
      {
        pager->conf = E_NEW(Config, 1);
        pager->conf->deskname_pos = PAGER_DESKNAME_NONE;
-       pager->conf->speed = 12;
+       pager->conf->popup_speed = 1.0;
        pager->conf->popup = 1;
      }
+   E_CONFIG_LIMIT(pager->conf->deskname_pos, PAGER_DESKNAME_NONE, 
PAGER_DESKNAME_RIGHT);
+   E_CONFIG_LIMIT(pager->conf->popup_speed, 0.1, 10.0);
+   E_CONFIG_LIMIT(pager->conf->popup, 0, 1);
 
    _pager_config_menu_new(pager);
 
@@ -356,35 +361,35 @@
    e_menu_item_label_set(mi, _("Very Slow"));
    e_menu_item_radio_set(mi, 1);
    e_menu_item_radio_group_set(mi, 1);
-   if (pager->conf->speed == 60) e_menu_item_toggle_set(mi, 1);
+   if (pager->conf->popup_speed == 6.0) e_menu_item_toggle_set(mi, 1);
    e_menu_item_callback_set(mi, _pager_menu_cb_speed_very_slow, pager);
    
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Slow"));
    e_menu_item_radio_set(mi, 1);
    e_menu_item_radio_group_set(mi, 1);
-   if (pager->conf->speed == 40) e_menu_item_toggle_set(mi, 1);
+   if (pager->conf->popup_speed == 4.0) e_menu_item_toggle_set(mi, 1);
    e_menu_item_callback_set(mi, _pager_menu_cb_speed_slow, pager);
 
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Normal"));
    e_menu_item_radio_set(mi, 1);
    e_menu_item_radio_group_set(mi, 1);
-   if (pager->conf->speed == 12) e_menu_item_toggle_set(mi, 1);
+   if (pager->conf->popup_speed == 2.0) e_menu_item_toggle_set(mi, 1);
    e_menu_item_callback_set(mi, _pager_menu_cb_speed_normal, pager);
 
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Fast"));
    e_menu_item_radio_set(mi, 1);
    e_menu_item_radio_group_set(mi, 1);
-   if (pager->conf->speed == 7) e_menu_item_toggle_set(mi, 1);
+   if (pager->conf->popup_speed == 1.0) e_menu_item_toggle_set(mi, 1);
    e_menu_item_callback_set(mi, _pager_menu_cb_speed_fast, pager);
    
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Very Fast"));
    e_menu_item_radio_set(mi, 1);
    e_menu_item_radio_group_set(mi, 1);
-   if (pager->conf->speed == 3) e_menu_item_toggle_set(mi, 1);
+   if (pager->conf->popup_speed == 0.5) e_menu_item_toggle_set(mi, 1);
    e_menu_item_callback_set(mi, _pager_menu_cb_speed_very_fast, pager);
 
    /* Submenus */
@@ -902,6 +907,18 @@
 }
 
 static void
+_pager_popup_free(Pager_Popup *pp)
+{
+   pp->src_face->current_popup = NULL;
+   if (pp->timer) ecore_timer_del(pp->timer);
+   pp->face->pager->faces = evas_list_remove(pp->face->pager->faces, pp->face);
+   evas_object_del(pp->bg_object);
+   _pager_face_free(pp->face);
+   e_object_del(E_OBJECT(pp->popup));
+   free(pp);
+}
+
+static void
 _pager_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change 
change)
 {
    Pager_Face *face;
@@ -1407,12 +1424,15 @@
      {
        Pager_Popup *pp;
        Evas_Coord   w, h;
-       char         buf[1024];
 
        _pager_face_desk_select(desk);
 
        if (!face->pager->conf->popup) return 1;
 
+       pp = face->current_popup;
+       face->current_popup = NULL;
+       if (pp) _pager_popup_free(pp);
+       
        pp = E_NEW(Pager_Popup, 1);
        if (!pp) return 1;
 
@@ -1424,28 +1444,40 @@
             return 1;
          }
        e_popup_layer_set(pp->popup, 999);
-
-       /* FIXME, this doesn't resize nicely when the name is shown! */
+       pp->src_face = face;
+       
+       face->current_popup = pp;
+       
        evas_object_geometry_get(face->pager_object, NULL, NULL, &w, &h);
-       w *= 3;
-       h *= 3;
 
        pp->face = _pager_face_new(face->pager, face->zone, pp->popup->evas);
        evas_object_move(pp->face->pager_object, 0, 0);
        evas_object_resize(pp->face->pager_object, w, h);
 
-       snprintf(buf, sizeof(buf), desk->desk->name);
-       edje_object_part_text_set(pp->face->pager_object, "desktop_name", buf);
-       edje_object_signal_emit(pp->face->pager_object, "desktop_name,top", "");
+//     edje_object_signal_emit(pp->face->pager_object, "desktop_name,top", "");
 
-       e_popup_edje_bg_object_set(pp->popup, pp->face->pager_object);
+       pp->bg_object = edje_object_add(pp->face->evas);
+       e_theme_edje_object_set(pp->bg_object, "base/theme/modules/pager",
+                               "widgets/pager/popup");   
+       edje_object_part_text_set(pp->bg_object, "text", desk->desk->name);
+       evas_object_show(pp->bg_object);
+       edje_extern_object_min_size_set(pp->face->pager_object, w, h);
+       edje_object_part_swallow(pp->bg_object, "pager", 
pp->face->pager_object);
+       edje_object_calc_force(pp->face->pager_object);
+       edje_object_size_min_calc(pp->bg_object, &w, &h);
+
+       evas_object_move(pp->bg_object, 0, 0);
+       evas_object_resize(pp->bg_object, w, h);
+       e_popup_edje_bg_object_set(pp->popup, pp->bg_object);
+//     e_popup_edje_bg_object_set(pp->popup, pp->face->pager_object);
        e_popup_move_resize(pp->popup,
                            pp->popup->zone->x + ((pp->popup->zone->w - w) / 2),
                            pp->popup->zone->y + ((pp->popup->zone->h - h) / 2),
                            w, h);
        e_popup_show(pp->popup);
 
-       ecore_timer_add(face->pager->conf->speed / 10.0, 
_pager_popup_cb_timeout, pp);
+       pp->timer = ecore_timer_add(face->pager->conf->popup_speed,
+                                   _pager_popup_cb_timeout, pp);
      }
 
    return 1;
@@ -1457,12 +1489,7 @@
    Pager_Popup *pp;
 
    pp = data;
-
-   pp->face->pager->faces = evas_list_remove(pp->face->pager->faces, pp->face);
-   _pager_face_free(pp->face);
-   e_object_del(E_OBJECT(pp->popup));
-   free(pp);
-
+   _pager_popup_free(pp);
    return 0;
 } 
 static int
@@ -1883,7 +1910,7 @@
 {
    Pager *pager;
    pager = data;
-   pager->conf->speed = 60;
+   pager->conf->popup_speed = 6.0;
    e_config_save_queue();
 }
 
@@ -1892,7 +1919,7 @@
 {
    Pager *pager;
    pager = data;
-   pager->conf->speed = 40;
+   pager->conf->popup_speed = 4.0;
    e_config_save_queue();
 }
 
@@ -1901,7 +1928,7 @@
 {
    Pager *pager;
    pager = data;
-   pager->conf->speed = 12;
+   pager->conf->popup_speed = 2.0;
    e_config_save_queue();
 }
 
@@ -1910,7 +1937,7 @@
 {
    Pager *pager;
    pager = data;
-   pager->conf->speed = 7;
+   pager->conf->popup_speed = 1.0;
    e_config_save_queue();
 }
 
@@ -1919,7 +1946,7 @@
 {
    Pager *pager;
    pager = data;
-   pager->conf->speed = 3;
+   pager->conf->popup_speed = 0.5;
    e_config_save_queue();
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_mod_main.h        6 Sep 2005 05:32:18 -0000       1.27
+++ e_mod_main.h        6 Sep 2005 07:29:47 -0000       1.28
@@ -29,7 +29,7 @@
    /* Position of desktop name */
    unsigned int deskname_pos;
    /* How the popup is shown on desk change */
-   unsigned int speed;
+   double popup_speed;
    /* Show popup? */
    unsigned int popup;
 };
@@ -96,6 +96,8 @@
    Ecore_Event_Handler *ev_handler_container_resize;
 
    E_Drop_Handler *drop_handler;
+   
+   Pager_Popup *current_popup;
 };
 
 struct _Pager_Desk
@@ -125,7 +127,9 @@
 struct _Pager_Popup
 {
    E_Popup     *popup;
-   Pager_Face  *face;
+   Pager_Face  *src_face, *face;
+   Evas_Object *bg_object;
+   Ecore_Timer *timer;
 };
 
 EAPI void *e_modapi_init     (E_Module *module);




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to