libxputty 0.1
Loading...
Searching...
No Matches
xmenu.c
Go to the documentation of this file.
1/*
2 * 0BSD
3 *
4 * BSD Zero Clause License
5 *
6 * Copyright (c) 2019 Hermann Meyer
7 *
8 * Permission to use, copy, modify, and/or distribute this software for any
9 * purpose with or without fee is hereby granted.
10
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13 * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17 * PERFORMANCE OF THIS SOFTWARE.
18 *
19 */
20
21
22#include "xmenu.h"
23#include "xmenu_private.h"
24#include "xslider.h"
25
26
27void pop_menu_show(Widget_t *parent, Widget_t *menu, int elem, bool above) {
28 if (!childlist_has_child(menu->childlist)) return;
29 Widget_t* view_port = menu->childlist->childs[0];
30 if (!view_port->childlist->elem) return;
31 _configure_menu(parent, menu, elem, above);
33 if (view_port->childlist->elem <= elem)
34 widget_hide(menu->childlist->childs[1]);
35 int err = os_grab_pointer(menu);
36 menu->app->hold_grab = menu;
37
38 if (err) debug_print("Error grap pointer\n");
39}
40
41void pop_submenu_show(Widget_t *parent, Widget_t *menu, int elem, bool above) {
42 if (!childlist_has_child(menu->childlist)) return;
43 Widget_t* view_port = menu->childlist->childs[0];
44 if (!view_port->childlist->elem) return;
45 _configure_menu(parent, menu, elem, above);
47 menu->app->submenu = menu;
48}
49
50Widget_t* create_viewport(Widget_t *parent, int width, int height) {
51 Widget_t *wid = create_widget(parent->app, parent, 0, 0, width, height);
52 wid->scale.gravity = NONE;
53 wid->flags &= ~USE_TRANSPARENCY;
54 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_VIEWPORT);
55 wid->adj = wid->adj_y;
57 return wid;
58}
59
60void set_active_radio_entry(void *w_, void* user_data) {
61 Widget_t *w = (Widget_t*)w_;
62 int v = (int)adj_get_value(w->adj);
63 Widget_t *menu = w->childlist->childs[0];
64 Widget_t *view_port = menu->childlist->childs[0];
65 if (!childlist_has_child(view_port->childlist)) return;
66 int i = view_port->childlist->elem-1;
67 if (v > i || v < 0) return;
68 Widget_t *wi = view_port->childlist->childs[v];
69 for(;i>-1;i--) {
70 Widget_t *wid = view_port->childlist->childs[i];
71 if (wid->adj && wid->flags & IS_RADIO) {
72 if (wid == wi) adj_set_value(wid->adj_y, 1.0);
73 else adj_set_value(wid->adj_y, 0.0);
74 }
75 }
76}
77
79 Widget_t *menu = w->childlist->childs[0];
80 Widget_t *view_port = menu->childlist->childs[0];
81 Widget_t *wid = view_port->childlist->childs[active];
82 if (wid->adj && wid->flags & IS_RADIO)
84}
85
86Widget_t *add_menu(Widget_t *parent, const char * label,
87 int x, int y, int width, int height) {
88 Widget_t *wid = create_widget(parent->app, parent, x, y, width, height);
89 wid->label = label;
90 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_NONE);
91 wid->adj = wid->adj_y;
92 wid->scale.gravity = NONE;
93 wid->state = 0;
99
100 Widget_t *menu = create_menu(wid, 25);
102
103 return wid;
104}
105
106Widget_t *add_menubar(Widget_t *parent, const char * label,
107 int x, int y, int width, int height) {
108 Widget_t *wid = create_widget(parent->app, parent, x, y, width, height);
109 wid->scale.gravity = NORTHEAST;
111 return wid;
112}
113
114Widget_t *menubar_add_menu(Widget_t *parent, const char * label) {
115 cairo_text_extents_t extents;
116 cairo_text_extents(parent->crb,label , &extents);
117 int width = (int)extents.width+20;
118 Metrics_t metrics;
119 os_get_window_metrics(parent, &metrics);
120 int height = metrics.height;
121 int x = 0;
122 int i = parent->childlist->elem-1;
123 for(;i>-1;i--) {
124 Widget_t *w = parent->childlist->childs[i];
125 os_get_window_metrics(w, &metrics);
126 x += metrics.width;
127 }
128 Widget_t *wid = add_menu(parent, label, x, 0, width, height);
129 return wid;
130}
131
132Widget_t *menu_add_entry(Widget_t *wid, const char * label) {
133 Widget_t *menu = wid->childlist->childs[0];
134 Widget_t *item = menu_add_accel_item(menu,label);
135 float max_value = wid->adj->max_value+1.0;
136 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
137
138 return item;
139}
140
141Widget_t *menu_add_radio_entry(Widget_t *wid, const char * label) {
142 Widget_t *menu = wid->childlist->childs[0];
143 Widget_t *item = menu_add_radio_item(menu,label);
144 float max_value = wid->adj->max_value+1.0;
145 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
146
147 return item;
148}
149
150Widget_t *menu_add_check_entry(Widget_t *wid, const char * label) {
151 Widget_t *menu = wid->childlist->childs[0];
152 Widget_t *item = menu_add_check_item(menu,label);
153 float max_value = wid->adj->max_value+1.0;
154 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
155
156 return item;
157}
158
159Widget_t *menu_add_accel_check_entry(Widget_t *wid, const char * label) {
160 Widget_t *menu = wid->childlist->childs[0];
161 Widget_t *item = menu_add_check_item(menu,label);
163 float max_value = wid->adj->max_value+1.0;
164 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
165
166 return item;
167}
168
169Widget_t* menu_add_value_entry(Widget_t *wid,const char * label) {
170 Widget_t *menu = wid->childlist->childs[0];
171 Widget_t* view_port = menu->childlist->childs[0];
172 Metrics_t metrics;
173 os_get_window_metrics(menu, &metrics);
174 int width = metrics.width;
175 int height = 40;
176 int si = childlist_has_child(view_port->childlist);
177 Widget_t *item = create_widget(menu->app, view_port, 0, height*si, width, height);
178 float max_value = view_port->adj->max_value+1.0;
179 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
180 item->scale.gravity = MENUITEM;
181 item->flags &= ~USE_TRANSPARENCY;
182 item->flags |= FAST_REDRAW;
183 item->label = label;
187 item->adj_y = add_adjustment(item,0.0, 0.0, 0.0, 1.0,0.01, CL_CONTINUOS);
188 item->adj = item->adj_y;
191 return item;
192}
193
194Widget_t *menu_add_submenu(Widget_t *w, const char * label) {
195 float max_value2 = w->adj->max_value+1.0;
196 set_adjustment(w->adj,0.0, max_value2, 0.0, max_value2,1.0, CL_NONE);
197 Widget_t *menu = w->childlist->childs[0];
198 Widget_t* view_port = menu->childlist->childs[0];
199 Metrics_t metrics;
200 os_get_window_metrics(menu, &metrics);
201 int width = metrics.width;
202 int height = menu->scale.init_height;
203 int si = childlist_has_child(view_port->childlist);
204 Widget_t *wid = create_widget(menu->app, view_port, 0, height*si, width, height);
205 float max_value1 = view_port->adj->max_value+1.0;
206 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value1,1.0, CL_VIEWPORT);
207 wid->scale.gravity = MENUITEM;
208 wid->flags &= ~USE_TRANSPARENCY;
209 wid->flags |= FAST_REDRAW;
210 wid->label = label;
211 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_NONE);
212 wid->adj = wid->adj_y;
213 float max_value = wid->adj->max_value+1.0;
214 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
219 Widget_t* submenu = create_menu(wid, 25);
220 submenu->flags |= IS_SUBMENU;
221
223 return wid;
224}
225
226Widget_t *cmenu_add_submenu(Widget_t *w, const char * label) {
227 Widget_t *menu = w;
228 Widget_t* view_port = menu->childlist->childs[0];
229 Metrics_t metrics;
230 os_get_window_metrics(menu, &metrics);
231 int width = metrics.width;
232 int height = menu->scale.init_height;
233 int si = childlist_has_child(view_port->childlist);
234 Widget_t *wid = create_widget(menu->app, view_port, 0, height*si, width, height);
235 float max_value1 = view_port->adj->max_value+1.0;
236 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value1,1.0, CL_VIEWPORT);
237 wid->scale.gravity = MENUITEM;
238 wid->flags &= ~USE_TRANSPARENCY;
239 wid->flags |= FAST_REDRAW;
240 wid->label = label;
241 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_NONE);
242 wid->adj = wid->adj_y;
243 float max_value = wid->adj->max_value+1.0;
244 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
249 Widget_t* submenu = create_menu(wid, 25);
250 submenu->flags |= IS_SUBMENU;
251
253 return wid;
254}
255
256Widget_t* create_menu(Widget_t *parent, int height) {
257
258 int x1, y1;
259 os_translate_coords(parent, parent->widget, os_get_root_window(parent->app, IS_WIDGET), 0, 0, &x1, &y1);
260 Widget_t *wid = create_window(parent->app, os_get_root_window(parent->app, IS_WIDGET), x1, y1, 10, height);
261 memcpy(wid->color_scheme, parent->color_scheme, sizeof (struct XColor_t));
262 create_viewport(wid, 10, 5*height);
263
265 os_set_transient_for_hint(parent, wid);
267 wid->flags |= IS_POPUP;
268 wid->scale.gravity = NONE;
269 childlist_add_child(parent->childlist, wid);
270
271 Widget_t *slider = add_vslider(wid, "", 0, 0, 10, height);
273 set_adjustment(slider->adj_y,0.0, 0.0, 0.0, 1.0,0.0085, CL_VIEWPORTSLIDER);
274 slider->adj = slider->adj_y;
276 slider->scale.gravity = NORTHWEST;
277 slider->flags &= ~USE_TRANSPARENCY;
278 slider->flags |= NO_AUTOREPEAT | NO_PROPAGATE;
279
280 return wid;
281}
282
283Widget_t* menu_add_item(Widget_t *menu,const char * label) {
284 Widget_t* view_port = menu->childlist->childs[0];
285 Metrics_t metrics;
286 os_get_window_metrics(menu, &metrics);
287 int width = metrics.width;
288 int height = menu->scale.init_height;
289 int si = childlist_has_child(view_port->childlist);
290 Widget_t *wid = create_widget(menu->app, view_port, 0, height*si, width, height);
291 float max_value = view_port->adj->max_value+1.0;
292 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
293 wid->scale.gravity = MENUITEM;
294 wid->flags &= ~USE_TRANSPARENCY;
295 wid->flags |= FAST_REDRAW;
296 wid->label = label;
300 return wid;
301}
302
304 Widget_t* view_port = menu->childlist->childs[0];
305 float max_value = view_port->adj->max_value-1.0;
306 destroy_widget(item,menu->app);
307 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
308 os_move_window(menu->app->dpy,view_port,0.0, 0.0);
309}
310
311Widget_t* menu_add_accel_item(Widget_t *menu,const char * label) {
312 Widget_t *wid = menu_add_item(menu, label);
314 return wid;
315}
316
317Widget_t* menu_add_check_item(Widget_t *menu, const char * label) {
318 Widget_t *wid = menu_add_item(menu, label);
319 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, 1.0,1.0, CL_TOGGLE);
320 wid->adj = wid->adj_y;
323 return wid;
324}
325
327 Widget_t * p = (Widget_t*) w->parent;
328 int i = p->childlist->elem-1;
329 for(;i>-1;i--) {
330 Widget_t *wid = p->childlist->childs[i];
331 if (wid->adj && wid->flags & IS_RADIO) {
332 if (wid == w) {
333 adj_set_value(wid->adj_y, 1.0);
334 } else {
335 adj_set_value(wid->adj_y, 0.0);
336 }
337 wid->state=0;
338 }
339 }
340}
341
342Widget_t* menu_add_radio_item(Widget_t *menu, const char * label) {
343 Widget_t *wid = menu_add_check_item(menu, label);
344 wid->flags |= IS_RADIO;
347 //radio_item_set_active(wid);
348 return wid;
349}
350
351Widget_t* menu_add_value_item(Widget_t *menu,const char * label) {
352 Widget_t *wid = menu_add_item(menu, label);
353 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, 1.0,0.01, CL_CONTINUOS);
354 wid->adj = wid->adj_y;
357 return wid;
358}
359
360void menu_add_numeric_items(Widget_t *menu, int *imin, int *imax) {
361 Widget_t* view_port = menu->childlist->childs[0];
362 Metrics_t metrics;
363 os_get_window_metrics(menu, &metrics);
364 int width = metrics.width;
365 int height = menu->scale.init_height;
366 int si = childlist_has_child(view_port->childlist);
367 float max_value = view_port->adj->max_value;
368 Widget_t *wid;
369 int i = (*imin);
370 int o = (*imax)+1;
371 for (;i<o;i++) {
372 si = childlist_has_child(view_port->childlist);
373 wid = create_widget(menu->app, view_port, 0, height*si, width, height);
374 max_value += 1.0;
375 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
376 wid->scale.gravity = MENUITEM;
377 wid->flags &= ~USE_TRANSPARENCY;
378 wid->flags |= FAST_REDRAW;
379 snprintf(wid->input_label, 31, "%i",i);
380 wid->label = wid->input_label;
384 }
385}
float max_value
Definition xadjustment.h:92
Widget_t ** childs
Definition xchildlist.h:51
evfunc button_release_callback
Definition xwidget.h:101
xevfunc expose_callback
Definition xwidget.h:85
xevfunc leave_callback
Definition xwidget.h:88
xevfunc adj_callback
Definition xwidget.h:89
xevfunc value_changed_callback
Definition xwidget.h:90
xevfunc enter_callback
Definition xwidget.h:87
evfunc button_press_callback
Definition xwidget.h:100
Metrics_t - struct to receive window size, position & visibility Pass this struct to os_get_window_...
int init_height
Definition xwidget.h:355
Gravity gravity
Definition xwidget.h:347
Widget_t - struct to hold the basic Widget_t info.
Definition xwidget.h:457
Resize_t scale
Definition xwidget.h:525
Adjustment_t * adj_y
Definition xwidget.h:495
XColor_t * color_scheme
Definition xwidget.h:467
Adjustment_t * adj
Definition xwidget.h:497
void * parent
Definition xwidget.h:471
Window widget
Definition xwidget.h:469
cairo_t * crb
Definition xwidget.h:489
int state
Definition xwidget.h:511
Childlist_t * childlist
Definition xwidget.h:499
long long flags
Definition xwidget.h:461
char input_label[32]
Definition xwidget.h:459
const char * label
Definition xwidget.h:463
Func_t func
Definition xwidget.h:481
Xputty * app
Definition xwidget.h:465
XColor_t - the Widget_t Color struct XColor_t could be used for theming you Widget_t set.
Definition xcolor.h:105
Display * dpy
Definition xputty.h:232
Widget_t * hold_grab
Definition xputty.h:238
Widget_t * submenu
Definition xputty.h:242
void adj_set_value(Adjustment_t *adj, float value)
adj_set_value - set the current value to the Adjustment_t
float adj_get_value(Adjustment_t *adj)
adj_get_value - get the current value of the Adjustment_t
Adjustment_t * add_adjustment(Widget_t *w, float std_value, float value, float min_value, float max_value, float step, CL_type type)
*add_adjustment - adding a adjustment to a Widget_t
Definition xadjustment.c:25
void set_adjustment(Adjustment_t *adj, float std_value, float value, float min_value, float max_value, float step, CL_type type)
*set_adjustment - set a new range to a existing Adjustment_t or create if it not exists yet
Definition xadjustment.c:80
@ CL_TOGGLE
Definition xadjustment.h:51
@ CL_CONTINUOS
Definition xadjustment.h:49
@ CL_VIEWPORT
Definition xadjustment.h:57
@ CL_NONE
Definition xadjustment.h:47
@ CL_VIEWPORTSLIDER
Definition xadjustment.h:65
void childlist_add_child(Childlist_t *childlist, Widget_t *child)
childlist_add_child - internal use to add a child to the Childlist_t You usually didn't need to cal...
Definition xchildlist.c:42
int childlist_has_child(Childlist_t *childlist)
childlist_has_child - check if a Widget_t Childlist_t contain a child
Definition xchildlist.c:89
Widget_t * menu_add_radio_item(Widget_t *menu, const char *label)
menu_add_radio_item - add a radio item to menu
Definition xmenu.c:342
Widget_t * add_menubar(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_menubar - add a menubar to a Widget_t
Definition xmenu.c:106
void radio_item_set_active(Widget_t *w)
radio_item_set_active - activate selected radio item
Definition xmenu.c:326
Widget_t * menubar_add_menu(Widget_t *parent, const char *label)
menubar_add_menu - add a menu to a menubar
Definition xmenu.c:114
Widget_t * menu_add_check_entry(Widget_t *wid, const char *label)
menu_add_check_entry- add a check entry to menu
Definition xmenu.c:150
Widget_t * add_menu(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_menu - add a menu to a Widget_t
Definition xmenu.c:86
void menu_remove_item(Widget_t *menu, Widget_t *item)
menu_remove_item - remove a item from menu
Definition xmenu.c:303
void pop_menu_show(Widget_t *parent, Widget_t *menu, int elem, bool above)
pop_menu_show - pop up a menu to a Widget_t
Definition xmenu.c:27
Widget_t * menu_add_accel_check_entry(Widget_t *wid, const char *label)
menu_add_accel_check_entry- add a check entry with accel to menu
Definition xmenu.c:159
Widget_t * menu_add_check_item(Widget_t *menu, const char *label)
menu_add_check_item - add a item to menu
Definition xmenu.c:317
Widget_t * menu_add_value_entry(Widget_t *wid, const char *label)
menu_add_value_entry- add a value entry to menu
Definition xmenu.c:169
Widget_t * create_viewport(Widget_t *parent, int width, int height)
create_viewport - create a viewport on a menu to a Widget_t
Definition xmenu.c:50
Widget_t * menu_add_submenu(Widget_t *w, const char *label)
menu_add_submenu - add a submenu to a Widget_t
Definition xmenu.c:194
Widget_t * cmenu_add_submenu(Widget_t *w, const char *label)
cmenu_add_submenu - add a submenu to a cmenu
Definition xmenu.c:226
void menu_add_numeric_items(Widget_t *menu, int *imin, int *imax)
menu_add_numeric_items - add numeric items from imin to imax to menu
Definition xmenu.c:360
void pop_submenu_show(Widget_t *parent, Widget_t *menu, int elem, bool above)
pop_submenu_show - pop up a submenu to a Widget_t
Definition xmenu.c:41
Widget_t * menu_add_entry(Widget_t *wid, const char *label)
menu_add_entry - add a entry to menu
Definition xmenu.c:132
void set_active_radio_entry(void *w_, void *user_data)
Definition xmenu.c:60
Widget_t * menu_add_accel_item(Widget_t *menu, const char *label)
menu_add_accel_item - add a accel item to menu
Definition xmenu.c:311
Widget_t * create_menu(Widget_t *parent, int height)
create_menu - create a menu to a Widget_t
Definition xmenu.c:256
Widget_t * menu_add_item(Widget_t *menu, const char *label)
menu_add_item - add a item to menu
Definition xmenu.c:283
Widget_t * menu_add_radio_entry(Widget_t *wid, const char *label)
menu_add_radio_entry- add a radio entry to menu
Definition xmenu.c:141
void set_active_radio_entry_num(Widget_t *w, int active)
set_active_radio_item - activate selected radio item by number
Definition xmenu.c:78
Widget_t * menu_add_value_item(Widget_t *menu, const char *label)
menu_add_value_item - add a item to menu
Definition xmenu.c:351
void _draw_submenu(void *w_, void *user_data)
_draw_submenu - draw submenu on expose call
void _set_menu_viewpoint(void *w_, void *user_data)
_set_menu_viewpoint - move the view_port to position by slider
void _configure_menu(Widget_t *parent, Widget_t *menu, int elem, bool above)
_configure_menu - set final size and position of menu to a Widget_t
void _check_menu_state(void *w_, void *user_data)
_check_menu_state - follow the mouse pointer when a menu is active
void _draw_item(void *w_, void *user_data)
_draw_item - draw item on expose call
void _draw_value_item(void *w_, void *user_data)
_draw_value_item - draw item on expose call
void _value_item_released(void *w_, void *button_, void *user_data)
_value_item_released - redraw item on button released
void _radio_item_button_pressed(void *w_, void *button_, void *user_data)
_radio_item_button_pressed - redraw item on button press
void _draw_menu_slider(void *w_, void *user_data)
_draw_menu_slider - draw the menu slider on expose call
void _menu_entry_released(void *w_, void *item_, void *user_data)
_menu_entry_released - the menu release func
void _check_item_button_pressed(void *w_, void *button_, void *user_data)
_check_item_button_pressed - redraw item on button press
void _set_viewpoint(void *w_, void *user_data)
_set_viewpoint - move the view_port to position
void _draw_accel_item(void *w_, void *user_data)
_draw_accel_item - draw accel item on expose call
void _menu_released(void *w_, void *button_, void *user_data)
_menu_released - popup the menu on click
void _draw_accel_check_item(void *w_, void *user_data)
_accel_draw_check_item - draw item on expose call
void _draw_menu_label(void *w_, void *user_data)
_draw_menu_label - draw the menu label on expose call
void _enter_submenu(void *w_, void *user_data)
_enter_submenu - enter submenu
void _draw_check_item(void *w_, void *user_data)
_draw_check_item - draw item on expose call
void _draw_menu(void *w_, void *user_data)
_draw_menu - draw menu on expose call
void _leave_submenu(void *w_, void *user_data)
_leave_submenu - leave submenu
Widget_t * add_vslider(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_vslider - add a vertical slider to a Widget_t connect to func.value_changed_callback to implement...
Definition xslider.c:30
void os_get_window_metrics(Widget_t *w, Metrics_t *metrics)
os_get_window_metrics - Get the Merics_t struct related to a Widget_t
int os_grab_pointer(Widget_t *w)
os_grab_pointer - grab the mouse pointer. Works only on linux
Window os_get_root_window(Xputty *main, int flag)
os_get_root_window - get a pointer to the root window (desktop)
void os_translate_coords(Widget_t *w, Window from_window, Window to_window, int from_x, int from_y, int *to_x, int *to_y)
os_translate_coords - get x,y related to destination Window
void os_move_window(Display *dpy, Widget_t *w, int x, int y)
os_move_window - Move a Widget_t
void os_set_transient_for_hint(Widget_t *parent, Widget_t *w)
os_set_ transient_for_hint - set a Widget_t transient to a other Widget_t only work on linux,...
void os_transparent_draw(void *w_, void *user_data)
os_transparent_draw - Draw the Widget_t to the back buffer
void os_set_window_attrb(Widget_t *w)
os_set_window_attrb - set the attribute mask to a Widget_t only work on linux, stub on Windows
Widget_t * create_widget(Xputty *app, Widget_t *win, int x, int y, int width, int height)
*create_widget - create a widget A Widget_t could only be created as child of a other Widget_t To...
Definition xwidget.c:265
Widget_t * create_window(Xputty *app, Window win, int x, int y, int width, int height)
*create_window - create a Window You need to create as least minimun one Window to get started....
Definition xwidget.c:163
void submenu_widget_show_all(Widget_t *w)
submenu_widget_show_all - map/show submenu Widget_t with all childs
Definition xwidget.c:410
@ MENUITEM
Definition xwidget.h:326
@ NORTHEAST
Definition xwidget.h:302
@ NONE
Definition xwidget.h:328
@ NORTHWEST
Definition xwidget.h:300
@ IS_WIDGET
Definition xwidget.h:388
@ FAST_REDRAW
Definition xwidget.h:410
@ NO_AUTOREPEAT
Definition xwidget.h:408
@ IS_RADIO
Definition xwidget.h:394
@ NO_PROPAGATE
Definition xwidget.h:416
@ IS_POPUP
Definition xwidget.h:392
@ IS_SUBMENU
Definition xwidget.h:418
void widget_hide(Widget_t *w)
widget_hide - unmap/hide a Widget_t
Definition xwidget.c:368
void destroy_widget(Widget_t *w, Xputty *main)
destroy_widget - destroy a widget When a Widget_t receive a destroy_widget() call,...
Definition xwidget.c:86
void pop_widget_show_all(Widget_t *w)
pop_widget_show_all - map/show popup widget with all it's childs
Definition xwidget.c:400