diff --git a/widgets/textbox.c b/widgets/textbox.c index c3b5aee37..d24457eb3 100644 --- a/widgets/textbox.c +++ b/widgets/textbox.c @@ -1,3 +1,24 @@ +/* + * textbox.c - text box widget + * + * Copyright © 2007 Aldo Cortesi + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + #include #include "util.h" #include "widget.h" @@ -5,52 +26,47 @@ extern AwesomeConf globalconf; - -typedef struct Data Data; -struct Data +typedef struct { char *text; XColor fg; XColor bg; -}; - +} Data; static void -update(Widget *widget, char *text){ - Data *d; - d = (Data*) widget->data; +update(Widget *widget, char *text) +{ + Data *d = widget->data; if (d->text) p_delete(&d->text); d->text = a_strdup(text); } - static int textbox_draw(Widget *widget, DrawCtx *ctx, int offset, int used __attribute__ ((unused))) { VirtScreen vscreen = globalconf.screens[widget->statusbar->screen]; int width, location; - Data *d; - d = (Data*) widget->data; + Data *d = widget->data; + width = textwidth(ctx, vscreen.font, d->text); location = calculate_offset(vscreen.statusbar->width, width, offset, widget->alignment); + drawtext(ctx, location, 0, width, vscreen.statusbar->height, vscreen.font, d->text, d->fg, d->bg); return width; } - static void textbox_tell(Widget *widget, char *command) { update(widget, command); } - Widget * textbox_new(Statusbar *statusbar, cfg_t *config) { @@ -63,7 +79,6 @@ textbox_new(Statusbar *statusbar, cfg_t *config) w->draw = textbox_draw; w->tell = textbox_tell; - d = p_new(Data, 1); w->data = (void*) d;