summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-02-04 23:26:48 +0000
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-02-04 23:26:48 +0000
commit89959af3eb25dfbf7daad8c66e6c43a1d1b579b2 (patch)
tree4d6aee80dd20136694e89e313edbcb021da653ba
parent46eae171dc525d16476b63c1bebce8de9cd7818f (diff)
browser - optimize to only load the file entries as they appear
so as you scroll it'll load/create and not per dir. this gets rid of big stalls as a whole dir worth of edje and thumb/album objects are created and packed etc. ... now it's far more smooth. i could try and spread the entry creation over time too instead of all of them that appear at any time which might be smoother, but pretty good right now. it also destroys as items go out of the window
-rw-r--r--src/bin/browser.c332
1 files changed, 222 insertions, 110 deletions
diff --git a/src/bin/browser.c b/src/bin/browser.c
index 38bd48c..65e1ec4 100644
--- a/src/bin/browser.c
+++ b/src/bin/browser.c
@@ -36,6 +36,7 @@ struct _Entry
36 Evas_Object *table; 36 Evas_Object *table;
37 Evas_Object *sizer; 37 Evas_Object *sizer;
38 Evas_Coord iw, ih; 38 Evas_Coord iw, ih;
39 Evas_Object **file_obj;
39 int cols, rows; 40 int cols, rows;
40 int sel_x, sel_y; 41 int sel_x, sel_y;
41 Eina_Bool sel : 1; 42 Eina_Bool sel : 1;
@@ -58,6 +59,7 @@ static Entry *dir_entry = NULL;
58static Eina_List *entries = NULL; 59static Eina_List *entries = NULL;
59static Ecore_Timer *_browser_hide_focus_restore_timer = NULL; 60static Ecore_Timer *_browser_hide_focus_restore_timer = NULL;
60static Eina_Semaphore step_sema; 61static Eina_Semaphore step_sema;
62static Ecore_Timer *initial_update_timer = NULL;
61 63
62static void _sel_go(Evas_Object *win EINA_UNUSED, Entry *base_entry, int x, int y); 64static void _sel_go(Evas_Object *win EINA_UNUSED, Entry *base_entry, int x, int y);
63 65
@@ -294,74 +296,151 @@ _cb_file_selected(void *data, Evas_Object *obj, const char *sig EINA_UNUSED, con
294} 296}
295 297
296static void 298static void
297_entry_files_pop(Evas_Object *win, Entry *entry) 299_entry_files_pop_clear(Entry *entry)
298{ 300{
299 Evas_Object *o, *base; 301 int i, k;
300 int i = 0, j = 0;
301 Eina_List *l;
302 const char *file;
303 char buf[PATH_MAX], *p;
304 302
305 if (evas_object_data_get(entry->table, "populated")) return; 303 // if we had any content at all before - nuke it all
306 evas_object_data_set(entry->table, "populated", entry->table); 304 if ((entry->sels) && (entry->file_obj))
307
308 EINA_LIST_FOREACH(entry->files, l, file)
309 { 305 {
310 base = o = elm_layout_add(win); 306 entry->sels = eina_list_free(entry->sels);
311 entry->sels = eina_list_append(entry->sels, o); 307 k = entry->cols * entry->rows;
312 evas_object_data_set(o, "entry", entry); 308 for (i = 0; i < k; i++)
313 evas_object_data_set(o, "file", file);
314 elm_object_focus_allow_set(o, EINA_FALSE);
315 snprintf(buf, sizeof(buf), "%s/themes/default.edj", elm_app_data_dir_get());
316 elm_layout_file_set(o, buf, "rage/browser/item");
317 if (elm_win_fullscreen_get(win))
318 elm_layout_signal_emit(base, "state,fullscreen", "rage");
319 else
320 elm_layout_signal_emit(base, "state,normal", "rage");
321 snprintf(buf, sizeof(buf), "%s", file);
322 for (p = buf; *p; p++)
323 { 309 {
324 // nuke stupid characters from the label that may be in filename 310 if (entry->file_obj[i])
325 if ((*p == '_') || (*p == '#') || (*p == '$') || (*p == '%') ||
326 (*p == '*') || (*p == '+') || (*p == '[') || (*p == ']') ||
327 (*p == ';') || (*p == '<') || (*p == '=') || (*p == '>') ||
328 (*p == '^') || (*p == '`') || (*p == '{') || (*p == '}') ||
329 (*p == '|') || (*p == '~') || (*p == 127) ||
330 (*p == '\'') || (*p == '\\'))
331 { 311 {
332 *p = ' '; 312 evas_object_del(entry->file_obj[i]);
313 entry->file_obj[i] = NULL;
333 } 314 }
334 else if (*p == '.') 315 }
316 }
317}
318
319static void
320_entry_files_pop_eval(Evas_Object *win, Entry *entry)
321{
322 const char *file;
323 Eina_List *l;
324 Evas_Object **obj;
325 Evas_Coord win_w, win_h, ent_x, ent_y, ent_w, ent_h;
326 int i = 0, j = 0;
327 Eina_Rectangle win_rect, file_rect;
328
329 evas_object_geometry_get(entry->table, &ent_x, &ent_y, &ent_w, &ent_h);
330 evas_object_geometry_get(win, NULL, NULL, &win_w, &win_h);
331 win_rect.x = 0;
332 win_rect.y = 0;
333 win_rect.w = win_w;
334 win_rect.h = win_h;
335
336 // if we're not in the viewport at all empty all content
337 file_rect.x = ent_x;
338 file_rect.y = ent_y;
339 file_rect.w = ent_w;
340 file_rect.h = ent_h;
341 file_rect.x -= 80;
342 file_rect.y -= 80;
343 file_rect.w += 160;
344 file_rect.h += 160;
345 if (!eina_rectangles_intersect(&win_rect, &file_rect))
346 {
347 _entry_files_pop_clear(entry);
348 return;
349 }
350 // walk files to find which intersect the window
351 EINA_LIST_FOREACH(entry->files, l, file)
352 {
353 file_rect.x = ent_x + ((i * ent_w) / entry->cols);
354 file_rect.y = ent_y + ((j * ent_h) / entry->rows);
355 file_rect.w = (ent_w / entry->cols);
356 file_rect.h = (ent_h / entry->rows);
357 file_rect.x -= 80;
358 file_rect.y -= 80;
359 file_rect.w += 160;
360 file_rect.h += 160;
361 obj = &(entry->file_obj[(j * entry->cols) + i]);
362 if (eina_rectangles_intersect(&win_rect, &file_rect))
363 {
364 if (!(*obj))
335 { 365 {
336 *p = 0; 366 Evas_Object *o, *base;
337 break; 367 char buf[PATH_MAX], *p;
368
369 base = o = elm_layout_add(win);
370 *obj = o;
371 entry->sels = eina_list_append(entry->sels, o);
372 evas_object_data_set(o, "entry", entry);
373 evas_object_data_set(o, "file", file);
374 elm_object_focus_allow_set(o, EINA_FALSE);
375 snprintf(buf, sizeof(buf), "%s/themes/default.edj",
376 elm_app_data_dir_get());
377 elm_layout_file_set(o, buf, "rage/browser/item");
378 if (elm_win_fullscreen_get(win))
379 elm_layout_signal_emit(base, "state,fullscreen", "rage");
380 else
381 elm_layout_signal_emit(base, "state,normal", "rage");
382 snprintf(buf, sizeof(buf), "%s", file);
383 for (p = buf; *p; p++)
384 {
385 // nuke stupid characters from the label that may be
386 // in filename
387 if ((*p == '_') || (*p == '#') || (*p == '$') ||
388 (*p == '%') || (*p == '*') || (*p == '+') ||
389 (*p == '[') || (*p == ']') || (*p == ';') ||
390 (*p == '<') || (*p == '=') || (*p == '>') ||
391 (*p == '^') || (*p == '`') || (*p == '{') ||
392 (*p == '}') || (*p == '|') || (*p == '~') ||
393 (*p == 127) || (*p == '\'') || (*p == '\\'))
394 {
395 *p = ' ';
396 }
397 else if (*p == '.')
398 {
399 *p = 0;
400 break;
401 }
402 }
403 elm_object_part_text_set(o, "rage.title", buf);
404 evas_object_size_hint_weight_set(o, 0.0, 0.0);
405 evas_object_size_hint_align_set(o,
406 EVAS_HINT_FILL,
407 EVAS_HINT_FILL);
408 elm_table_pack(entry->table, o, i, j, 1, 1);
409 evas_object_show(o);
410
411 elm_layout_signal_callback_add(o, "rage,selected", "rage",
412 _cb_file_selected, win);
413
414 o = videothumb_add(win);
415 videothumb_poster_mode_set(o, EINA_TRUE);
416 evas_object_smart_callback_add(o, "data",
417 _cb_vidthumb_data, base);
418 evas_object_data_set(o, "entry", entry);
419 evas_object_data_set(o, "file", file);
420 snprintf(buf, sizeof(buf), "%s/%s", entry->path, file);
421 videothumb_file_set(o, buf, 0.0);
422 videothumb_autocycle_set(o, EINA_TRUE);
423 elm_object_part_content_set(base, "rage.content", o);
424 evas_object_show(o);
425
426 if ((entry->sel) &&
427 (entry->sel_x == i) && (entry->sel_y == j))
428 {
429 elm_layout_signal_emit(base, "rage,state,selected",
430 "rage");
431 evas_object_raise(base);
432 }
338 } 433 }
339 } 434 }
340 elm_object_part_text_set(o, "rage.title", buf); 435 else
341 evas_object_size_hint_weight_set(o, 0.0, 0.0);
342 evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
343 elm_table_pack(entry->table, o, i, j, 1, 1);
344 evas_object_show(o);
345
346 elm_layout_signal_callback_add(o, "rage,selected", "rage", _cb_file_selected, win);
347
348 o = videothumb_add(win);
349 videothumb_poster_mode_set(o, EINA_TRUE);
350 evas_object_smart_callback_add(o, "data", _cb_vidthumb_data, base);
351 evas_object_data_set(o, "entry", entry);
352 evas_object_data_set(o, "file", file);
353 snprintf(buf, sizeof(buf), "%s/%s", entry->path, file);
354 videothumb_file_set(o, buf, 0.0);
355 videothumb_autocycle_set(o, EINA_TRUE);
356 elm_object_part_content_set(base, "rage.content", o);
357 evas_object_show(o);
358
359 if ((entry->sel) && (entry->sel_x == i) && (entry->sel_y == j))
360 { 436 {
361 elm_layout_signal_emit(base, "rage,state,selected", "rage"); 437 if (*obj)
362 evas_object_raise(base); 438 {
439 entry->sels = eina_list_remove(entry->sels, *obj);
440 evas_object_del(*obj);
441 *obj = NULL;
442 }
363 } 443 }
364
365 i++; 444 i++;
366 if (i == entry->cols) 445 if (i == entry->cols)
367 { 446 {
@@ -369,27 +448,14 @@ _entry_files_pop(Evas_Object *win, Entry *entry)
369 j++; 448 j++;
370 } 449 }
371 } 450 }
372 if ((entry->cols > 0) && (entry->rows > 0))
373 elm_table_pack(entry->table, entry->sizer, 0, 0, entry->cols, entry->rows);
374 else
375 elm_table_pack(entry->table, entry->sizer, 0, 0, 1, 1);
376} 451}
377 452
378static void 453static void
379_entry_files_unpop(Evas_Object *win EINA_UNUSED, Entry *entry) 454_entry_update(Evas_Object *win, Entry *entry)
380{ 455{
381 evas_object_size_hint_min_set(entry->sizer, 456 eina_lock_take(&(entry->lock));
382 entry->cols * entry->iw, 457 _entry_files_pop_eval(win, entry);
383 entry->rows * entry->ih); 458 eina_lock_release(&(entry->lock));
384 if (!evas_object_data_get(entry->table, "populated")) return;
385 entry->sels = eina_list_free(entry->sels);
386 evas_object_data_del(entry->table, "populated");
387 elm_table_unpack(entry->table, entry->sizer);
388 elm_table_clear(entry->table, EINA_TRUE);
389 if ((entry->cols > 0) && (entry->rows > 0))
390 elm_table_pack(entry->table, entry->sizer, 0, 0, entry->cols, entry->rows);
391 else
392 elm_table_pack(entry->table, entry->sizer, 0, 0, 1, 1);
393} 459}
394 460
395static void 461static void
@@ -411,10 +477,8 @@ _entry_files_redo(Evas_Object *win, Entry *entry)
411{ 477{
412 Evas_Coord x, y,w, h, iw = 1, ih = 1, ww, wh, sw, sh; 478 Evas_Coord x, y,w, h, iw = 1, ih = 1, ww, wh, sw, sh;
413 int num, cols, rows; 479 int num, cols, rows;
414 Eina_Rectangle r1, r2;
415 480
416 eina_lock_take(&(entry->lock)); 481 eina_lock_take(&(entry->lock));
417
418 if (elm_win_fullscreen_get(win)) 482 if (elm_win_fullscreen_get(win))
419 elm_layout_signal_emit(entry->base, "state,fullscreen", "rage"); 483 elm_layout_signal_emit(entry->base, "state,fullscreen", "rage");
420 else 484 else
@@ -426,6 +490,10 @@ _entry_files_redo(Evas_Object *win, Entry *entry)
426 elm_scroller_region_get(sc, NULL, NULL, &sw, &sh); 490 elm_scroller_region_get(sc, NULL, NULL, &sw, &sh);
427 if (sw < w) w = sw; 491 if (sw < w) w = sw;
428 492
493 _entry_files_pop_clear(entry);
494 free(entry->file_obj);
495 entry->file_obj = NULL;
496
429 _item_size_get(win, &iw, &ih); 497 _item_size_get(win, &iw, &ih);
430 cols = w / iw; 498 cols = w / iw;
431 if (cols < 1) cols = 1; 499 if (cols < 1) cols = 1;
@@ -436,11 +504,17 @@ _entry_files_redo(Evas_Object *win, Entry *entry)
436 entry->cols = cols; 504 entry->cols = cols;
437 entry->rows = rows; 505 entry->rows = rows;
438 506
439 r1.x = 0; r1.y = 0; r1.w = ww; r1.h = wh; 507 entry->file_obj = calloc(entry->cols * entry->rows,
440 r2.x = x; r2.y = y; r2.w = w; r2.h = h; 508 sizeof(Evas_Object *));
441 509 if ((entry->cols > 0) && (entry->rows > 0))
442 _entry_files_unpop(win, entry); 510 elm_table_pack(entry->table, entry->sizer, 0, 0,
443 if (eina_rectangles_intersect(&r1, &r2)) _entry_files_pop(win, entry); 511 entry->cols, entry->rows);
512 else
513 elm_table_pack(entry->table, entry->sizer, 0, 0, 1, 1);
514 evas_object_size_hint_min_set(entry->sizer,
515 entry->cols * entry->iw,
516 entry->rows * entry->ih);
517 _entry_files_pop_eval(win, entry);
444 518
445 if (selfile) 519 if (selfile)
446 { 520 {
@@ -471,32 +545,16 @@ _cb_entry_table_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *in
471{ 545{
472 Entry *entry = data; 546 Entry *entry = data;
473 Evas_Object *win = evas_object_data_get(obj, "win"); 547 Evas_Object *win = evas_object_data_get(obj, "win");
474 Evas_Coord x, y,w, h, ww, wh; 548 if (initial_update_timer) return;
475 Eina_Rectangle r1, r2; 549 _entry_update(win, entry);
476
477 eina_lock_take(&(entry->lock));
478
479 evas_object_geometry_get(win, NULL, NULL, &ww, &wh);
480 evas_object_geometry_get(entry->table, &x, &y, &w, &h);
481 if (w < 40) goto done;
482
483 if (w > (ww - 20)) w = (ww - 20);
484
485 r1.x = 0; r1.y = 0; r1.w = ww; r1.h = wh;
486 r2.x = x; r2.y = y; r2.w = w; r2.h = h;
487
488 if (eina_rectangles_intersect(&r1, &r2)) _entry_files_pop(win, entry);
489 else _entry_files_unpop(win, entry);
490
491done:
492 eina_lock_release(&(entry->lock));
493} 550}
494 551
495static void 552static void
496_cb_entry_table_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED) 553_cb_entry_table_resize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)
497{ 554{
498 Entry *entry = data; 555 Entry *entry = data;
499 Evas_Object *win = evas_object_data_get(obj, "win"); 556 Evas_Object *win = evas_object_data_get(obj, "win");
557 if (initial_update_timer) return;
500 _entry_files_redo(win, entry); 558 _entry_files_redo(win, entry);
501} 559}
502 560
@@ -506,14 +564,30 @@ _cb_scroller_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSE
506 Inf *inf = evas_object_data_get(data, "inf"); 564 Inf *inf = evas_object_data_get(data, "inf");
507 Eina_List *l; 565 Eina_List *l;
508 Entry *entry; 566 Entry *entry;
509 if (!inf) return; 567 if ((!inf) || (!bx)) return;
510 if (!bx) return; 568 if (initial_update_timer) return;
511 EINA_LIST_FOREACH(entries, l, entry) 569 EINA_LIST_FOREACH(entries, l, entry)
512 { 570 {
513 _entry_files_redo(data, entry); 571 _entry_files_redo(data, entry);
514 } 572 }
515} 573}
516 574
575static Eina_Bool
576_cb_initial_update_timer(void *data)
577{
578 Inf *inf = evas_object_data_get(data, "inf");
579 Eina_List *l;
580 Entry *entry;
581
582 initial_update_timer = NULL;
583 if ((!inf) || (!bx)) return EINA_FALSE;
584 EINA_LIST_FOREACH(entries, l, entry)
585 {
586 _entry_files_redo(data, entry);
587 }
588 return EINA_FALSE;
589}
590
517static void 591static void
518_fill_feedback(void *data, Ecore_Thread *th, void *msg) 592_fill_feedback(void *data, Ecore_Thread *th, void *msg)
519{ 593{
@@ -575,7 +649,6 @@ _fill_feedback(void *data, Ecore_Thread *th, void *msg)
575 evas_object_color_set(o, 0, 0, 0, 0); 649 evas_object_color_set(o, 0, 0, 0, 0);
576 evas_object_size_hint_min_set(o, 10, 10); 650 evas_object_size_hint_min_set(o, 10, 10);
577 elm_table_pack(entry->table, o, 0, 0, 1, 1); 651 elm_table_pack(entry->table, o, 0, 0, 1, 1);
578 evas_object_show(o);
579 652
580 if ((!entry->parent) || 653 if ((!entry->parent) ||
581 ((entry->parent) && (!entry->parent->parent)) || 654 ((entry->parent) && (!entry->parent->parent)) ||
@@ -584,6 +657,7 @@ _fill_feedback(void *data, Ecore_Thread *th, void *msg)
584 else 657 else
585 elm_box_pack_end(entry->parent->box, entry->base); 658 elm_box_pack_end(entry->parent->box, entry->base);
586 evas_object_show(entry->base); 659 evas_object_show(entry->base);
660
587 } 661 }
588 } 662 }
589 entries = eina_list_append(entries, entry); 663 entries = eina_list_append(entries, entry);
@@ -591,7 +665,36 @@ _fill_feedback(void *data, Ecore_Thread *th, void *msg)
591 } 665 }
592 else if ((message->type == TYPE_FINISH) && (entry->parent)) 666 else if ((message->type == TYPE_FINISH) && (entry->parent))
593 { 667 {
594 _entry_files_redo(win, entry); 668 if (!initial_update_timer)
669 _entry_files_redo(win, entry);
670 else
671 {
672 int iw, ih, cols, rows, num;
673 Evas_Coord w, h;
674
675 eina_lock_take(&(entry->lock));
676 num = eina_list_count(entry->files);
677 evas_object_geometry_get(entry->table, NULL, NULL, &w, &h);
678 _item_size_get(win, &iw, &ih);
679 cols = w / iw;
680 if (cols < 1) cols = 1;
681 rows = (num + (cols - 1)) / cols;
682
683 entry->iw = iw - 1;
684 entry->ih = ih - 1;
685 entry->cols = cols;
686 entry->rows = rows;
687
688 evas_object_size_hint_min_set(entry->sizer,
689 entry->cols * entry->iw,
690 entry->rows * entry->ih);
691 if ((entry->cols > 0) && (entry->rows > 0))
692 elm_table_pack(entry->table, entry->sizer, 0, 0,
693 entry->cols, entry->rows);
694 else
695 elm_table_pack(entry->table, entry->sizer, 0, 0, 1, 1);
696 eina_lock_release(&(entry->lock));
697 }
595 } 698 }
596 } 699 }
597 // allow the freedback thread to step more 700 // allow the freedback thread to step more
@@ -626,14 +729,15 @@ _entry_free(Entry *entry)
626 if (!entry) return; 729 if (!entry) return;
627 eina_lock_take(&(entry->lock)); 730 eina_lock_take(&(entry->lock));
628 entry->sels = eina_list_free(entry->sels); 731 entry->sels = eina_list_free(entry->sels);
732 free(entry->file_obj);
629 EINA_LIST_FREE(entry->files, str) eina_stringshare_del(str); 733 EINA_LIST_FREE(entry->files, str) eina_stringshare_del(str);
630 EINA_LIST_FREE(entry->dirs, subentry) _entry_free(subentry); 734 EINA_LIST_FREE(entry->dirs, subentry) _entry_free(subentry);
631 if (entry->base) evas_object_del(entry->base); 735 if (entry->base) evas_object_del(entry->base);
632 eina_stringshare_del(entry->path); 736 eina_stringshare_del(entry->path);
633 eina_lock_release(&(entry->lock));
634 eina_lock_free(&(entry->lock));
635 if (entry == selentry) selentry = NULL; 737 if (entry == selentry) selentry = NULL;
636 entries = eina_list_remove(entries, entry); 738 entries = eina_list_remove(entries, entry);
739 eina_lock_release(&(entry->lock));
740 eina_lock_free(&(entry->lock));
637 free(entry); 741 free(entry);
638} 742}
639 743
@@ -688,7 +792,8 @@ static Evas_Object *
688_sel_object_find(Entry *entry) 792_sel_object_find(Entry *entry)
689{ 793{
690 int num = (entry->sel_y * entry->cols) + entry->sel_x; 794 int num = (entry->sel_y * entry->cols) + entry->sel_x;
691 Evas_Object *o = eina_list_nth(entry->sels, num); 795 if (!entry->file_obj) return NULL;
796 Evas_Object *o = entry->file_obj[num];
692 return o; 797 return o;
693} 798}
694 799
@@ -1021,6 +1126,7 @@ browser_show(Evas_Object *win)
1021 focus_timer = ecore_timer_add(0.7, _browser_focus_timer_cb, bt); 1126 focus_timer = ecore_timer_add(0.7, _browser_focus_timer_cb, bt);
1022 } 1127 }
1023 elm_layout_signal_emit(inf->lay, "browser,state,visible", "rage"); 1128 elm_layout_signal_emit(inf->lay, "browser,state,visible", "rage");
1129 initial_update_timer = ecore_timer_add(0.2, _cb_initial_update_timer, win);
1024} 1130}
1025 1131
1026static void 1132static void
@@ -1054,6 +1160,11 @@ browser_hide(Evas_Object *win)
1054 Inf *inf = evas_object_data_get(win, "inf"); 1160 Inf *inf = evas_object_data_get(win, "inf");
1055 1161
1056 if (!bx) return; 1162 if (!bx) return;
1163 if (initial_update_timer)
1164 {
1165 ecore_timer_del(initial_update_timer);
1166 initial_update_timer = NULL;
1167 }
1057 if (focus_timer) ecore_timer_del(focus_timer); 1168 if (focus_timer) ecore_timer_del(focus_timer);
1058 focus_timer = NULL; 1169 focus_timer = NULL;
1059 elm_layout_signal_callback_add(inf->lay, "browser,state,hidden,finished", "rage", 1170 elm_layout_signal_callback_add(inf->lay, "browser,state,hidden,finished", "rage",
@@ -1078,10 +1189,10 @@ browser_size_update(Evas_Object *win)
1078 Entry *entry; 1189 Entry *entry;
1079 if (!inf) return; 1190 if (!inf) return;
1080 if (!bx) return; 1191 if (!bx) return;
1192 if (initial_update_timer) return;
1081 EINA_LIST_FOREACH(entries, l, entry) 1193 EINA_LIST_FOREACH(entries, l, entry)
1082 { 1194 {
1083 _cb_entry_table_move(entry, evas_object_evas_get(entry->table), 1195 _entry_files_redo(win, entry);
1084 entry->table, NULL);
1085 } 1196 }
1086} 1197}
1087 1198
@@ -1093,6 +1204,7 @@ browser_fullscreen(Evas_Object *win, EINA_UNUSED Eina_Bool enabled)
1093 Entry *entry; 1204 Entry *entry;
1094 if (!inf) return; 1205 if (!inf) return;
1095 if (!bx) return; 1206 if (!bx) return;
1207 if (initial_update_timer) return;
1096 EINA_LIST_FOREACH(entries, l, entry) 1208 EINA_LIST_FOREACH(entries, l, entry)
1097 { 1209 {
1098 _entry_files_redo(win, entry); 1210 _entry_files_redo(win, entry);