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 "xtooltip_private.h"
23 
24 
_get_width(Widget_t * w)25 void _get_width(Widget_t *w) {
26     cairo_text_extents_t extents;
27     cairo_set_font_size (w->crb, 12);
28     cairo_text_extents(w->crb,w->label , &extents);
29     XResizeWindow (w->app->dpy, w->widget, max(1, (int)extents.width+40), 25);
30 }
31 
_draw_tooltip(void * w_,void * user_data)32 void _draw_tooltip(void *w_, void* user_data) {
33     Widget_t *w = (Widget_t*)w_;
34     if (!w) return;
35     XWindowAttributes attrs;
36     XGetWindowAttributes(w->app->dpy, (Window)w->widget, &attrs);
37     if (attrs.map_state != IsViewable) return;
38     int width = attrs.width;
39     int height = attrs.height;
40     use_bg_color_scheme(w, get_color_state(w));
41     cairo_paint (w->crb);
42     cairo_text_extents_t extents;
43     /** show label **/
44     use_text_color_scheme(w, get_color_state(w));
45     cairo_set_font_size (w->crb, w->app->normal_font/w->scale.ascale);
46     cairo_text_extents(w->crb,w->label , &extents);
47 
48     cairo_move_to (w->crb, (width-extents.width)/2., height+5 - extents.height );
49     cairo_show_text(w->crb, w->label);
50 
51 }
52