ltk

Socket-based GUI for X11 (WIP)
git clone git://lumidify.org/ltk.git (fast, but not encrypted)
git clone https://lumidify.org/git/ltk.git (encrypted, but very slow)
Log | Files | Refs | README | LICENSE

commit df7e4a4517d0078deebaac2348838d8e4658d11f
parent 234dfa1c2918437f40a27a2fe70d6faf72289eaf
Author: lumidify <nobody@lumidify.org>
Date:   Sat, 20 Feb 2021 22:52:57 +0100

Fix lots of warnings

...but at what cost?
Seriously, I need to rethink some things to make this less ugly.

Diffstat:
Mbox.c | 52++++++++++++++++++++++++++--------------------------
Mbutton.c | 26++++++++++++++------------
Mcolor.c | 2++
Mdraw.c | 37+++++++++++++++++++++----------------
Mgrid.c | 46++++++++++++++++++++++++----------------------
Mgrid.h | 16++++++++--------
Mlabel.c | 7++++---
Mltkc.c | 2+-
Mltkd.c | 10++++++----
Mmemory.c | 2+-
Mscrollbar.c | 15+++++++++------
Mscrollbar.h | 4++--
Mstrtonum.c | 4++--
Mtext_pango.c | 3+++
Mtext_stb.c | 29++++++++++++++++-------------
Mutil.c | 2+-
Mutil.h | 4++--
17 files changed, 142 insertions(+), 119 deletions(-)

diff --git a/box.c b/box.c @@ -25,6 +25,7 @@ #include <stdlib.h> #include <stdarg.h> #include <stdint.h> +#include <string.h> #include <X11/Xlib.h> #include <X11/Xutil.h> @@ -45,7 +46,7 @@ static void ltk_box_child_size_change(ltk_widget *self, ltk_widget *widget); static int ltk_box_add(ltk_window *window, ltk_widget *widget, ltk_box *box, unsigned short sticky, char **errstr); static int ltk_box_remove(ltk_window *window, ltk_widget *widget, ltk_widget *self, char **errstr); /* static int ltk_box_clear(ltk_window *window, ltk_box *box, int shallow, char **errstr); */ -static void ltk_box_scroll(ltk_box *box); +static void ltk_box_scroll(ltk_widget *self); static int ltk_box_mouse_event(ltk_box *box, XEvent event, void (*handler)(ltk_widget *, XEvent)); static int ltk_box_mouse_press(ltk_widget *self, XEvent event); static int ltk_box_mouse_release(ltk_widget *self, XEvent event); @@ -76,7 +77,7 @@ static int ltk_box_cmd_create( static void ltk_box_draw(ltk_widget *self, ltk_rect clip) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; ltk_widget *ptr; ltk_rect real_clip = ltk_rect_intersect(box->widget.rect, clip); for (size_t i = 0; i < box->num_widgets; i++) { @@ -85,7 +86,7 @@ ltk_box_draw(ltk_widget *self, ltk_rect clip) { obviously outside of clipping rect */ ptr->draw(ptr, real_clip); } - box->sc->widget.draw(box->sc, real_clip); + box->sc->widget.draw((ltk_widget *)box->sc, real_clip); } static ltk_box * @@ -112,7 +113,7 @@ ltk_box_create(ltk_window *window, const char *id, ltk_orientation orient) { static void ltk_box_destroy(ltk_widget *self, int shallow) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; ltk_widget *ptr; if (!shallow) { for (size_t i = 0; i < box->num_widgets; i++) { @@ -123,7 +124,7 @@ ltk_box_destroy(ltk_widget *self, int shallow) { ltk_free(box->widgets); ltk_remove_widget(box->widget.id); ltk_free(box->widget.id); - box->sc->widget.destroy(box->sc, 0); + box->sc->widget.destroy((ltk_widget *)box->sc, 0); ltk_free(box); } @@ -133,7 +134,7 @@ ltk_box_destroy(ltk_widget *self, int shallow) { (in the scrolled direction) when resized. */ static void ltk_recalculate_box(ltk_widget *self) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; ltk_widget *ptr; ltk_rect *sc_rect = &box->sc->widget.rect; int offset = box->orient == LTK_HORIZONTAL ? box->widget.rect.x : box->widget.rect.y; @@ -189,7 +190,7 @@ ltk_recalculate_box(ltk_widget *self) { static void ltk_box_child_size_change(ltk_widget *self, ltk_widget *widget) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; short size_changed = 0; /* This is always reset here - if it needs to be changed, the resize function called by the last child_size_change @@ -214,9 +215,9 @@ ltk_box_child_size_change(ltk_widget *self, ltk_widget *widget) { } if (size_changed && box->widget.parent && box->widget.parent->child_size_change) - box->widget.parent->child_size_change(box->widget.parent, box); + box->widget.parent->child_size_change(box->widget.parent, (ltk_widget *)box); else - ltk_recalculate_box(box); + ltk_recalculate_box((ltk_widget *)box); } static int @@ -245,9 +246,9 @@ ltk_box_add(ltk_window *window, ltk_widget *widget, ltk_box *box, unsigned short if (widget->ideal_w + sc_w > box->widget.ideal_w) box->widget.ideal_w = widget->ideal_w + sc_w; } - widget->parent = box; + widget->parent = (ltk_widget *)box; widget->sticky = sticky; - ltk_box_child_size_change(box, widget); + ltk_box_child_size_change((ltk_widget *)box, widget); ltk_window_invalidate_rect(window, box->widget.rect); return 0; @@ -255,10 +256,10 @@ ltk_box_add(ltk_window *window, ltk_widget *widget, ltk_box *box, unsigned short static int ltk_box_remove(ltk_window *window, ltk_widget *widget, ltk_widget *self, char **errstr) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; int sc_w = box->sc->widget.rect.w; int sc_h = box->sc->widget.rect.h; - if (widget->parent != box) { + if (widget->parent != (ltk_widget *)box) { *errstr = "Widget isn't contained in given box.\n"; return 1; } @@ -298,19 +299,18 @@ ltk_box_remove(ltk_window *window, ltk_widget *widget, ltk_widget *self, char ** } static void -ltk_box_scroll(ltk_box *box) { - ltk_recalculate_box(box); +ltk_box_scroll(ltk_widget *self) { + ltk_box *box = (ltk_box *)self; + ltk_recalculate_box(self); ltk_window_invalidate_rect(box->widget.window, box->widget.rect); } static int ltk_box_mouse_event(ltk_box *box, XEvent event, void (*handler)(ltk_widget *, XEvent)) { - int pos, start, size; ltk_widget *widget; - int old_sc_pos = box->sc->cur_pos; if (ltk_collide_rect(box->sc->widget.rect, event.xbutton.x, event.xbutton.y)) { - handler(box->sc, event); + handler((ltk_widget *)box->sc, event); return 0; } @@ -327,19 +327,19 @@ ltk_box_mouse_event(ltk_box *box, XEvent event, void (*handler)(ltk_widget *, XE static int ltk_box_mouse_press(ltk_widget *self, XEvent event) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; return ltk_box_mouse_event(box, event, &ltk_widget_mouse_press_event); } static int ltk_box_mouse_release(ltk_widget *self, XEvent event) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; return ltk_box_mouse_event(box, event, &ltk_widget_mouse_release_event); } static int ltk_box_motion_notify(ltk_widget *self, XEvent event) { - ltk_box *box = self; + ltk_box *box = (ltk_box *)self; return ltk_box_mouse_event(box, event, &ltk_widget_motion_notify_event); } @@ -359,7 +359,7 @@ ltk_box_cmd_add( *errstr = "Invalid number of arguments.\n"; return 1; } - box = ltk_get_widget(tokens[1], LTK_BOX, errstr); + box = (ltk_box *)ltk_get_widget(tokens[1], LTK_BOX, errstr); widget = ltk_get_widget(tokens[3], LTK_WIDGET, errstr); if (!box || !widget) { *errstr = "Invalid widget ID.\n"; @@ -400,14 +400,14 @@ ltk_box_cmd_remove( *errstr = "Invalid number of arguments.\n"; return 1; } - box = ltk_get_widget(tokens[1], LTK_BOX, errstr); + box = (ltk_box *)ltk_get_widget(tokens[1], LTK_BOX, errstr); widget = ltk_get_widget(tokens[3], LTK_WIDGET, errstr); if (!box || !widget) { *errstr = "Invalid widget ID.\n"; return 1; } - return ltk_box_remove(window, widget, box, errstr); + return ltk_box_remove(window, widget, (ltk_widget *)box, errstr); } /* box <box id> create <orientation> */ @@ -436,8 +436,8 @@ ltk_box_cmd_create( *errstr = "Invalid orientation.\n"; return 1; } - box = ltk_box_create(window, tokens[1], orient); - ltk_set_widget(box, tokens[1]); + box = (ltk_box *)ltk_box_create(window, tokens[1], orient); + ltk_set_widget((ltk_widget *)box, tokens[1]); return 0; } diff --git a/button.c b/button.c @@ -127,7 +127,7 @@ ltk_button_ini_handler(ltk_window *window, const char *prop, const char *value) static void ltk_button_draw(ltk_widget *self, ltk_rect clip) { - ltk_button *button = self; + ltk_button *button = (ltk_button *)self; ltk_window *window = button->widget.window; ltk_rect rect = button->widget.rect; ltk_rect clip_final = ltk_rect_intersect(clip, rect); @@ -188,16 +188,17 @@ ltk_button_redraw_pixmap(ltk_button *button) { /* FIXME: Make this amortised constant; make it generic for all widgets */ static void ltk_button_resize(ltk_widget *self) { - ltk_button *button = self; + ltk_button *button = (ltk_button *)self; Window win; - int x, y, w, h, bw, d; - int new_w, new_h; + int x, y; + unsigned int w, h, bw, d; + unsigned int new_w, new_h; ltk_window *window = button->widget.window; ltk_rect rect = button->widget.rect; XGetGeometry(window->dpy, button->pixmap, &win, &x, &y, &w, &h, &bw, &d); - new_w = w < rect.w ? rect.w : w; - new_h = h < rect.h ? rect.h : h; + new_w = (int)w < rect.w ? rect.w : (int)w; + new_h = (int)h < rect.h ? rect.h : (int)h; if (new_w < w && new_h < h) return; XFreePixmap(window->dpy, button->pixmap); @@ -208,8 +209,7 @@ ltk_button_resize(ltk_widget *self) { static void ltk_button_change_state(ltk_widget *self) { - ltk_button *button = self; - ltk_window *window = button->widget.window; + ltk_button *button = (ltk_button *)self; LtkColor *fill; switch (button->widget.state) { case LTK_NORMAL: @@ -233,7 +233,8 @@ ltk_button_change_state(ltk_widget *self) { static int ltk_button_mouse_release(ltk_widget *self, XEvent event) { - ltk_button *button = self; + (void)event; + ltk_button *button = (ltk_button *)self; ltk_queue_event(button->widget.window, LTK_EVENT_BUTTON, button->widget.id, "button_click"); return 1; } @@ -257,14 +258,15 @@ ltk_button_create(ltk_window *window, const char *id, const char *text) { button->pixmap = XCreatePixmap(window->dpy, window->xwindow, button->widget.ideal_w, button->widget.ideal_h, window->depth); /* render text */ - ltk_button_change_state(button); + ltk_button_change_state((ltk_widget *)button); return button; } static void ltk_button_destroy(ltk_widget *self, int shallow) { - ltk_button *button = self; + (void)shallow; + ltk_button *button = (ltk_button *)self; if (!button) { ltk_warn("Tried to destroy NULL button.\n"); return; @@ -292,7 +294,7 @@ ltk_button_cmd_create( return 1; } button = ltk_button_create(window, tokens[1], tokens[3]); - ltk_set_widget(button, tokens[1]); + ltk_set_widget((ltk_widget *)button, tokens[1]); return 0; } diff --git a/color.c b/color.c @@ -15,5 +15,7 @@ ltk_color_create(Display *dpy, int screen, Colormap cm, const char *hex, LtkColo /* FIXME: replace with XftColorAllocValue; error checking */ #if USE_PANGO == 1 XftColorAllocName(dpy, DefaultVisual(dpy, screen), cm, hex, &col->xftcolor); + #else + (void)screen; #endif } diff --git a/draw.c b/draw.c @@ -36,7 +36,7 @@ #include "util.h" #include "draw.h" -static void ltk_draw_draw(ltk_widget *self); +static void ltk_draw_draw(ltk_widget *self, ltk_rect clip_rect); static ltk_draw *ltk_draw_create(ltk_window *window, const char *id, int w, int h, const char *color); static void ltk_draw_resize(ltk_widget *self); @@ -72,8 +72,9 @@ static int ltk_draw_cmd_create( char **errstr); static void -ltk_draw_draw(ltk_widget *self) { - ltk_draw *draw = self; +ltk_draw_draw(ltk_widget *self, ltk_rect clip_rect) { + (void)clip_rect; /* FIXME: actually use this */ + ltk_draw *draw = (ltk_draw *)self; ltk_window *window = draw->widget.window; ltk_rect rect = draw->widget.rect; XCopyArea(window->dpy, draw->pix, window->xwindow, window->gc, 0, 0, rect.w, rect.h, rect.x, rect.y); @@ -103,16 +104,18 @@ ltk_draw_create(ltk_window *window, const char *id, int w, int h, const char *co static void ltk_draw_resize(ltk_widget *self) { - ltk_draw *draw = self; + ltk_draw *draw = (ltk_draw *)self; Window win; - int x, y, w, h, bw, d; - int new_w, new_h; + int x, y; + unsigned int w, h, bw, d; + unsigned int new_w, new_h; ltk_window *window = draw->widget.window; ltk_rect rect = draw->widget.rect; XGetGeometry(window->dpy, draw->pix, &win, &x, &y, &w, &h, &bw, &d); - new_w = w < rect.w ? rect.w : w; - new_h = h < rect.h ? rect.h : h; + /* FIXME: get rid of casts */ + new_w = (int)w < rect.w ? rect.w : (int)w; + new_h = (int)h < rect.h ? rect.h : (int)h; if (new_w < w && new_h < h) return; Pixmap tmp = XCreatePixmap(window->dpy, window->xwindow, @@ -127,7 +130,8 @@ ltk_draw_resize(ltk_widget *self) { static void ltk_draw_destroy(ltk_widget *self, int shallow) { - ltk_draw *draw = self; + (void)shallow; + ltk_draw *draw = (ltk_draw *)self; if (!draw) { ltk_warn("Tried to destroy NULL draw.\n"); return; @@ -141,11 +145,12 @@ ltk_draw_destroy(ltk_widget *self, int shallow) { static void ltk_draw_clear(ltk_window *window, ltk_draw *draw) { Window win; - int x, y, w, h, bw, d; + int x, y; + unsigned int w, h, bw, d; XGetGeometry(window->dpy, draw->pix, &win, &x, &y, &w, &h, &bw, &d); XSetForeground(window->dpy, window->gc, draw->bg.pixel); XFillRectangle(window->dpy, window->xwindow, window->gc, 0, 0, w, h); - ltk_draw_draw(draw); + ltk_draw_draw((ltk_widget *)draw, draw->widget.rect); } /* FIXME: Error return */ @@ -204,7 +209,7 @@ ltk_draw_cmd_clear( *errstr = "Invalid number of arguments.\n"; return 1; } - draw = ltk_get_widget(tokens[1], LTK_DRAW, errstr); + draw = (ltk_draw *)ltk_get_widget(tokens[1], LTK_DRAW, errstr); if (!draw) return 1; ltk_draw_clear(window, draw); @@ -222,7 +227,7 @@ ltk_draw_cmd_set_color( *errstr = "Invalid number of arguments.\n"; return 1; } - draw = ltk_get_widget(tokens[1], LTK_DRAW, errstr); + draw = (ltk_draw *)ltk_get_widget(tokens[1], LTK_DRAW, errstr); if (!draw) return 1; ltk_draw_set_color(window, draw, tokens[3]); @@ -242,7 +247,7 @@ ltk_draw_cmd_line( *errstr = "Invalid number of arguments.\n"; return 1; } - draw = ltk_get_widget(tokens[1], LTK_DRAW, errstr); + draw = (ltk_draw *)ltk_get_widget(tokens[1], LTK_DRAW, errstr); if (!draw) return 1; x1 = strtonum(tokens[3], 0, 100000, &errstr_num); if (errstr_num) { @@ -282,7 +287,7 @@ ltk_draw_cmd_rect( *errstr = "Invalid number of arguments.\n"; return 1; } - draw = ltk_get_widget(tokens[1], LTK_DRAW, errstr); + draw = (ltk_draw *)ltk_get_widget(tokens[1], LTK_DRAW, errstr); if (!draw) return 1; x = strtonum(tokens[3], 0, 100000, &errstr_num); if (errstr_num) { @@ -343,7 +348,7 @@ ltk_draw_cmd_create( return 1; } draw = ltk_draw_create(window, tokens[1], w, h, tokens[5]); - ltk_set_widget(draw, tokens[1]); + ltk_set_widget((ltk_widget *)draw, tokens[1]); return 0; } diff --git a/grid.c b/grid.c @@ -89,18 +89,18 @@ static int ltk_grid_cmd_set_column_weight( static void ltk_grid_set_row_weight(ltk_grid *grid, int row, int weight) { grid->row_weights[row] = weight; - ltk_recalculate_grid(grid); + ltk_recalculate_grid((ltk_widget *)grid); } static void ltk_grid_set_column_weight(ltk_grid *grid, int column, int weight) { grid->column_weights[column] = weight; - ltk_recalculate_grid(grid); + ltk_recalculate_grid((ltk_widget *)grid); } static void ltk_grid_draw(ltk_widget *self, ltk_rect clip) { - ltk_grid *grid = self; + ltk_grid *grid = (ltk_grid *)self; int i; for (i = 0; i < grid->rows * grid->columns; i++) { if (!grid->widget_grid[i]) @@ -151,13 +151,13 @@ ltk_grid_create(ltk_window *window, const char *id, int rows, int columns) { grid->widget_grid[i] = NULL; } - ltk_recalculate_grid(grid); + ltk_recalculate_grid((ltk_widget *)grid); return grid; } static void ltk_grid_destroy(ltk_widget *self, int shallow) { - ltk_grid *grid = self; + ltk_grid *grid = (ltk_grid *)self; ltk_widget *ptr; if (!shallow) { for (int i = 0; i < grid->rows * grid->columns; i++) { @@ -188,7 +188,7 @@ ltk_grid_destroy(ltk_widget *self, int shallow) { static void ltk_recalculate_grid(ltk_widget *self) { - ltk_grid *grid = self; + ltk_grid *grid = (ltk_grid *)self; unsigned int height_static = 0, width_static = 0; unsigned int total_row_weight = 0, total_column_weight = 0; float height_unit = 0, width_unit = 0; @@ -275,7 +275,7 @@ ltk_recalculate_grid(ltk_widget *self) { /* FIXME: Maybe add debug stuff to check that grid is actually parent of widget */ static void ltk_grid_child_size_change(ltk_widget *self, ltk_widget *widget) { - ltk_grid *grid = self; + ltk_grid *grid = (ltk_grid *)self; short size_changed = 0; widget->rect.w = widget->ideal_w; widget->rect.h = widget->ideal_h; @@ -292,9 +292,9 @@ ltk_grid_child_size_change(ltk_widget *self, ltk_widget *widget) { size_changed = 1; } if (size_changed && grid->widget.parent && grid->widget.parent->child_size_change) - grid->widget.parent->child_size_change(grid->widget.parent, grid); + grid->widget.parent->child_size_change(grid->widget.parent, (ltk_widget *)grid); else - ltk_recalculate_grid(grid); + ltk_recalculate_grid((ltk_widget *)grid); } /* FIXME: Check if widget already exists at position */ @@ -315,8 +315,8 @@ ltk_grid_add(ltk_window *window, ltk_widget *widget, ltk_grid *grid, grid->widget_grid[i * grid->columns + j] = widget; } } - widget->parent = grid; - ltk_grid_child_size_change(grid, widget); + widget->parent = (ltk_widget *)grid; + ltk_grid_child_size_change((ltk_widget *)grid, widget); ltk_window_invalidate_rect(window, grid->widget.rect); return 0; @@ -324,8 +324,8 @@ ltk_grid_add(ltk_window *window, ltk_widget *widget, ltk_grid *grid, static int ltk_grid_ungrid(ltk_window *window, ltk_widget *widget, ltk_widget *self, char **errstr) { - ltk_grid *grid = self; - if (widget->parent != grid) { + ltk_grid *grid = (ltk_grid *)self; + if (widget->parent != (ltk_widget *)grid) { *errstr = "Widget isn't gridded in given grid.\n"; return 1; } @@ -364,7 +364,7 @@ ltk_grid_find_nearest_row(ltk_grid *grid, int y) { static int ltk_grid_mouse_press(ltk_widget *self, XEvent event) { - ltk_grid *grid = self; + ltk_grid *grid = (ltk_grid *)self; int x = event.xbutton.x; int y = event.xbutton.y; int row = ltk_grid_find_nearest_row(grid, y); @@ -381,7 +381,7 @@ ltk_grid_mouse_press(ltk_widget *self, XEvent event) { static int ltk_grid_mouse_release(ltk_widget *self, XEvent event) { - ltk_grid *grid = self; + ltk_grid *grid = (ltk_grid *)self; int x = event.xbutton.x; int y = event.xbutton.y; int row = ltk_grid_find_nearest_row(grid, y); @@ -398,7 +398,7 @@ ltk_grid_mouse_release(ltk_widget *self, XEvent event) { static int ltk_grid_motion_notify(ltk_widget *self, XEvent event) { - ltk_grid *grid = self; + ltk_grid *grid = (ltk_grid *)self; /* FIXME: Why does it check this? */ short pressed = (event.xmotion.state & Button1Mask) == Button1Mask; if (pressed) @@ -434,7 +434,7 @@ ltk_grid_cmd_add( *errstr = "Invalid number of arguments.\n"; return 1; } - grid = ltk_get_widget(tokens[1], LTK_GRID, errstr); + grid = (ltk_grid *)ltk_get_widget(tokens[1], LTK_GRID, errstr); widget = ltk_get_widget(tokens[3], LTK_WIDGET, errstr); if (!grid || !widget) { *errstr = "Invalid widget ID.\n"; @@ -494,10 +494,10 @@ ltk_grid_cmd_ungrid( *errstr = "Invalid number of arguments.\n"; return 1; } - grid = ltk_get_widget(tokens[1], LTK_GRID, errstr); + grid = (ltk_grid *)ltk_get_widget(tokens[1], LTK_GRID, errstr); widget = ltk_get_widget(tokens[3], LTK_WIDGET, errstr); if (!grid || !widget) return 1; - return ltk_grid_ungrid(window, widget, grid, errstr); + return ltk_grid_ungrid(window, widget, (ltk_widget *)grid, errstr); } /* grid <grid id> create <rows> <columns> */ @@ -529,7 +529,7 @@ ltk_grid_cmd_create( return 1; } grid = ltk_grid_create(window, tokens[1], rows, columns); - ltk_set_widget(grid, tokens[1]); + ltk_set_widget((ltk_widget *)grid, tokens[1]); return 0; } @@ -541,6 +541,7 @@ ltk_grid_cmd_set_row_weight( char **tokens, size_t num_tokens, char **errstr) { + (void)window; ltk_grid *grid; int row, weight; const char *errstr_num; @@ -548,7 +549,7 @@ ltk_grid_cmd_set_row_weight( *errstr = "Invalid number of arguments.\n"; return 1; } - grid = ltk_get_widget(tokens[1], LTK_GRID, errstr); + grid = (ltk_grid *)ltk_get_widget(tokens[1], LTK_GRID, errstr); if (!grid) return 1; row = strtonum(tokens[3], 0, grid->rows, &errstr_num); if (errstr_num) { @@ -572,6 +573,7 @@ ltk_grid_cmd_set_column_weight( char **tokens, size_t num_tokens, char **errstr) { + (void)window; ltk_grid *grid; int column, weight; const char *errstr_num; @@ -579,7 +581,7 @@ ltk_grid_cmd_set_column_weight( *errstr = "Invalid number of arguments.\n"; return 1; } - grid = ltk_get_widget(tokens[1], LTK_GRID, errstr); + grid = (ltk_grid *)ltk_get_widget(tokens[1], LTK_GRID, errstr); if (!grid) return 1; column = strtonum(tokens[3], 0, grid->columns, &errstr_num); if (errstr_num) { diff --git a/grid.h b/grid.h @@ -31,15 +31,15 @@ */ typedef struct { ltk_widget widget; - unsigned int rows; - unsigned int columns; + int rows; + int columns; ltk_widget **widget_grid; - unsigned int *row_heights; - unsigned int *column_widths; - unsigned int *row_weights; - unsigned int *column_weights; - unsigned int *row_pos; - unsigned int *column_pos; + int *row_heights; + int *column_widths; + int *row_weights; + int *column_weights; + int *row_pos; + int *column_pos; } ltk_grid; int ltk_grid_cmd(ltk_window *window, char **tokens, size_t num_tokens, char **errstr); diff --git a/label.c b/label.c @@ -74,7 +74,7 @@ ltk_label_ini_handler(ltk_window *window, const char *prop, const char *value) { static void ltk_label_draw(ltk_widget *self, ltk_rect clip) { - ltk_label *label = self; + ltk_label *label = (ltk_label *)self; ltk_window *window = label->widget.window; ltk_rect rect = label->widget.rect; ltk_rect clip_final = ltk_rect_intersect(clip, rect); @@ -119,7 +119,8 @@ ltk_label_create(ltk_window *window, const char *id, const char *text) { static void ltk_label_destroy(ltk_widget *self, int shallow) { - ltk_label *label = self; + (void)shallow; + ltk_label *label = (ltk_label *)self; if (!label) { ltk_warn("Tried to destroy NULL label.\n"); return; @@ -147,7 +148,7 @@ ltk_label_cmd_create( return 1; } label = ltk_label_create(window, tokens[1], tokens[3]); - ltk_set_widget(label, tokens[1]); + ltk_set_widget((ltk_widget *)label, tokens[1]); return 0; } diff --git a/ltkc.c b/ltkc.c @@ -59,7 +59,7 @@ int main(int argc, char *argv[]) { struct timeval tv, tv_master; tv_master.tv_sec = 0; tv_master.tv_usec = 20000; - int path_size; + size_t path_size; if (argc != 2) { (void)fprintf(stderr, "USAGE: ltkc <socket id>\n"); diff --git a/ltkd.c b/ltkd.c @@ -335,7 +335,6 @@ get_sock_path(char *basedir, Window id) { static FILE * open_log(char *dir) { - int len; FILE *f; char *path; @@ -384,6 +383,7 @@ ltk_cleanup(void) { void ltk_quit(ltk_window *window) { + (void)window; running = 0; } @@ -427,6 +427,9 @@ ltk_set_root_widget_cmd( return 0; } +/* FIXME */ +#undef MAX +#undef MIN #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) @@ -509,7 +512,7 @@ static void ltk_window_other_event(ltk_window *window, XEvent event) { ltk_widget *ptr = window->root_widget; if (event.type == ConfigureNotify) { - unsigned int w, h; + int w, h; w = event.xconfigure.width; h = event.xconfigure.height; int orig_w = window->rect.w; @@ -532,7 +535,7 @@ ltk_window_other_event(ltk_window *window, XEvent event) { r.h = event.xexpose.height; ltk_window_invalidate_rect(window, r); } else if (event.type == ClientMessage - && event.xclient.data.l[0] == window->wm_delete_msg) { + && (Atom)event.xclient.data.l[0] == window->wm_delete_msg) { ltk_quit(window); } } @@ -1187,7 +1190,6 @@ ltk_widget_destroy( size_t num_tokens, char **errstr) { int err = 0, shallow = 1; - khint_t k; if (num_tokens != 2 && num_tokens != 3) { *errstr = "Invalid number of arguments.\n"; return 1; diff --git a/memory.c b/memory.c @@ -43,7 +43,7 @@ char * ltk_strdup_debug(const char *s, const char *caller, const char *file, int line) { char *str = strdup(s); fprintf(stderr, "DEBUG: strdup %p to %p in %s (%s:%d)\n", - s, str, caller, file, line); + (void *)s, (void *)str, caller, file, line); if (!str) ltk_fatal("Out of memory.\n"); return str; diff --git a/scrollbar.c b/scrollbar.c @@ -106,7 +106,8 @@ ltk_scrollbar_set_virtual_size(ltk_scrollbar *scrollbar, int virtual_size) { static void ltk_scrollbar_draw(ltk_widget *self, ltk_rect clip) { - ltk_scrollbar *scrollbar = self; + (void)clip; /* FIXME: actually use this */ + ltk_scrollbar *scrollbar = (ltk_scrollbar *)self; LtkColor *bg, *fg; int handle_x, handle_y, handle_w, handle_h; ltk_window *window = scrollbar->widget.window; @@ -162,7 +163,7 @@ ltk_scrollbar_draw(ltk_widget *self, ltk_rect clip) { static int ltk_scrollbar_mouse_press(ltk_widget *self, XEvent event) { - ltk_scrollbar *sc = self; + ltk_scrollbar *sc = (ltk_scrollbar *)self; int max_pos; double rel_pos; if (event.xbutton.button != 1 && event.xbutton.button != 3) @@ -195,7 +196,8 @@ ltk_scrollbar_mouse_press(ltk_widget *self, XEvent event) { /* FIXME: Make this scrollbar more "traditional" */ static int ltk_scrollbar_motion_notify(ltk_widget *self, XEvent event) { - ltk_scrollbar *sc = self; + (void)self; + (void)event; /* double scale; int delta, max_pos; @@ -224,9 +226,9 @@ ltk_scrollbar_motion_notify(ltk_widget *self, XEvent event) { } ltk_scrollbar * -ltk_scrollbar_create(ltk_window *window, ltk_orientation orient, void (*callback)(void *), void *data) { +ltk_scrollbar_create(ltk_window *window, ltk_orientation orient, void (*callback)(ltk_widget *), void *data) { ltk_scrollbar *sc = ltk_malloc(sizeof(ltk_scrollbar)); - ltk_fill_widget_defaults(sc, NULL, window, &ltk_scrollbar_draw, + ltk_fill_widget_defaults((ltk_widget *)sc, NULL, window, &ltk_scrollbar_draw, NULL, &ltk_scrollbar_destroy, 1, LTK_UNKNOWN); sc->last_mouse_x = sc->last_mouse_y = 0; sc->widget.motion_notify = &ltk_scrollbar_motion_notify; @@ -247,6 +249,7 @@ ltk_scrollbar_create(ltk_window *window, ltk_orientation orient, void (*callback static void ltk_scrollbar_destroy(ltk_widget *self, int shallow) { - ltk_scrollbar *scrollbar = self; + (void)shallow; + ltk_scrollbar *scrollbar = (ltk_scrollbar *)self; ltk_free(scrollbar); } diff --git a/scrollbar.h b/scrollbar.h @@ -28,7 +28,7 @@ typedef struct { ltk_widget widget; - void (*callback)(void *); + void (*callback)(ltk_widget *); void *callback_data; double cur_pos; int virtual_size; @@ -40,6 +40,6 @@ typedef struct { void ltk_scrollbar_set_virtual_size(ltk_scrollbar *scrollbar, int virtual_size); void ltk_scrollbar_setup_theme_defaults(ltk_window *window); void ltk_scrollbar_ini_handler(ltk_window *window, const char *prop, const char *value); -ltk_scrollbar *ltk_scrollbar_create(ltk_window *window, ltk_orientation orient, void (*callback)(void *), void *data); +ltk_scrollbar *ltk_scrollbar_create(ltk_window *window, ltk_orientation orient, void (*callback)(ltk_widget *), void *data); #endif /* _LTK_SCROLLBAR_H_ */ diff --git a/strtonum.c b/strtonum.c @@ -17,7 +17,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#ifndef __OpenBSD__ +/* #ifndef __OpenBSD__ */ #include <errno.h> #include <limits.h> @@ -68,4 +68,4 @@ strtonum(const char *numstr, long long minval, long long maxval, /* FIXME: What does this do? - lumidify */ /* DEF_WEAK(strtonum); */ -#endif +/* #endif */ diff --git a/text_pango.c b/text_pango.c @@ -54,6 +54,8 @@ ltk_cleanup_text(void) { void ltk_text_line_set_width(LtkTextLine *tl, int width) { + (void)tl; + (void)width; /* TODO: Implement! */ } @@ -99,6 +101,7 @@ ltk_text_line_render(LtkTextLine *tl, LtkColor *bg, LtkColor *fg) { void ltk_text_line_draw(LtkTextLine *tl, Drawable d, GC gc, int x, int y, ltk_rect clip) { + (void)clip; /* FIXME: use this */ XCopyArea(tm.dpy, tl->pixmap, d, gc, 0, 0, tl->w, tl->h, x, y); } diff --git a/text_stb.c b/text_stb.c @@ -128,7 +128,7 @@ static XImage *ltk_create_ximage(int w, int h, int depth, XColor bg); /* These unicode routines are taken from * https://github.com/JeffBezanson/cutef8 */ -static size_t u8_wc_toutf8(char *dest, uint32_t ch); +/* static size_t u8_wc_toutf8(char *dest, uint32_t ch); */ static size_t u8_strlen(const char *s); static uint32_t u8_nextmemchar(const char *s, size_t *i); @@ -171,6 +171,7 @@ static size_t u8_strlen(const char *s) { return count; } +/* static size_t u8_wc_toutf8(char *dest, uint32_t ch) { if (ch < 0x80) { dest[0] = (char)ch; @@ -196,6 +197,7 @@ static size_t u8_wc_toutf8(char *dest, uint32_t ch) { } return 0; } +*/ void ltk_init_text(const char *default_font, Display *dpy, int screen, Colormap cm) { @@ -214,7 +216,7 @@ ltk_cleanup_text(void) { ltk_destroy_font(tm.fonts[i]); } if (!tm.glyph_cache) return; - for (int k = kh_begin(tm.glyph_cache); k != kh_end(tm.glyph_cache); k++) { + for (khint_t k = kh_begin(tm.glyph_cache); k != kh_end(tm.glyph_cache); k++) { if (kh_exist(tm.glyph_cache, k)) { ltk_destroy_glyph_cache(kh_value(tm.glyph_cache, k)); } @@ -285,8 +287,7 @@ ltk_create_glyph_cache(uint16_t font_id, uint16_t font_size) { static void ltk_destroy_glyph_cache(khash_t(glyphinfo) *cache) { - int k; - for (k = kh_begin(cache); k != kh_end(cache); k++) { + for (khint_t k = kh_begin(cache); k != kh_end(cache); k++) { if (kh_exist(cache, k)) { ltk_destroy_glyph_info(kh_value(cache, k)); } @@ -300,11 +301,11 @@ ltk_load_default_font(const char *name) { FcResult result; char *file; int index; - uint16_t font; - tm.fcpattern = FcNameParse(name); + /* FIXME: Get rid of this stupid cast somehow */ + tm.fcpattern = FcNameParse((const FcChar8 *)name); /*tm.fcpattern = FcPatternCreate();*/ - FcPatternAddString(tm.fcpattern, FC_FONTFORMAT, "truetype"); + FcPatternAddString(tm.fcpattern, FC_FONTFORMAT, (const FcChar8 *)"truetype"); FcConfigSubstitute(NULL, tm.fcpattern, FcMatchPattern); FcDefaultSubstitute(tm.fcpattern); match = FcFontMatch(NULL, tm.fcpattern, &result); @@ -324,8 +325,8 @@ ltk_create_font(char *path, uint16_t id, int index) { char *contents = ltk_read_file(path, &len); if (!contents) ltk_fatal_errno("Unable to read font file %s\n", path); - int offset = stbtt_GetFontOffsetForIndex(contents, index); - if (!stbtt_InitFont(&font->info, contents, offset)) + int offset = stbtt_GetFontOffsetForIndex((unsigned char *)contents, index); + if (!stbtt_InitFont(&font->info, (unsigned char *)contents, offset)) ltk_fatal("Failed to load font %s\n", path); font->id = id; font->refs = 0; @@ -409,7 +410,7 @@ ltk_text_to_glyphs(LtkGlyph *glyphs, int num_glyphs, char *text, uint16_t font_s match = FcFontMatch(NULL, pat, &result); FcPatternGetString(match, FC_FILE, 0, &file); FcPatternGetInteger(match, FC_INDEX, 0, &index); - font = ltk_get_font(file, index); + font = ltk_get_font((char *)file, index); glyph_cache = ltk_get_glyph_cache(font->id, font_size); FcPatternDestroy(match); FcPatternDestroy(pat); @@ -513,8 +514,6 @@ ltk_text_line_render( LtkColor *bg, LtkColor *fg) { - LtkGlyph *glyph; - XWindowAttributes attrs; XGetWindowAttributes(tm.dpy, tl->window, &attrs); int depth = attrs.depth; @@ -522,7 +521,7 @@ ltk_text_line_render( if (tl->img) XDestroyImage(tl->img); tl->img = ltk_create_ximage(tl->w, tl->h, depth, bg->xcolor); - for (int i = 0; i < tl->glyph_len; i++) { + for (size_t i = 0; i < tl->glyph_len; i++) { ltk_text_line_draw_glyph(&tl->glyphs[i], -tl->x_min, -tl->y_min, tl->img, fg->xcolor); } } @@ -530,6 +529,7 @@ ltk_text_line_render( /* FIXME: error checking if img is rendered yet, tm initialized, etc. */ void ltk_text_line_draw(LtkTextLine *tl, Drawable d, GC gc, int x, int y, ltk_rect clip) { + (void)clip; /* int xoff = clip.x - x; int yoff = clip.y - y; @@ -544,6 +544,8 @@ ltk_text_line_draw(LtkTextLine *tl, Drawable d, GC gc, int x, int y, ltk_rect cl void ltk_text_line_set_width(LtkTextLine *tl, int width) { + (void)tl; + (void)width; /* FIXME: implement */ } @@ -567,6 +569,7 @@ ltk_text_line_create_glyphs(LtkTextLine *tl) { LtkTextLine * ltk_text_line_create(Window window, uint16_t font_size, char *text, int width) { + (void)width; LtkTextLine *line = ltk_malloc(sizeof(LtkTextLine)); line->window = window; line->img = NULL; diff --git a/util.c b/util.c @@ -138,7 +138,7 @@ ltk_fatal(const char *format, ...) { ltk_cleanup(); exit(1); -}; +} void ltk_warn_errno(const char *format, ...) { diff --git a/util.h b/util.h @@ -23,11 +23,11 @@ /* Requires: <stdarg.h> */ -#ifndef __OpenBSD__ +/* #ifndef __OpenBSD__ */ long long strtonum(const char *numstr, long long minval, long long maxval, const char **errstrp); -#endif +/* #endif */ char *ltk_read_file(const char *path, unsigned long *len); int ltk_grow_string(char **str, int *alloc_size, int needed);