diff --git a/src/ChangeLog b/src/ChangeLog index 2a7ee1984..c625b7d62 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -9,6 +9,12 @@ * widget.c: Added code to handle multiple types of functions for commands. * widget.h: Likewise. + * widget.h (struct WButtonBar): Moved into widget.c. + * widget.c (struct WButtonBar): Moved from widget.h. + * boxes.c: Don't dereference WButtonBar. + * help.c: Likewise. + * layout.c: Likewise. + * view.c: Likewise. 2005-06-08 Roland Illig diff --git a/src/boxes.c b/src/boxes.c index e03d359bd..6066cedce 100644 --- a/src/boxes.c +++ b/src/boxes.c @@ -676,8 +676,8 @@ tree_box (const char *current_dir) add_widget (dlg, mytree); bar = buttonbar_new(1); add_widget (dlg, bar); - bar->widget.x = 0; - bar->widget.y = LINES - 1; + ((Widget *) bar)->x = 0; + ((Widget *) bar)->y = LINES - 1; run_dlg (dlg); if (dlg->ret_value == B_ENTER) diff --git a/src/help.c b/src/help.c index 78ea111db..5540677f1 100644 --- a/src/help.c +++ b/src/help.c @@ -837,8 +837,8 @@ interactive_display (const char *filename, const char *node) } help_bar = buttonbar_new (1); - help_bar->widget.y -= whelp->y; - help_bar->widget.x -= whelp->x; + ((Widget *) help_bar)->y -= whelp->y; + ((Widget *) help_bar)->x -= whelp->x; md = mousedispatch_new (1, 1, help_lines, HELP_WINDOW_WIDTH - 2); diff --git a/src/layout.c b/src/layout.c index b3256c689..5832a04cf 100644 --- a/src/layout.c +++ b/src/layout.c @@ -705,8 +705,8 @@ setup_panels (void) widget_set_size (&the_prompt->widget, LINES, COLS, 0, 0); } - widget_set_size (&the_bar->widget, LINES - 1, 0, keybar_visible, COLS); - the_bar->visible = keybar_visible; + widget_set_size ((Widget *) the_bar, LINES - 1, 0, keybar_visible, COLS); + buttonbar_set_visible (the_bar, keybar_visible); /* Output window */ if (console_flag && output_lines) { diff --git a/src/view.c b/src/view.c index 6b85cc97b..30f7f98a3 100644 --- a/src/view.c +++ b/src/view.c @@ -3118,7 +3118,7 @@ view_adjust_size (Dlg_head *h) view = (WView *) find_widget_type (h, (callback_fn) view_callback); bar = find_buttonbar (h); widget_set_size (&view->widget, 0, 0, LINES - 1, COLS); - widget_set_size (&bar->widget, LINES - 1, 0, 1, COLS); + widget_set_size ((Widget *) bar, LINES - 1, 0, 1, COLS); view_update_bytes_per_line (view); } diff --git a/src/widget.c b/src/widget.c index 2d2e44ef5..34915e2bf 100644 --- a/src/widget.c +++ b/src/widget.c @@ -48,6 +48,20 @@ #define HISTORY_FILE_NAME ".mc/history" +struct WButtonBar { + Widget widget; + int visible; /* Is it visible? */ + struct { + char *text; + enum { BBFUNC_NONE, BBFUNC_VOID, BBFUNC_PTR } tag; + union { + voidfn fn_void; + buttonbarfn fn_ptr; + } u; + void *data; + } labels [10]; +}; + static int button_event (Gpm_Event *event, void *); int quote = 0; @@ -2401,6 +2415,12 @@ buttonbar_set_label (Dlg_head *h, int idx, const char *text, void (*cback) (void bb->labels[idx - 1].u.fn_void = cback; } +void +buttonbar_set_visible (WButtonBar *bb, gboolean visible) +{ + bb->visible = visible; +} + void buttonbar_redraw (Dlg_head *h) { diff --git a/src/widget.h b/src/widget.h index 5eaaa9fcb..84d5a81ba 100644 --- a/src/widget.h +++ b/src/widget.h @@ -123,23 +123,6 @@ typedef struct WGroupbox { char *title; } WGroupbox; -typedef void (*voidfn)(void); -typedef void (*buttonbarfn)(void *); - -typedef struct { - Widget widget; - int visible; /* Is it visible? */ - struct { - char *text; - enum { BBFUNC_NONE, BBFUNC_VOID, BBFUNC_PTR } tag; - union { - voidfn fn_void; - buttonbarfn fn_ptr; - } u; - void *data; - } labels [10]; -} WButtonBar; - /* Constructors */ WButton *button_new (int y, int x, int action, int flags, const char *text, bcback callback); @@ -201,13 +184,20 @@ char *listbox_add_item (WListbox *l, enum append_pos pos, int /* Hintbar routines */ -/* Buttonbar routines */ +/* Buttonbar */ + +typedef void (*voidfn)(void); +typedef void (*buttonbarfn)(void *); + +typedef struct WButtonBar WButtonBar; + WButtonBar *buttonbar_new (int visible); WButtonBar *find_buttonbar (Dlg_head *h); void buttonbar_clear_label (Dlg_head *, int idx); void buttonbar_set_label (Dlg_head *, int index, const char *text, voidfn); void buttonbar_set_label_data (Dlg_head *h, int idx, const char *text, buttonbarfn cback, void *data); +void buttonbar_set_visible (WButtonBar *, gboolean); void buttonbar_redraw (Dlg_head *h); #endif