Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: Makefile.am e_desklock.c e_grabinput.c e_grabinput.h e_includes.h e_int_config_background.c e_int_config_desklock.c e_int_config_theme.c e_widget_image.c Added Files: e_widget_preview.c e_widget_preview.h Log Message: add a preview widget (includes a livethumb for live downscaling - notice previews of animated bgs's... animate now). fixed problems with image widget withleaks and other stuff... also desklok tries to abord if grabs fail and agressively tries to disable existing grabs =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v retrieving revision 1.112 retrieving revision 1.113 diff -u -3 -r1.112 -r1.113 --- Makefile.am 27 Feb 2006 15:18:10 -0000 1.112 +++ Makefile.am 4 Mar 2006 04:11:51 -0000 1.113 @@ -146,7 +146,8 @@ e_apps_error.h \ e_stolen.h \ e_gadcon.h \ -e_shelf.h +e_shelf.h \ +e_widget_preview.h enlightenment_src = \ e_user.c \ @@ -275,6 +276,7 @@ e_stolen.c \ e_gadcon.c \ e_shelf.c \ +e_widget_preview.c \ $(ENLIGHTENMENTHEADERS) enlightenment_SOURCES = \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desklock.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_desklock.c 3 Mar 2006 06:00:17 -0000 1.7 +++ e_desklock.c 4 Mar 2006 04:11:51 -0000 1.8 @@ -19,6 +19,7 @@ Evas_List *elock_wnd_list; Ecore_X_Window elock_wnd; Evas_List *handlers; + Ecore_X_Window elock_grab_break_wnd; char passwd[PASSWD_LEN]; }; @@ -65,22 +66,63 @@ return 0; } - if (!edd) + edd = E_NEW(E_Desklock_Data, 1); + if (!edd) return 0; + edd->elock_wnd = ecore_x_window_input_new(e_manager_current_get()->root, + 0, 0, 1, 1); + ecore_x_window_show(edd->elock_wnd); + managers = e_manager_list(); + if (!e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd)) { - edd = E_NEW(E_Desklock_Data, 1); - if (!edd) return 0; - edd->elock_wnd_list = NULL; - edd->elock_wnd = 0; - edd->handlers = NULL; - edd->passwd[0] = 0; + for (l = managers; l; l = l->next) + { + E_Manager *man; + Ecore_X_Window *windows; + int wnum; + + man = l->data; + windows = ecore_x_window_children_get(man->root, &wnum); + if (windows) + { + int i; + + for (i = 0; i < wnum; i++) + { + Ecore_X_Window_Attributes att; + + ecore_x_window_attributes_get(windows[i], &att); + if (att.visible) + { + ecore_x_window_hide(windows[i]); + if (e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd)) + { + edd->elock_grab_break_wnd = windows[i]; + free(windows); + goto works; + } + ecore_x_window_show(windows[i]); + } + } + free(windows); + } + } + /* everything failed - cant lock */ + e_util_dialog_show(_("Lock Failed"), + _("Locking the desktop failed because some application<br>" + "has grabbed either they keyboard or the mouse or both<br>" + "and their grab is unable to be broken.")); + ecore_x_window_del(edd->elock_wnd); + free(edd); + edd = NULL; + return 0; } - + works: + last_active_zone = current_zone = e_zone_current_get(e_container_current_get(e_manager_current_get())); zone_counter = 0; total_zone_num = _e_desklock_zone_num_get(); - managers = e_manager_list(); for (l = managers; l; l = l->next) { E_Manager *man; @@ -94,16 +136,8 @@ for (l3 = con->zones; l3; l3 = l3->next) { E_Zone *zone; - zone = l3->data; - if (!edd->elock_wnd) - { - edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1); - ecore_x_window_show(edd->elock_wnd); - e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd); - } - edp = E_NEW(E_Desklock_Popup_Data, 1); if (edp) { @@ -112,6 +146,7 @@ ecore_x_current_time_get(), NULL); e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER); + ecore_evas_raise(edp->popup_wnd->ecore_evas); evas_event_freeze(edp->popup_wnd->evas); edp->bg_object = edje_object_add(edp->popup_wnd->evas); @@ -222,7 +257,9 @@ E_Desklock_Popup_Data *edp; if (!edd) return; - + + if (edd->elock_grab_break_wnd) + ecore_x_window_show(edd->elock_grab_break_wnd); while (edd->elock_wnd_list) { edp = edd->elock_wnd_list->data; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_grabinput.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_grabinput.c 7 Jan 2006 10:39:45 -0000 1.4 +++ e_grabinput.c 4 Mar 2006 04:11:51 -0000 1.5 @@ -26,7 +26,7 @@ return 1; } -EAPI void +EAPI int e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_win) { if (grab_mouse_win) @@ -42,15 +42,29 @@ } if (mouse_win) { + int ret = 0; + if (confine_mouse) - ecore_x_pointer_confine_grab(mouse_win); + ret = ecore_x_pointer_confine_grab(mouse_win); else - ecore_x_pointer_grab(mouse_win); + ret = ecore_x_pointer_grab(mouse_win); + if (!ret) return 0; grab_mouse_win = mouse_win; } if (key_win) { - ecore_x_keyboard_grab(key_win); + int ret = 0; + + ret = ecore_x_keyboard_grab(key_win); + if (!ret) + { + if (grab_mouse_win) + { + ecore_x_pointer_ungrab(); + grab_mouse_win = 0; + } + return 0; + } grab_key_win = key_win; } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_grabinput.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_grabinput.h 24 Sep 2005 09:04:39 -0000 1.3 +++ e_grabinput.h 4 Mar 2006 04:11:51 -0000 1.4 @@ -17,7 +17,7 @@ EAPI int e_grabinput_init(void); EAPI int e_grabinput_shutdown(void); -EAPI void e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_win); +EAPI int e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_win); EAPI void e_grabinput_release(Ecore_X_Window mouse_win, Ecore_X_Window key_win); EAPI void e_grabinput_focus(Ecore_X_Window win, E_Focus_Method method); EAPI double e_grabinput_last_focus_time_get(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_includes.h,v retrieving revision 1.94 retrieving revision 1.95 diff -u -3 -r1.94 -r1.95 --- e_includes.h 2 Mar 2006 12:03:48 -0000 1.94 +++ e_includes.h 4 Mar 2006 04:11:51 -0000 1.95 @@ -127,3 +127,4 @@ #include "e_gadcon.h" #include "e_shelf.h" #include "e_tlist.h" +#include "e_widget_preview.h" =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_background.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -3 -r1.39 -r1.40 --- e_int_config_background.c 15 Feb 2006 20:30:59 -0000 1.39 +++ e_int_config_background.c 4 Mar 2006 04:11:51 -0000 1.40 @@ -3,7 +3,6 @@ */ #include "e.h" -//#include <Ecore_X.h> #define BG_SET_DEFAULT_DESK 0 #define BG_SET_THIS_DESK 1 @@ -117,10 +116,7 @@ o = e_widget_button_add(evas, _("Select Another Image..."), NULL, _bg_config_dialog_cb_import, cfd, NULL); e_widget_table_object_append(ot, o, 0, 2, 1, 1, 1, 0, 0, 0); - of = e_widget_framelist_add(evas, _("Background Preview"), 0); - e_widget_min_size_set(of, 320, 240); - e_widget_table_object_append(ot, of, 1, 0, 1, 2, 1, 1, 1, 1); - e_widget_framelist_object_append(of, im); + e_widget_table_object_append(ot, im, 1, 0, 1, 2, 1, 1, 1, 1); if (_bg_file_monitor) { @@ -183,10 +179,7 @@ o = e_widget_button_add(evas, _("Select Another Image"), NULL, _bg_config_dialog_cb_import, cfd, NULL); e_widget_table_object_append(ot, o, 0, 3, 1, 1, 1, 0, 0, 0); - of = e_widget_framelist_add(evas, _("Background Preview"), 0); - e_widget_min_size_set(of, 320, 240); - e_widget_table_object_append(ot, of, 1, 0, 1, 2, 1, 1, 1, 1); - e_widget_framelist_object_append(of, im); + e_widget_table_object_append(ot, im, 1, 0, 1, 2, 1, 1, 1, 1); rg = e_widget_radio_group_new(&(cfdata->bg_method)); of = e_widget_framelist_add(evas, _("Set Background For"), 0); @@ -300,20 +293,23 @@ c = strdup(f); if (edje_object_file_set(o, f, "desktop/background")) { - Evas_Object *o = NULL; + Evas_Object *ic = NULL; if (!e_thumb_exists(c)) - o = e_thumb_generate_begin(c, 48, 48, cfd->dia->win->evas, &o, NULL, NULL); + ic = e_thumb_generate_begin(c, 48, 48, cfd->dia->win->evas, &ic, NULL, NULL); else - o = e_thumb_evas_object_get(c, cfd->dia->win->evas, 48, 48, 1); + ic = e_thumb_evas_object_get(c, cfd->dia->win->evas, 48, 48, 1); - e_widget_ilist_append(il, o, "Theme Background", _ilist_cb_bg_selected, cfd, ""); + e_widget_ilist_append(il, ic, "Theme Background", _ilist_cb_bg_selected, cfd, ""); } if (!e_config->desktop_default_background) e_widget_ilist_selected_set(il, 0); - im = e_widget_image_add_from_object(cfd->dia->win->evas, bg_obj, 320, 240); - e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfd->dia->win->evas, 320, 240, 1)); + im = e_widget_preview_add(cfd->dia->win->evas, 320, 240); + e_widget_preview_edje_set(im, f, "desktop/background"); + evas_object_del(bg_obj); +// im = e_widget_preview_add_from_object(cfd->dia->win->evas, bg_obj, 320, 240); +// e_widget_preview_object_set(im, e_thumb_evas_object_get(c, cfd->dia->win->evas, 320, 240, 1)); evas_object_del(o); ecore_evas_free(eebuf); @@ -350,13 +346,12 @@ if ((e_config->desktop_default_background) && (!strcmp(e_config->desktop_default_background, full_path))) { - Evas_Object *o = NULL; - e_widget_ilist_selected_set(il, i); - o = edje_object_add(cfd->dia->win->evas); - edje_object_file_set(o, e_config->desktop_default_background, "desktop/background"); - im = e_widget_image_add_from_object(cfd->dia->win->evas, o, 320, 240); - e_widget_image_object_set(im, e_thumb_evas_object_get(full_path, cfd->dia->win->evas, 320, 240, 1)); + + im = e_widget_preview_add(cfd->dia->win->evas, 320, 240); + e_widget_preview_edje_set(im, e_config->desktop_default_background, "desktop/background"); +// im = e_widget_preview_add_from_object(cfd->dia->win->evas, o, 320, 240); +// e_widget_preview_object_set(im, e_thumb_evas_object_get(full_path, cfd->dia->win->evas, 320, 240, 1)); } i++; } @@ -385,12 +380,15 @@ if (!(cfdata->bg[0])) { const char *theme; + theme = e_theme_edje_file_get("base/theme/backgrounds", "desktop/background"); - e_widget_image_object_set(cfd->data, e_thumb_evas_object_get(strdup(theme), evas, 320, 240, 1)); + e_widget_preview_edje_set(cfd->data, theme, "desktop/background"); +// e_widget_preview_object_set(cfd->data, e_thumb_evas_object_get(strdup(theme), evas, 320, 240, 1)); } else { - e_widget_image_object_set(cfd->data, e_thumb_evas_object_get(cfdata->bg, evas, 320, 240, 1)); + e_widget_preview_edje_set(cfd->data, cfdata->bg, "desktop/background"); +// e_widget_preview_object_set(cfd->data, e_thumb_evas_object_get(cfdata->bg, evas, 320, 240, 1)); } if (cfdata->current_bg) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_desklock.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_int_config_desklock.c 3 Mar 2006 06:36:11 -0000 1.6 +++ e_int_config_desklock.c 4 Mar 2006 04:11:51 -0000 1.7 @@ -341,11 +341,8 @@ /* end: bkg list */ /* start: Desk Lock Window Preview */ - ot1 = e_widget_frametable_add(evas, _("Desk Lock Window Preview"), 0); - { - e_widget_frametable_object_append(ot1, cfdata->preview_image, 0, 1, 1, 1, 1, 1, 1, 1); - } - e_widget_table_object_append(ot, ot1, 1, 0, 1, 1, 1, 1, 1, 1); + + e_widget_table_object_append(ot, cfdata->preview_image, 1, 0, 1, 1, 1, 1, 1, 1); /* end: Desk Lock Window Preview */ /* start: login box options */ @@ -506,7 +503,7 @@ static void _load_bgs(E_Config_Dialog_Data *cfdata) { - Evas_Object *bg_obj, *o, *ic, *im; + Evas_Object *o, *ic, *im; Ecore_Evas *eebuf; Evas *evasbuf; Evas_List *bg_dirs, *bg; @@ -516,9 +513,6 @@ if (!cfdata || !cfdata->gui.bg_list) return; - bg_obj = edje_object_add(cfdata->evas); - - eebuf = ecore_evas_buffer_new(1, 1); evasbuf = ecore_evas_get(eebuf); @@ -529,25 +523,25 @@ if (edje_object_file_set(o, f1, "desklock/background")) { - Evas_Object *o = NULL; - if (!e_thumb_exists(c)) - o = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, - cfdata->evas, &o, NULL, NULL); + ic = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, + cfdata->evas, &ic, NULL, NULL); else - o = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1); + ic = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1); - e_widget_ilist_append(cfdata->gui.bg_list, o, "Theme DeskLock Background", + e_widget_ilist_append(cfdata->gui.bg_list, ic, "Theme DeskLock Background", _ibg_list_cb_bg_selected, cfdata, DEF_DESKLOCK_BACKGROUND); } - if (!e_config->desklock_background || - !strcmp(e_config->desklock_background, DEF_DESKLOCK_BACKGROUND)) + if ((!e_config->desklock_background) || + (!strcmp(e_config->desklock_background, DEF_DESKLOCK_BACKGROUND))) e_widget_ilist_selected_set(cfdata->gui.bg_list, 0); - im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H); - e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W, - BG_PREVIEW_H, 1)); + im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H); + e_widget_preview_edje_set(im, c, "desktop/background"); +// im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H); +// e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W, +// BG_PREVIEW_H, 1)); evas_object_del(o); ecore_evas_free(eebuf); @@ -565,26 +559,25 @@ c = strdup(f); if (edje_object_file_set(o, f, "desktop/background")) { - Evas_Object *o = NULL; - if (!e_thumb_exists(c)) - o = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, - cfdata->evas, &o, NULL, NULL); + ic = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, + cfdata->evas, &ic, NULL, NULL); else - o = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1); + ic = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1); - e_widget_ilist_append(cfdata->gui.bg_list, o, "Theme Background", _ibg_list_cb_bg_selected, + e_widget_ilist_append(cfdata->gui.bg_list, ic, "Theme Background", _ibg_list_cb_bg_selected, cfdata, DEF_THEME_BACKGROUND); } - if (e_config->desklock_background && - strcmp(e_config->desklock_background, DEF_THEME_BACKGROUND) == 0) + if ((e_config->desklock_background) && + (!strcmp(e_config->desklock_background, DEF_THEME_BACKGROUND))) { - e_widget_ilist_selected_set(cfdata->gui.bg_list, 1); - - im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H); - e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W, - BG_PREVIEW_H, 1)); + e_widget_ilist_selected_set(cfdata->gui.bg_list, 1); + im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H); + e_widget_preview_edje_set(im, c, "desktop/background"); +// im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H); +// e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W, +// BG_PREVIEW_H, 1)); } evas_object_del(o); @@ -626,17 +619,13 @@ if ((e_config->desklock_background) && (!strcmp(e_config->desklock_background, full_path))) { - Evas_Object *o = NULL; - - e_widget_ilist_selected_set(cfdata->gui.bg_list, i); - o = edje_object_add(cfdata->evas); - edje_object_file_set(o, e_config->desktop_default_background, - "desktop/background"); - - im = e_widget_image_add_from_object(cfdata->evas, o, BG_PREVIEW_W, BG_PREVIEW_H); - e_widget_image_object_set(im, e_thumb_evas_object_get(full_path, cfdata->evas, - BG_PREVIEW_W, BG_PREVIEW_H, - 1)); + e_widget_ilist_selected_set(cfdata->gui.bg_list, i); + im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H); + e_widget_preview_edje_set(im, full_path, "desktop/background"); +// im = e_widget_image_add_from_object(cfdata->evas, o, BG_PREVIEW_W, BG_PREVIEW_H); +// e_widget_image_object_set(im, e_thumb_evas_object_get(full_path, cfdata->evas, +// BG_PREVIEW_W, BG_PREVIEW_H, +// 1)); } i++; } @@ -654,43 +643,50 @@ static void _ibg_list_cb_bg_selected(void *data) { - E_Config_Dialog_Data *cfdata; - - cfdata = data; - - if (cfdata->cur_bg[0]) - { - if (strcmp(cfdata->cur_bg, DEF_DESKLOCK_BACKGROUND) == 0) - { - const char *theme; - theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background"); - e_widget_image_object_set(cfdata->preview_image, - e_thumb_evas_object_get(strdup(theme), cfdata->evas, - BG_PREVIEW_W, BG_PREVIEW_H, 1)); - } - else if (strcmp(cfdata->cur_bg, DEF_THEME_BACKGROUND) == 0) - { - const char *theme; - theme = e_theme_edje_file_get("base/theme/backgrounds", "desktop/background"); - e_widget_image_object_set(cfdata->preview_image, - e_thumb_evas_object_get(strdup(theme), cfdata->evas, - BG_PREVIEW_W, BG_PREVIEW_H, 1)); - } - else - { - e_widget_image_object_set(cfdata->preview_image, - e_thumb_evas_object_get(cfdata->cur_bg, cfdata->evas, - BG_PREVIEW_W, BG_PREVIEW_H, 1)); - } - } - else - { - const char *theme; - theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background"); - e_widget_image_object_set(cfdata->preview_image, - e_thumb_evas_object_get(strdup(theme), cfdata->evas, - BG_PREVIEW_W, BG_PREVIEW_H, 1)); - } + E_Config_Dialog_Data *cfdata; + + cfdata = data; + + if (cfdata->cur_bg[0]) + { + if (strcmp(cfdata->cur_bg, DEF_DESKLOCK_BACKGROUND) == 0) + { + const char *theme; + + theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background"); + e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background"); +// e_widget_image_object_set(cfdata->preview_image, +// e_thumb_evas_object_get(strdup(theme), cfdata->evas, +// BG_PREVIEW_W, BG_PREVIEW_H, 1)); + } + else if (strcmp(cfdata->cur_bg, DEF_THEME_BACKGROUND) == 0) + { + const char *theme; + + theme = e_theme_edje_file_get("base/theme/backgrounds", "desktop/background"); + e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background"); +// e_widget_image_object_set(cfdata->preview_image, +// e_thumb_evas_object_get(strdup(theme), cfdata->evas, +// BG_PREVIEW_W, BG_PREVIEW_H, 1)); + } + else + { + e_widget_preview_edje_set(cfdata->preview_image, cfdata->cur_bg, "desktop/background"); +// e_widget_image_object_set(cfdata->preview_image, +// e_thumb_evas_object_get(cfdata->cur_bg, cfdata->evas, +// BG_PREVIEW_W, BG_PREVIEW_H, 1)); + } + } + else + { + const char *theme; + + theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background"); + e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background"); +// e_widget_image_object_set(cfdata->preview_image, +// e_thumb_evas_object_get(strdup(theme), cfdata->evas, +// BG_PREVIEW_W, BG_PREVIEW_H, 1)); + } } static void =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_theme.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- e_int_config_theme.c 15 Feb 2006 20:30:59 -0000 1.16 +++ e_int_config_theme.c 4 Mar 2006 04:11:51 -0000 1.17 @@ -103,7 +103,8 @@ const char *tmp; d = data; - e_widget_image_object_set(d->cfd->data, e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 160, 120, 1)); + e_widget_preview_edje_set(d->cfd->data, d->file, "desktop/background"); +// e_widget_image_object_set(d->cfd->data, e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 160, 120, 1)); cfdata = d->cfd->cfdata; if (cfdata->current_theme) @@ -197,8 +198,10 @@ if (!(strcmp(themefile, cfdata->current_theme))) { e_widget_ilist_selected_set(il, i); - im = e_widget_image_add_from_object(evas, theme, 320, 240); - e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1)); + im = e_widget_preview_add(evas, 320, 240); + e_widget_preview_edje_set(im, fulltheme, "desktop/background"); +// im = e_widget_image_add_from_object(evas, theme, 320, 240); +// e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1)); } free(noext); i++; @@ -214,18 +217,18 @@ e_widget_ilist_go(il); e_widget_min_size_set(il, 180, 40); e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1); - fr = e_widget_framelist_add(evas, _("Preview"), 0); if (im == NULL) { snprintf(fulltheme, sizeof(fulltheme), PACKAGE_DATA_DIR"/data/themes/default.edj"); - theme = e_thumb_generate_begin(fulltheme, 320, 240, evas, &theme, NULL, NULL); - im = e_widget_image_add_from_object(evas, theme, 320, 240); - e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1)); + im = e_widget_preview_add(evas, 320, 240); + e_widget_preview_edje_set(im, fulltheme, "desktop/background"); +// theme = e_thumb_generate_begin(fulltheme, 320, 240, evas, &theme, NULL, NULL); +// im = e_widget_image_add_from_object(evas, theme, 320, 240); +// e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1)); } cfd->data = im; - e_widget_min_size_set(fr, 320, 240); - e_widget_table_object_append(o, fr, 1, 0, 1, 2, 1, 1, 1, 1); - e_widget_framelist_object_append(fr, im); + + e_widget_table_object_append(o, im, 1, 0, 1, 2, 1, 1, 1, 1); return o; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_image.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_widget_image.c 13 Jan 2006 02:11:11 -0000 1.7 +++ e_widget_image.c 4 Mar 2006 04:11:51 -0000 1.8 @@ -9,6 +9,8 @@ Evas_Object *img; }; +static void _e_wid_del_hook(Evas_Object *obj); + /* local subsystem functions */ /* externally accessible functions */ @@ -19,6 +21,7 @@ E_Widget_Data *wd; obj = e_widget_add(evas); + e_widget_del_hook_set(obj, _e_wid_del_hook); wd = calloc(1, sizeof(E_Widget_Data)); evas_object_show(object); @@ -52,6 +55,7 @@ wd->img = o; evas_object_show(o); + e_widget_data_set(obj, wd); e_widget_can_focus_set(obj, 0); e_widget_min_size_set(obj, minw, minh); e_widget_sub_object_add(obj, o); @@ -99,3 +103,13 @@ e_icon_object_set(wd->img, o); evas_object_show(wd->img); } + + +static void +_e_wid_del_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + free(wd); +} ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs