make scroller stay in the exact pixel pos when resizign - unless at the end.

SVN revision: 39080
This commit is contained in:
Carsten Haitzler 2009-02-18 13:42:56 +00:00
parent cab8dc9942
commit f9fb1d3f0f
4 changed files with 23 additions and 14 deletions

View File

@ -2109,7 +2109,7 @@ my_bt_29(void *data, Evas_Object *obj, void *event_info)
itc1.func.state_get = gl_state_get;
itc1.func.del = gl_del;
for (i = 0; i < 10000; i++)
for (i = 0; i < 100000; i++)
{
gli = elm_genlist_item_append(gl, &itc1,
(void *)i/* item data */,
@ -2176,6 +2176,7 @@ my_gl_disable(void *data, Evas_Object *obj, void *event_info)
}
elm_genlist_item_disabled_set(gli, 1);
elm_genlist_item_selected_set(gli, 0);
elm_genlist_item_update(gli);
}

View File

@ -514,25 +514,26 @@ extern "C" {
} func;
};
EAPI Evas_Object *elm_genlist_add(Evas_Object *parent);
EAPI Evas_Object *elm_genlist_add(Evas_Object *parent);
EAPI Elm_Genlist_Item *elm_genlist_item_append(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *func_data);
EAPI Elm_Genlist_Item *elm_genlist_item_prepend(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *func_data);
EAPI Elm_Genlist_Item *elm_genlist_item_insert_before(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *before, Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *func_data);
EAPI Elm_Genlist_Item *elm_genlist_item_insert_after(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *after, Elm_Genlist_Item_Flags flags, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *func_data);
EAPI void elm_genlist_clear(Evas_Object *obj);
EAPI void elm_genlist_clear(Evas_Object *obj);
EAPI const Elm_Genlist_Item *elm_genlist_selected_item_get(Evas_Object *obj);
EAPI const Eina_List *elm_genlist_selected_items_get(Evas_Object *obj);
EAPI const Eina_List *elm_genlist_selected_items_get(Evas_Object *obj);
EAPI const Elm_Genlist_Item *elm_genlist_first_item_get(Evas_Object *obj);
EAPI const Elm_Genlist_Item *elm_genlist_last_item_get(Evas_Object *obj);
EAPI const Elm_Genlist_Item *elm_genlist_item_next_get(Elm_Genlist_Item *item);
EAPI const Elm_Genlist_Item *elm_genlist_item_prev_get(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Evas_Bool selected);
EAPI Evas_Bool elm_genlist_item_selected_get(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_disabled_set(Elm_Genlist_Item *item, Evas_Bool disabled);
EAPI Evas_Bool elm_genlist_item_disabled_get(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_show(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_del(Elm_Genlist_Item *item);
EAPI const void *elm_genlist_item_data_get(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Evas_Bool selected);
EAPI Evas_Bool elm_genlist_item_selected_get(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_disabled_set(Elm_Genlist_Item *item, Evas_Bool disabled);
EAPI Evas_Bool elm_genlist_item_disabled_get(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_show(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_del(Elm_Genlist_Item *item);
EAPI const void *elm_genlist_item_data_get(Elm_Genlist_Item *item);
EAPI void elm_genlist_item_update(Elm_Genlist_Item *item);
/* smart callbacks called:
* "clicked" - the user clicked the hoversel button and popped up the sel

View File

@ -1222,5 +1222,10 @@ elm_genlist_item_data_get(Elm_Genlist_Item *item)
EAPI void
elm_genlist_item_update(Elm_Genlist_Item *item)
{
// fixme - now do call all the class get funcs again - re realize if realized.
Item *it = (Item *)item;
if (!it->block) return;
it->mincalcd = 0;
it->block->changed = 1;
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
}

View File

@ -915,9 +915,11 @@ _smart_scrollbar_size_adjust(Smart_Data *sd)
edje_object_part_drag_page_set(sd->edje_obj, "elm.dragable.vbar", 0.0, -((double)sd->page.y * ((double)vh / (double)h)) / 100.0);
sd->pan_func.get(sd->pan_obj, &px, &py);
if (vx != mx) x = px;
if (vy != my) y = py;
sd->pan_func.set(sd->pan_obj, x, y);
if ((px != 0) || (py != 0))
edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm");
// if ((px != 0) || (py != 0))
// edje_object_signal_emit(sd->edje_obj, "elm,action,scroll", "elm");
}
else
{