Package: cdebconf Severity: wishlist Tags: patch Reduce the usage of casting to struct frontend_data
From: Otavio Salvador <[EMAIL PROTECTED]> Use a local variable to avoid casting when possible. This makes the code easier to read. Signed-off-by: Otavio Salvador <[EMAIL PROTECTED]> --- packages/cdebconf/src/modules/frontend/gtk/gtk.c | 25 +++++++++++----------- 1 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/cdebconf/src/modules/frontend/gtk/gtk.c b/packages/cdebconf/src/modules/frontend/gtk/gtk.c index 59a6135..9ea2928 100644 --- a/packages/cdebconf/src/modules/frontend/gtk/gtk.c +++ b/packages/cdebconf/src/modules/frontend/gtk/gtk.c @@ -98,13 +98,14 @@ void register_setter(void (*func)(void*, struct question*), void *data, struct question *q, struct frontend *obj) { struct setter_struct *s; + struct frontend_data *frontend_data = obj->data; s = malloc(sizeof(struct setter_struct)); s->func = func; s->data = data; s->q = q; - s->next = ((struct frontend_data*)obj->data)->setters; - ((struct frontend_data*)obj->data)->setters = s; + s->next = frontend_data->setters; + frontend_data->setters = s; } void free_description_data( GtkObject *obj, struct frontend_question_data* data ) @@ -1279,6 +1280,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window) GtkWidget *label_title, *h_title_box, *v_title_box, *logo_button; GList *focus_chain = NULL; int *ret_val; + struct frontend_data *data = obj->data; /* A logo is displayed in the upper area of the screen */ logo_button = gtk_image_new_from_file("/usr/share/graphics/logo_debian.png"); @@ -1287,7 +1289,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window) /* A label is used to display the fontend's title */ label_title = gtk_label_new(NULL); gtk_misc_set_alignment (GTK_MISC (label_title), 0, 0); - ((struct frontend_data*) obj->data)->title = label_title; + data->title = label_title; h_title_box = gtk_hbox_new (TRUE, 0); gtk_box_pack_start(GTK_BOX (h_title_box), label_title, TRUE, TRUE, DEFAULT_PADDING); v_title_box = gtk_vbox_new (TRUE, 0); @@ -1295,7 +1297,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window) /* This is the box were question(s) will be displayed */ targetbox = gtk_vbox_new (FALSE, 0); - ((struct frontend_data*) obj->data)->target_box = targetbox; + data->target_box = targetbox; actionbox = gtk_hbutton_box_new(); h_actionbox = gtk_hbox_new(FALSE, 0); @@ -1307,7 +1309,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window) button_screenshot = gtk_button_new_with_label (get_text(obj, "debconf/gtk-button-screenshot", "Screenshot")); g_signal_connect (G_OBJECT (button_screenshot), "clicked", G_CALLBACK (screenshot_button_callback), obj ); gtk_box_pack_start (GTK_BOX(actionbox), button_screenshot, TRUE, TRUE, DEFAULT_PADDING); - ((struct frontend_data*) obj->data)->button_screenshot = button_screenshot; + data->button_screenshot = button_screenshot; gtk_widget_set_sensitive (button_screenshot, FALSE); /* Here are the back and forward buttons */ @@ -1328,8 +1330,8 @@ void set_design_elements(struct frontend *obj, GtkWidget *window) gtk_box_pack_start (GTK_BOX(actionbox), button_next, TRUE, TRUE, DEFAULT_PADDING); GTK_WIDGET_SET_FLAGS (button_next, GTK_CAN_DEFAULT); - ((struct frontend_data*) obj->data)->button_prev = button_prev; - ((struct frontend_data*) obj->data)->button_next = button_next; + data->button_prev = button_prev; + data->button_next = button_next; gtk_widget_set_sensitive (button_prev, FALSE); gtk_widget_set_sensitive (button_next, FALSE); @@ -1341,7 +1343,7 @@ void set_design_elements(struct frontend *obj, GtkWidget *window) g_signal_connect (G_OBJECT(button_cancel), "clicked", G_CALLBACK(cancel_button_callback), obj); gtk_box_pack_start (GTK_BOX(actionbox), button_cancel, TRUE, TRUE, DEFAULT_PADDING); - ((struct frontend_data*) obj->data)->button_cancel = button_cancel; + data->button_cancel = button_cancel; gtk_widget_set_sensitive (button_cancel, FALSE); /* focus order inside actionbox */ @@ -1396,7 +1398,7 @@ void *eventhandler_thread() static int gtk_initialize(struct frontend *obj, struct configuration *conf) { - struct frontend_data *fe_data; + struct frontend_data *fe_data = obj->data; GtkWidget *window; GThread *thread_events_listener; GError *err_events_listener = NULL ; @@ -1408,13 +1410,12 @@ static int gtk_initialize(struct frontend *obj, struct configuration *conf) name[1] = NULL; /* INFO(INFO_DEBUG, "GTK_DI - gtk_initialize() called"); */ - obj->data = NEW(struct frontend_data); obj->interactive = 1; /* It's recomended setting fields in frontend_data structure to NULL, * as otherwise older GTKDFB versions may cause segfaults. */ - fe_data = obj->data; + fe_data = NEW(struct frontend_data); fe_data->window = NULL; fe_data->title = NULL; fe_data->target_box = NULL; @@ -1447,7 +1448,7 @@ static int gtk_initialize(struct frontend *obj, struct configuration *conf) gtk_window_set_decorated (GTK_WINDOW (window), TRUE); set_design_elements (obj, window); gtk_rc_reparse_all(); - ((struct frontend_data*) obj->data)->window = window; + fe_data->window = window; gtk_widget_set_default_direction(get_text_direction(obj)); gtk_widget_show_all(window); -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.22-rc2-686 (SMP w/1 CPU core) Locale: LANG=pt_BR.UTF-8, LC_CTYPE=pt_BR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages cdebconf depends on: ii libatk1.0-0 1.18.0-2 The ATK accessibility toolkit ii libc6 2.5-9 GNU C Library: Shared libraries ii libcairo2 1.4.6-1.1 The Cairo 2D vector graphics libra ii libdebian-installer4 0.51 Library of common debian-installer ii libdirectfb-0.9-25 0.9.25.1-5 direct frame buffer graphics - sha ii libglib2.0-0 2.12.12-1 The GLib library of C routines pn libgtk-directfb-2.0-0 <none> (no description available) ii libgtk2.0-0 2.10.12-2 The GTK+ graphical user interface ii libnewt0.52 0.52.2-10 Not Erik's Windowing Toolkit - tex ii libpango1.0-0 1.16.4-1 Layout and rendering of internatio pn libtextwrap1 <none> (no description available) cdebconf recommends no packages. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]