discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e93f67e74a116b4850acc744abff5e717cf8e75d
commit e93f67e74a116b4850acc744abff5e717cf8e75d Author: Mike Blumenkrantz <[email protected]> Date: Fri Aug 25 14:47:04 2017 -0400 go back to image widget for video filepreviews this still has some funkiness related to initial geometry but it looks better and doesn't have weird resolution bugs fix T4293 --- src/bin/e_widget_filepreview.c | 59 +++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/src/bin/e_widget_filepreview.c b/src/bin/e_widget_filepreview.c index fbffa9d18..5f09547c1 100644 --- a/src/bin/e_widget_filepreview.c +++ b/src/bin/e_widget_filepreview.c @@ -55,6 +55,7 @@ struct _E_Widget_Data Eina_Bool clamp_video : 1; Eina_Bool delete_me : 1; Eina_Bool preview_text_file_next : 1; + Eina_Bool vid_sized : 1; }; static void _e_wid_fprev_preview_update(void *data, Evas_Object *obj, void *event_info); @@ -226,30 +227,17 @@ _e_wid_fprev_clear_widgets(E_Widget_Data *wd) } static void -_e_wid_fprev_preview_video_position(E_Widget_Data *wd, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - double t, tot; - - if (!wd->o_preview_time) return; - tot = emotion_object_play_length_get(obj); - if (!EINA_DBL_NONZERO(tot)) return; - wd->vid_pct = t = (emotion_object_position_get(obj) * 100.0) / emotion_object_play_length_get(obj); - e_widget_slider_value_double_set(wd->o_preview_time, t); -} - -static void -_e_wid_fprev_preview_video_opened(E_Widget_Data *wd, Evas_Object *obj, void *event_info EINA_UNUSED) +_fprev_video_size(E_Widget_Data *wd, Evas_Object *obj) { double ratio; int iw, ih; Evas_Coord w, h, mw, mh, ow, oh; - evas_object_geometry_get(wd->o_preview_preview, NULL, NULL, &ow, &oh); + if (wd->vid_sized) return; evas_object_geometry_get(wd->o_preview_properties_table, NULL, NULL, &w, &h); - - e_widget_entry_text_set(wd->o_preview_extra_entry, e_util_time_str_get(emotion_object_play_length_get(obj))); - if (w < 10) return; + evas_object_geometry_get(wd->o_preview_preview, NULL, NULL, &ow, &oh); + wd->vid_sized = 1; w -= 4; emotion_object_size_get(obj, &iw, &ih); ratio = emotion_object_ratio_get(obj); @@ -258,15 +246,9 @@ _e_wid_fprev_preview_video_opened(E_Widget_Data *wd, Evas_Object *obj, void *eve if (ih < 1) ih = 1; h = (w * ih) / iw; - e_widget_preview_vsize_set(wd->o_preview_preview, w, h); - if (h > oh) - { - w = (w * oh) / h; - h = oh; - } e_widget_size_min_set(wd->o_preview_preview, w, h); e_widget_table_object_repack(wd->o_preview_properties_table, - wd->o_preview_preview, 0, 0, 2, 2, 0, 0, 1, 1); + wd->o_preview_preview, 0, 0, 2, 2, 1, 1, 1, 1); e_widget_list_object_repack(wd->o_preview_list, wd->o_preview_properties_table, 1, 1, 0.5); @@ -275,11 +257,32 @@ _e_wid_fprev_preview_video_opened(E_Widget_Data *wd, Evas_Object *obj, void *eve } static void +_e_wid_fprev_preview_video_position(E_Widget_Data *wd, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + double t, tot; + + if (!wd->o_preview_time) return; + tot = emotion_object_play_length_get(obj); + if (!EINA_DBL_NONZERO(tot)) return; + wd->vid_pct = t = (emotion_object_position_get(obj) * 100.0) / emotion_object_play_length_get(obj); + e_widget_slider_value_double_set(wd->o_preview_time, t); + _fprev_video_size(wd, obj); +} + +static void +_e_wid_fprev_preview_video_opened(E_Widget_Data *wd, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + e_widget_entry_text_set(wd->o_preview_extra_entry, e_util_time_str_get(emotion_object_play_length_get(obj))); + _fprev_video_size(wd, obj); +} + +static void _e_wid_fprev_preview_video_resize(E_Widget_Data *wd, Evas_Object *obj, void *event_info EINA_UNUSED) { int w, h; char buf[128]; + _fprev_video_size(wd, obj); emotion_object_size_get(obj, &w, &h); snprintf(buf, sizeof(buf), "%dx%d", w, h); @@ -343,13 +346,11 @@ _e_wid_fprev_preview_video_widgets(E_Widget_Data *wd) e_widget_table_object_append(wd->o_preview_properties_table, o, 0, 0, 2, 2, 1, 1, 1, 1); - wd->o_preview_preview = e_widget_preview_add(evas, 4, 4); - em = o = emotion_object_add(e_widget_preview_evas_get(wd->o_preview_preview)); - emotion_object_init(o, "gstreamer1"); + em = o = emotion_object_add(evas); emotion_object_file_set(o, wd->path); emotion_object_play_set(o, EINA_TRUE); - evas_object_size_hint_aspect_set(o, EVAS_ASPECT_CONTROL_BOTH, wd->w, wd->h); - e_widget_preview_extern_object_set(wd->o_preview_preview, o); + emotion_object_init(o, "gstreamer1"); + wd->o_preview_preview = e_widget_image_add_from_object(evas, o, 4, 4); e_widget_table_object_append(wd->o_preview_properties_table, wd->o_preview_preview, 0, 0, 2, 2, 1, 1, 1, 1); --
