diff --git a/src/modules/illume2/e_quickpanel.c b/src/modules/illume2/e_quickpanel.c index 19a61c955..8089c2f49 100644 --- a/src/modules/illume2/e_quickpanel.c +++ b/src/modules/illume2/e_quickpanel.c @@ -79,6 +79,7 @@ e_quickpanel_show(E_Quickpanel *qp) qp->timer = NULL; if (qp->visible) return; if (!qp->borders) return; + qp->borders = eina_list_sort(qp->borders, 0, _e_quickpanel_cb_sort); if (!input_win) { input_win = @@ -100,10 +101,10 @@ e_quickpanel_show(E_Quickpanel *qp) int ny = 0; e_illume_border_top_shelf_size_get(qp->zone, NULL, &ny); - EINA_LIST_FOREACH(qp->borders, l, bd) + EINA_LIST_REVERSE_FOREACH(qp->borders, l, bd) ny += bd->h; - EINA_LIST_FOREACH(qp->borders, l, bd) + EINA_LIST_REVERSE_FOREACH(qp->borders, l, bd) { e_border_lower(bd); e_border_fx_offset(bd, 0, ny); @@ -200,7 +201,9 @@ _e_quickpanel_cb_border_pre_post_fetch(void *data, void *data2) if (_e_quickpanel_by_border_get(bd)) return; if (!(qp = e_quickpanel_by_zone_get(bd->zone))) return; - qp->borders = eina_list_sorted_insert(qp->borders, _e_quickpanel_cb_sort, bd); + printf("Appending: %s\n", bd->client.icccm.name); + qp->borders = eina_list_append(qp->borders, bd); +// qp->borders = eina_list_sorted_insert(qp->borders, _e_quickpanel_cb_sort, bd); e_illume_border_top_shelf_pos_get(qp->zone, NULL, &ty); bd->stolen = 1; @@ -219,6 +222,7 @@ _e_quickpanel_cb_border_pre_post_fetch(void *data, void *data2) bd->client.border.changed = 1; qp->h += bd->h; e_border_move(bd, qp->zone->x, (ty - qp->h)); + /* if (qp->visible) { int th; @@ -226,6 +230,7 @@ _e_quickpanel_cb_border_pre_post_fetch(void *data, void *data2) e_illume_border_top_shelf_size_get(qp->zone, NULL, &th); e_border_fx_offset(bd, 0, (bd->h - th)); } + */ } static E_Quickpanel * @@ -299,7 +304,7 @@ _e_quickpanel_cb_animate(void *data) } qp->adjust = (qp->adjust_end * v) + (qp->adjust_start * (1.0 - v)); - EINA_LIST_FOREACH(qp->borders, l, bd) + EINA_LIST_REVERSE_FOREACH(qp->borders, l, bd) { e_border_lower(bd); e_border_fx_offset(bd, 0, (bd->h + qp->adjust)); @@ -361,16 +366,16 @@ static int _e_quickpanel_cb_sort(const void *b1, const void *b2) { const E_Border *bd1, *bd2; - int major1, major2; + int major1, major2, ret; - if (!(bd1 = b1)) return 0; + if (!(bd1 = b1)) return -1; if (!(bd2 = b2)) return 1; printf("Checking: %s against %s\n", bd2->client.icccm.name, bd1->client.icccm.name); major1 = ecore_x_e_illume_quickpanel_priority_major_get(bd1->client.win); major2 = ecore_x_e_illume_quickpanel_priority_major_get(bd2->client.win); - if (major1 < major2) return -1; - else if (major1 > major2) return 1; - else if (major1 == major2) + if (major1 < major2) ret = -1; + else if (major1 > major2) ret = 1; + else { int minor1, minor2; @@ -378,11 +383,12 @@ _e_quickpanel_cb_sort(const void *b1, const void *b2) ecore_x_e_illume_quickpanel_priority_minor_get(bd1->client.win); minor2 = ecore_x_e_illume_quickpanel_priority_minor_get(bd2->client.win); - printf("Minors: %d %d\n", minor2, minor1); - if (minor1 < minor2) return -1; - else if (minor1 > minor2) return 1; + if (minor1 < minor2) ret = -1; + else if (minor1 > minor2) ret = 1; + else ret = 0; } - return 0; + printf("Return: %d\n", ret); + return ret; } static int