diff options
author | Dave Davenport <qball@gmpclient.org> | 2019-03-24 10:31:13 +0100 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2019-03-24 10:31:13 +0100 |
commit | 5b83b2ed2345bfe89c0520a49c15d021bd361c83 (patch) | |
tree | cacf26d5b06963fed453f103df3ce850a8c44188 /source/widgets | |
parent | 1a77cae59344caa0beb50644fc5e638fe28c1288 (diff) |
Allow aligning icon
Diffstat (limited to 'source/widgets')
-rw-r--r-- | source/widgets/icon.c | 15 | ||||
-rw-r--r-- | source/widgets/textbox.c | 4 |
2 files changed, 16 insertions, 3 deletions
diff --git a/source/widgets/icon.c b/source/widgets/icon.c index 83e47681..28fc76c9 100644 --- a/source/widgets/icon.c +++ b/source/widgets/icon.c @@ -46,6 +46,8 @@ struct _icon uint32_t icon_fetch_id; + double yalign,xalign; + // Source surface. cairo_surface_t *icon; }; @@ -83,9 +85,16 @@ static void icon_draw ( widget *wid, cairo_t *draw ) int icons = MAX ( iconh, iconw ); double scale = (double) b->size / icons; + int lpad = widget_padding_get_left ( WIDGET ( b ) ) ; + int rpad = widget_padding_get_right ( WIDGET ( b ) ) ; + int tpad = widget_padding_get_top ( WIDGET ( b ) ) ; + int bpad = widget_padding_get_bottom ( WIDGET ( b ) ) ; + cairo_save ( draw ); - cairo_translate ( draw, ( b->size - iconw * scale ) / 2.0, ( b->size - iconh * scale ) / 2.0 ); + cairo_translate ( draw, + lpad + ( b->widget.w - iconw * scale - lpad -rpad )*b->xalign, + tpad + ( b->widget.h- iconh * scale -tpad - bpad )*b->yalign ); cairo_scale ( draw, scale, scale ); cairo_set_source_surface ( draw, b->icon, 0, 0 ); cairo_paint ( draw ); @@ -146,6 +155,10 @@ icon * icon_create ( widget *parent, const char *name ) if ( filename ) { b->icon_fetch_id = rofi_icon_fetcher_query ( filename, b->size ); } + b->yalign = rofi_theme_get_double ( WIDGET ( b ), "vertical-align", 0.5 ); + b->yalign = MAX ( 0, MIN ( 1.0, b->yalign ) ); + b->xalign = rofi_theme_get_double ( WIDGET ( b ), "vertical-align", 0.5 ); + b->xalign = MAX ( 0, MIN ( 1.0, b->xalign ) ); return b; } diff --git a/source/widgets/textbox.c b/source/widgets/textbox.c index 3548a95c..70c29b10 100644 --- a/source/widgets/textbox.c +++ b/source/widgets/textbox.c @@ -207,9 +207,9 @@ textbox* textbox_create ( widget *parent, WidgetType type, const char *name, Tex tb->widget.trigger_action = textbox_editable_trigger_action; } - tb->yalign = rofi_theme_get_double ( WIDGET ( tb ), "vertical-align", xalign ); + tb->yalign = rofi_theme_get_double ( WIDGET ( tb ), "vertical-align", yalign ); tb->yalign = MAX ( 0, MIN ( 1.0, tb->yalign ) ); - tb->xalign = rofi_theme_get_double ( WIDGET ( tb ), "horizontal-align", yalign ); + tb->xalign = rofi_theme_get_double ( WIDGET ( tb ), "horizontal-align", xalign ); tb->xalign = MAX ( 0, MIN ( 1.0, tb->xalign ) ); return tb; |