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);
 

-- 


Reply via email to