E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
- v = E_NEW(E_Config_Dialog_View, 1); /* FIXME: Currenly this never gets free'd, awaiting the outcome of mailing list discussion. */
- /* Dialog Methods */
- v->create_cfdata = _e_app_error_dialog_create_data;
- v->free_cfdata = _e_app_error_dialog_free_data;
-// v->basic.apply_cfdata = NULL;
- v->basic.create_widgets = _e_app_error_dialog_basic_create_widgets;
-// v->advanced.apply_cfdata = NULL;
- v->advanced.create_widgets = _e_app_error_dialog_advanced_create_widgets;
-
- /* Create The Dialog */
- cfd = e_config_dialog_new(con, _("Run error, wtf? That sux."), NULL, 0, v, app);
- app->error_dialog = cfd;
+ v = E_NEW(E_Config_Dialog_View, 1); /* This gets freed by e_config_dialog. */
+ if (v)
+ {
+ /* Dialog Methods */
+ v->create_cfdata = _e_app_error_dialog_create_data;
+ v->free_cfdata = _e_app_error_dialog_free_data;
+ v->basic.create_widgets = _e_app_error_dialog_basic_create_widgets;
+ v->advanced.create_widgets = _e_app_error_dialog_advanced_create_widgets;
+
+ /* Create The Dialog */
+ cfd = e_config_dialog_new(con, _("Run error, wtf? That sux."), NULL, 0, v, app);
+ app->error_dialog = cfd;
+ }
}
static void
cfd = E_OBJECT_ALLOC(E_Config_Dialog, E_CONFIG_DIALOG_TYPE, _e_config_dialog_free);
- cfd->view = *view;
- /* Seems that every user of this allocates view it on the stack and doesn't clear it,
- * so I can't rely on this being NULL. I currently set it to NULL in e_config_dialog_new()
- * and if you want to use it, set it in create_widgets();
- * I suspect that allocating a structure on the stack that lives beyond the function
- * call is just asking for trouble.
- */
- cfd->view.close_cfdata = NULL;
+ cfd->view = view;
cfd->con = con;
cfd->title = evas_stringshare_add(title);
if (icon)
cfd->data = data;
cfd->hide_buttons = 1;
- if ((cfd->view.basic.apply_cfdata) || (cfd->view.advanced.apply_cfdata))
+ if ((cfd->view->basic.apply_cfdata) || (cfd->view->advanced.apply_cfdata))
cfd->hide_buttons = 0;
_e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_BASIC);
if (cfd->icon) evas_stringshare_del(cfd->icon);
if (cfd->cfdata)
{
- cfd->view.free_cfdata(cfd, cfd->cfdata);
+ cfd->view->free_cfdata(cfd, cfd->cfdata);
cfd->cfdata = NULL;
}
if (cfd->dia)
e_object_del(E_OBJECT(cfd->dia));
cfd->dia = NULL;
}
+ E_FREE(cfd->view);
free(cfd);
}
e_dialog_title_set(cfd->dia, cfd->title);
if (cfd->icon) e_dialog_icon_set(cfd->dia, cfd->icon, cfd->icon_size);
- if (!cfd->cfdata) cfd->cfdata = cfd->view.create_cfdata(cfd);
+ if (!cfd->cfdata) cfd->cfdata = cfd->view->create_cfdata(cfd);
if (type == E_CONFIG_DIALOG_CFDATA_TYPE_BASIC)
{
- if (cfd->view.advanced.create_widgets)
+ if (cfd->view->advanced.create_widgets)
{
o = e_widget_list_add(e_win_evas_get(cfd->dia->win), 0, 0);
- ob = cfd->view.basic.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
+ ob = cfd->view->basic.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
e_widget_list_object_append(o, ob, 1, 1, 0.0);
ob = e_widget_button_add(e_win_evas_get(cfd->dia->win),
_("Advanced"), "widget/new_dialog",
e_widget_list_object_append(o, ob, 0, 0, 1.0);
}
else
- o = cfd->view.basic.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
+ o = cfd->view->basic.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
}
else
{
- if (cfd->view.basic.create_widgets)
+ if (cfd->view->basic.create_widgets)
{
o = e_widget_list_add(e_win_evas_get(cfd->dia->win), 0, 0);
- ob = cfd->view.advanced.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
+ ob = cfd->view->advanced.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
e_widget_list_object_append(o, ob, 1, 1, 0.0);
ob = e_widget_button_add(e_win_evas_get(cfd->dia->win),
_("Basic"), "widget/new_dialog",
e_widget_list_object_append(o, ob, 0, 0, 1.0);
}
else
- o = cfd->view.advanced.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
+ o = cfd->view->advanced.create_widgets(cfd, e_win_evas_get(cfd->dia->win), cfd->cfdata);
}
e_widget_min_size_get(o, &mw, &mh);
{
E_Dialog *dia;
E_Config_Dialog *cfd;
-
+
dia = obj;
cfd = dia->data;
cfd->dia = NULL;
cfd = dia->data;
if (cfd->view_type == E_CONFIG_DIALOG_CFDATA_TYPE_BASIC)
{
- if (cfd->view.basic.apply_cfdata)
- ok = cfd->view.basic.apply_cfdata(cfd, cfd->cfdata);
+ if (cfd->view->basic.apply_cfdata)
+ ok = cfd->view->basic.apply_cfdata(cfd, cfd->cfdata);
}
else
{
- if (cfd->view.advanced.apply_cfdata)
- ok = cfd->view.advanced.apply_cfdata(cfd, cfd->cfdata);
+ if (cfd->view->advanced.apply_cfdata)
+ ok = cfd->view->advanced.apply_cfdata(cfd, cfd->cfdata);
}
if (ok) e_object_del(E_OBJECT(cfd));
}
cfd = dia->data;
if (cfd->view_type == E_CONFIG_DIALOG_CFDATA_TYPE_BASIC)
{
- if (cfd->view.basic.apply_cfdata)
- ok = cfd->view.basic.apply_cfdata(cfd, cfd->cfdata);
+ if (cfd->view->basic.apply_cfdata)
+ ok = cfd->view->basic.apply_cfdata(cfd, cfd->cfdata);
}
else
{
- if (cfd->view.advanced.apply_cfdata)
- ok = cfd->view.advanced.apply_cfdata(cfd, cfd->cfdata);
+ if (cfd->view->advanced.apply_cfdata)
+ ok = cfd->view->advanced.apply_cfdata(cfd, cfd->cfdata);
}
if ((ok) && (!cfd->hide_buttons))
{
int ok = 1;
cfd = dia->data;
- if (cfd->view.close_cfdata)
- ok = cfd->view.close_cfdata(cfd, cfd->cfdata);
+ if (cfd->view->close_cfdata)
+ ok = cfd->view->close_cfdata(cfd, cfd->cfdata);
if (ok)
e_object_del(E_OBJECT(dia));