Bug#426745: cdebconf-gtk-udeb: Reduce the usage of casting to struct frontend_data
Package: cdebconf
Severity: wishlist
Tags: patch
Reduce the usage of casting to struct frontend_data
From: Otavio Salvador <otavio@ossystems.com.br>
Use a local variable to avoid casting when possible. This makes the
code easier to read.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
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.
Reply to: