mirror of
https://github.com/davatorium/rofi.git
synced 2025-04-14 17:43:01 -04:00
Allow aligning icon
This commit is contained in:
parent
1a77cae593
commit
5b83b2ed23
2 changed files with 16 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue