diff options
Diffstat (limited to 'src/menu.h')
| -rw-r--r-- | src/menu.h | 126 |
1 files changed, 54 insertions, 72 deletions
@@ -1,6 +1,7 @@ /* menu.h Copyright (C) 1999-2003 Tom Gilbert. +Copyright (C) 2010-2020 Birte Kristina Friesel. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to @@ -30,7 +31,6 @@ typedef struct _feh_menu feh_menu; typedef struct _feh_menu_item feh_menu_item; typedef struct _feh_menu_list feh_menu_list; - #define MENU_ITEM_STATE_NORMAL 0x00 #define MENU_ITEM_STATE_SELECTED 0x01 #define MENU_ITEM_STATE_ON 0x02 @@ -53,13 +53,11 @@ typedef struct _feh_menu_list feh_menu_list; #define MENU_ITEM_TOGGLE(item) \ (((item)->state & MENU_ITEM_STATE_ON) ? MENU_ITEM_TOGGLE_OFF(item) : MENU_ITEM_TOGGLE_ON(item)) - #define RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) \ ((SPANS_COMMON((x), (w), (xx), (ww))) && (SPANS_COMMON((y), (h), (yy), (hh)))) #define SPANS_COMMON(x1, w1, x2, w2) \ (!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1))))) - #define FEH_MENU_PAD_LEFT 3 #define FEH_MENU_PAD_RIGHT 3 #define FEH_MENU_PAD_TOP 3 @@ -79,51 +77,45 @@ typedef struct _feh_menu_list feh_menu_list; #define FEH_MENU_TOGGLE_W 7 #define FEH_MENU_TOGGLE_PAD 3 -typedef void (*menu_func) (feh_menu * m, feh_menu_item * i, void *data); -typedef feh_menu *(*menuitem_func_gen) (feh_menu * m, feh_menu_item * i, - void *data); +typedef feh_menu *(*menuitem_func_gen) (feh_menu * m); -struct _feh_menu_list -{ - feh_menu *menu; - feh_menu_list *next; +struct _feh_menu_list { + feh_menu *menu; + feh_menu_list *next; }; -struct _feh_menu_item -{ - int state; - Imlib_Image icon; - char *text; - char *submenu; - menu_func func; - void (*func_free) (void *data); - void *data; - feh_menu_item *next; - feh_menu_item *prev; - unsigned char is_toggle; - int text_x, icon_x, sub_x, toggle_x; - int x, y, w, h; - menuitem_func_gen func_gen_sub; +struct _feh_menu_item { + int state; + char *text; + char *submenu; + int action; + void (*func_free) (void *data); + unsigned short data; + feh_menu_item *next; + feh_menu_item *prev; + unsigned char is_toggle; + int text_x, icon_x, sub_x, toggle_x; + int x, y, w, h; + menuitem_func_gen func_gen_sub; }; -struct _feh_menu -{ - char *name; - winwidget fehwin; - Window win; - Pixmap pmap; - int x, y, w, h; - int item_w, item_h; - int visible; - feh_menu_item *items; - feh_menu *next; - feh_menu *prev; - Imlib_Updates updates; - Imlib_Image bg; - int needs_redraw; - void *data; - int calc; - void (*func_free) (feh_menu * m, void *data); +struct _feh_menu { + char *name; + winwidget fehwin; + Window win; + Pixmap pmap; + int x, y, w, h; + int item_w, item_h; + int visible; + feh_menu_item *items; + feh_menu *next; + feh_menu *prev; + Imlib_Updates updates; + Imlib_Image bg; + int needs_redraw; + void *data; + int calc; + void (*func_free) (feh_menu * m); }; feh_menu *feh_menu_new(void); @@ -134,57 +126,47 @@ void feh_menu_deselect_selected(feh_menu * m); void feh_menu_select(feh_menu * m, feh_menu_item * i); void feh_menu_show_at(feh_menu * m, int x, int y); void feh_menu_show_at_xy(feh_menu * m, winwidget winwin, int x, int y); -void feh_menu_show_at_submenu(feh_menu * m, feh_menu * parent_m, - feh_menu_item * i); +void feh_menu_show_at_submenu(feh_menu * m, feh_menu * parent_m, feh_menu_item * i); void feh_menu_hide(feh_menu * m, int func_free); void feh_menu_show(feh_menu * m); -feh_menu_item *feh_menu_add_entry(feh_menu * m, char *text, Imlib_Image icon, - char *submenu, menu_func func, void *data, - void (*func_free) (void *data)); -feh_menu_item * -feh_menu_add_toggle_entry(feh_menu * m, char *text, Imlib_Image icon, - char *submenu, menu_func func, void *data, - void (*func_free) (void *data), int setting); -void feh_menu_entry_get_size(feh_menu * m, feh_menu_item * i, int *w, int *h); +feh_menu_item *feh_menu_add_entry(feh_menu * m, char *text, + char *submenu, + int action, unsigned short data, void (*func_free) (void *data)); +feh_menu_item *feh_menu_add_toggle_entry(feh_menu * m, char *text, + char *submenu, + int action, unsigned short data, void (*func_free) (void *data), int setting); +void feh_menu_entry_get_size(feh_menu_item * i, int *w, int *h); void feh_menu_calc_size(feh_menu * m); -void feh_menu_draw_item(feh_menu * m, feh_menu_item * i, Imlib_Image im, - int ox, int oy); +void feh_menu_draw_item(feh_menu_item * i, Imlib_Image im, int ox, int oy); void feh_menu_redraw(feh_menu * m); void feh_menu_move(feh_menu * m, int x, int y); void feh_menu_slide_all_menus_relative(int dx, int dy); void feh_menu_init_main(void); void feh_menu_init_single_win(void); -void feh_menu_init_about_win(void); void feh_menu_init_common(void); void feh_menu_init_thumbnail_viewer(void); void feh_menu_init_thumbnail_win(void); void feh_menu_draw_to_buf(feh_menu * m, Imlib_Image im, int ox, int oy); void feh_menu_draw_menu_bg(feh_menu * m, Imlib_Image im, int ox, int oy); -void feh_menu_draw_submenu_at(int x, int y, int w, int h, Imlib_Image dst, - int ox, int oy, int selected); -void feh_menu_draw_separator_at(int x, int y, int w, int h, Imlib_Image dst, - int ox, int oy); -void feh_menu_item_draw_at(int x, int y, int w, int h, Imlib_Image dst, - int ox, int oy, int selected); -void feh_menu_draw_toggle_at(int x, int y, int w, int h, Imlib_Image dst, - int ox, int oy, int on); +void feh_menu_draw_submenu_at(int x, int y, Imlib_Image dst, int ox, int oy); +void feh_menu_draw_separator_at(int x, int y, int w, int h, Imlib_Image dst, int ox, int oy); +void feh_menu_item_draw_at(int x, int y, int w, int h, Imlib_Image dst, int ox, int oy, int selected); +void feh_menu_draw_toggle_at(int x, int y, int w, int h, Imlib_Image dst, int ox, int oy, int on); void feh_redraw_menus(void); feh_menu *feh_menu_find(char *name); void feh_redraw_menus(void); feh_menu *feh_menu_get_from_window(Window win); void feh_raise_all_menus(void); void feh_menu_free(feh_menu * m); -feh_menu_item *feh_menu_find_selected_r(feh_menu *m, feh_menu **parent); -void feh_menu_select_prev(feh_menu *selected_menu, feh_menu_item *selected_item); -void feh_menu_select_next(feh_menu *selected_menu, feh_menu_item *selected_item); -void feh_menu_item_activate(feh_menu *selected_menu, - feh_menu_item *selected_item); -void feh_menu_select_parent(feh_menu *selected_menu, feh_menu_item *selected_item); -void feh_menu_select_submenu(feh_menu *selected_menu, feh_menu_item *selected_item); +feh_menu_item *feh_menu_find_selected_r(feh_menu * m, feh_menu ** parent); +void feh_menu_select_prev(feh_menu * selected_menu, feh_menu_item * selected_item); +void feh_menu_select_next(feh_menu * selected_menu, feh_menu_item * selected_item); +void feh_menu_item_activate(feh_menu * selected_menu, feh_menu_item * selected_item); +void feh_menu_select_parent(feh_menu * selected_menu); +void feh_menu_select_submenu(feh_menu * selected_menu); extern feh_menu *menu_root; extern feh_menu *menu_single_win; -extern feh_menu *menu_about_win; extern feh_menu *menu_thumbnail_viewer; extern feh_menu *menu_thumbnail_win; extern Window menu_cover; |
