- fix segv with complete input
authorHannes Janetzek <hannes.janetzek@gmail.com>
Tue, 18 May 2010 15:12:32 +0000 (15:12 +0000)
committerHannes Janetzek <hannes.janetzek@gmail.com>
Tue, 18 May 2010 15:12:32 +0000 (15:12 +0000)
- plugin can now set item selected by item change event
- better slide dir parameter
- fix comparison with unitialized values, thanks valgrind

SVN revision: 48981

src/modules/everything-apps/e_mod_main.c
src/modules/everything-files/e_mod_main.c
src/modules/everything-windows/e_mod_main.c
src/modules/everything/evry.c
src/modules/everything/evry_plug_view_thumb.c

index 4e13bc3..058a022 100644 (file)
@@ -258,8 +258,13 @@ _icon_get(Evry_Item *it, Evas *e)
    Evas_Object *o = NULL;
 
    if (app->desktop)
-     o = e_util_desktop_icon_add(app->desktop, 128, e);
+     {
+       o = evry->icon_theme_get(app->desktop->icon, e);
 
+       if (!o)
+         o = e_util_desktop_icon_add(app->desktop, 128, e);
+     }
+   
    if (!o)
      o = evry->icon_theme_get("system-run", e);
 
@@ -271,6 +276,7 @@ _item_free(Evry_Item *item)
 {
    GET_APP(app, item);
 
+   
    if (app->desktop)
      efreet_desktop_free(app->desktop);
    if (app->file)
@@ -426,8 +432,8 @@ _add_desktop_list(Plugin *p, Eina_List *apps, const char *input)
             exec = ecore_file_file_get(desktop->exec);
             if (exec && (end = strchr(exec, '%')))
               {
-                 strncpy(buf, exec, end - exec - 1);
-                 buf[end - exec] = 0;
+                 strncpy(buf, exec, (end - exec) - 1);
+                 buf[(end - exec)-1] = '\0';
                  m1 = evry->fuzzy_match(buf, input);
               }
             else
index 874af27..092e99b 100644 (file)
@@ -146,9 +146,10 @@ static void
 _item_free(Evry_Item *it)
 {
    GET_FILE(file, it);
-   if (file->url) eina_stringshare_del(file->url);
-   if (file->path) eina_stringshare_del(file->path);
-   if (file->mime) eina_stringshare_del(file->mime);
+
+   IF_RELEASE(file->url);
+   IF_RELEASE(file->path);
+   IF_RELEASE(file->mime);
 
    E_FREE(file);
 }
index 4b9b845..399da6d 100644 (file)
@@ -15,7 +15,7 @@
 static const Evry_API *evry = NULL;
 static Evry_Module *evry_module = NULL;
 
-static Evry_Plugin *p1;
+static Evry_Plugin *_plug;
 static Eina_List *handlers = NULL;
 static Eina_Hash *border_hash = NULL;
 static Eina_List *_actions = NULL;
@@ -348,7 +348,6 @@ _act_border(Evry_Action *act)
 static int
 _plugins_init(const Evry_API *_api)
 {
-   Evry_Plugin *p;
    Evry_Action *act;
    
    if (evry_module->active)
@@ -359,12 +358,12 @@ _plugins_init(const Evry_API *_api)
    if (!evry->api_version_check(EVRY_API_VERSION))
      return EINA_FALSE;
 
-   p1 = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Windows"), NULL, EVRY_TYPE_BORDER,
-                       _begin, _cleanup, _fetch, NULL);
-
-   p1->transient = EINA_TRUE;
-   evry->plugin_register(p1, EVRY_PLUGIN_SUBJECT, 2);
-
+   _plug = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Windows"),
+                          "preferences-system-windows",
+                          EVRY_TYPE_BORDER,
+                          _begin, _cleanup, _fetch, NULL);
+   _plug->transient = EINA_TRUE;
+   evry->plugin_register(_plug, EVRY_PLUGIN_SUBJECT, 2);
 
    act = EVRY_ACTION_NEW(_("Switch to Window"),
                         EVRY_TYPE_BORDER, 0, "go-next",
@@ -412,7 +411,7 @@ _plugins_shutdown(void)
 
    if (!evry_module->active) return;
 
-   EVRY_PLUGIN_FREE(p1);
+   EVRY_PLUGIN_FREE(_plug);
 
    EINA_LIST_FREE(_actions, act)
      evry->action_free(act);
index 46be2ee..699c3b4 100644 (file)
@@ -1661,6 +1661,8 @@ _evry_input_complete(Evry_State *s)
    char *input = NULL;
    Evry_Item *it = s->cur_item;
 
+   if (!it) return 0;
+     
    evry_item_ref(it);
 
    s->item_auto_selected = EINA_FALSE;
@@ -1694,6 +1696,8 @@ _evry_cheat_history(Evry_State *s, int promote, int delete)
    Eina_List *l, *ll;
    Evry_Item *it = s->cur_item;
 
+   if (!it) return 0;
+   
    if (!(ht = evry_history_types_get(it->type)))
      return 1;
 
@@ -1861,9 +1865,6 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
    else if ((ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) &&
            (!strcmp(ev->key, "Delete") || !strcmp(ev->key, "Insert")))
      {
-       if (!s->cur_item)
-         goto end;
-
        int delete = (!strcmp(ev->key, "Delete") &&
                      (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT));
        int promote = (!strcmp(ev->key, "Insert"));
index 805fd1d..b2b22a5 100644 (file)
@@ -1486,7 +1486,10 @@ _cb_item_changed(void *data, int type, void *event)
    if (ev->changed_selection)
      {
        if (it->item->selected)
-         _pan_item_select(v->span, it, 1);
+         {
+            evry_item_select(v->state, ev->item);
+            _pan_item_select(v->span, it, 1);
+         }
      }
 
    if (!it->visible)
@@ -1551,7 +1554,7 @@ _view_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
    diff_x = abs(ev->cur.canvas.x - sd->mouse_x);
    diff_y = abs(ev->cur.canvas.y - sd->mouse_y);
 
-   if (diff_y > (diff_x + 10) * 2)
+   if (diff_y > 10 + (diff_x/2))
      goto end;
 
    if ((sd->cur_item != sd->it_down) && (diff_x > 10))
@@ -1563,14 +1566,14 @@ _view_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
    if ((sd->mouse_button == 1) &&
        (sd->cur_item == sd->it_down))
      {
-       if (ev->cur.canvas.x - sd->mouse_x > 150)
+       if (ev->cur.canvas.x - sd->mouse_x > 100)
          {
             sd->it_down = NULL;
             sd->mouse_x = 0;
             sd->mouse_y = 0;
             evry_browse_back(NULL);
          }
-       else if (sd->mouse_x - ev->cur.canvas.x > 150)
+       else if (sd->mouse_x - ev->cur.canvas.x > 100)
          {
             sd->it_down = NULL;
             sd->mouse_x = 0;