adding changes according to review
- adding default to config.h#defaults - changing naming from content_* to vertical_* - replacing switch-case with if-else-if
This commit is contained in:
parent
e665eea97e
commit
4c09883ef6
1
config.h
1
config.h
@ -33,6 +33,7 @@ struct settings defaults = {
|
||||
.idle_threshold = 0, /* don't timeout notifications when idle for x seconds */
|
||||
.show_age_threshold = -1, /* show age of notification, when notification is older than x seconds */
|
||||
.align = ALIGN_LEFT, /* text alignment ALIGN_[LEFT|CENTER|RIGHT] */
|
||||
.vertical_alignment = VERTICAL_CENTER, /* vertical content alignment VERTICAL_[TOP|CENTER|BOTTOM] */
|
||||
.sticky_history = true,
|
||||
.history_length = 20, /* max amount of notifications kept in history */
|
||||
.show_indicators = true,
|
||||
|
@ -337,7 +337,7 @@ removed from the format.
|
||||
|
||||
Defines how the text should be aligned within the notification.
|
||||
|
||||
=item B<content_alignment> (values: [top/center/bottom], default: center)
|
||||
=item B<vertical_alignment> (values: [top/center/bottom], default: center)
|
||||
|
||||
Defines how the text and icon should be aligned vertically within the
|
||||
notification. If icons are disabled, this option has no effect.
|
||||
|
2
dunstrc
2
dunstrc
@ -134,7 +134,7 @@
|
||||
|
||||
# Vertical alignment of message text and icon.
|
||||
# Possible values are "top", "center" and "bottom".
|
||||
content_alignment = center
|
||||
vertical_alignment = center
|
||||
|
||||
# Show age of message if message is older than show_age_threshold
|
||||
# seconds.
|
||||
|
46
src/draw.c
46
src/draw.c
@ -517,25 +517,18 @@ static void render_content(cairo_t *c, struct colored_layout *cl, int width)
|
||||
// text positioning
|
||||
if (cl->icon) {
|
||||
// vertical alignment
|
||||
switch (settings.content_alignment) {
|
||||
case CONTENT_TOP:
|
||||
if (settings.vertical_alignment == VERTICAL_TOP) {
|
||||
text_y = settings.padding;
|
||||
break;
|
||||
case CONTENT_BOTTOM:
|
||||
} else if (settings.vertical_alignment == VERTICAL_BOTTOM) {
|
||||
text_y = h + settings.padding - h_text;
|
||||
if (text_y < 0) text_y = settings.padding;
|
||||
break;
|
||||
default: // CONTENT_CENTER
|
||||
break;
|
||||
}
|
||||
if (text_y < 0)
|
||||
text_y = settings.padding;
|
||||
} // else VERTICAL_CENTER
|
||||
|
||||
// icon position
|
||||
switch (settings.icon_position) {
|
||||
case ICON_LEFT:
|
||||
if (settings.icon_position == ICON_LEFT) {
|
||||
text_x = cairo_image_surface_get_width(cl->icon) + 2 * settings.h_padding;
|
||||
break;
|
||||
default: // ICON_RIGHT
|
||||
break;
|
||||
}
|
||||
} // else ICON_RIGHT
|
||||
}
|
||||
cairo_move_to(c, text_x, text_y);
|
||||
|
||||
@ -552,25 +545,18 @@ static void render_content(cairo_t *c, struct colored_layout *cl, int width)
|
||||
image_y = settings.padding + h/2 - image_height/2;
|
||||
|
||||
// vertical alignment
|
||||
switch (settings.content_alignment) {
|
||||
case CONTENT_TOP:
|
||||
if (settings.vertical_alignment == VERTICAL_TOP) {
|
||||
image_y = settings.padding;
|
||||
break;
|
||||
case CONTENT_BOTTOM:
|
||||
} else if (settings.vertical_alignment == VERTICAL_BOTTOM) {
|
||||
image_y = h + settings.padding - image_height;
|
||||
if (image_y < settings.padding || image_y > h) image_y = settings.padding;
|
||||
break;
|
||||
default: // CONTENT_CENTER
|
||||
break;
|
||||
}
|
||||
if (image_y < settings.padding || image_y > h)
|
||||
image_y = settings.padding;
|
||||
} // else VERTICAL_CENTER
|
||||
|
||||
// icon position
|
||||
switch (settings.icon_position) {
|
||||
case ICON_LEFT:
|
||||
if (settings.icon_position == ICON_LEFT) {
|
||||
image_x = settings.h_padding;
|
||||
break;
|
||||
default: // ICON_RIGHT
|
||||
break;
|
||||
}
|
||||
} // else ICON_RIGHT
|
||||
|
||||
cairo_set_source_surface(c, cl->icon, image_x, image_y);
|
||||
cairo_rectangle(c, image_x, image_y, image_width, image_height);
|
||||
|
@ -103,14 +103,14 @@ bool string_parse_icon_position(const char *s, enum icon_position *ret)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool string_parse_content_alignment(const char *s, enum content_alignment *ret)
|
||||
bool string_parse_vertical_alignment(const char *s, enum vertical_alignment *ret)
|
||||
{
|
||||
ASSERT_OR_RET(STR_FULL(s), false);
|
||||
ASSERT_OR_RET(ret, false);
|
||||
|
||||
STRING_PARSE_RET("top", CONTENT_TOP);
|
||||
STRING_PARSE_RET("center", CONTENT_CENTER);
|
||||
STRING_PARSE_RET("bottom", CONTENT_BOTTOM);
|
||||
STRING_PARSE_RET("top", VERTICAL_TOP);
|
||||
STRING_PARSE_RET("center", VERTICAL_CENTER);
|
||||
STRING_PARSE_RET("bottom", VERTICAL_BOTTOM);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ bool string_parse_ellipsize(const char *s, enum ellipsize *ret);
|
||||
bool string_parse_follow_mode(const char *s, enum follow_mode *ret);
|
||||
bool string_parse_fullscreen(const char *s, enum behavior_fullscreen *ret);
|
||||
bool string_parse_icon_position(const char *s, enum icon_position *ret);
|
||||
bool string_parse_content_alignment(const char *s, enum content_alignment *ret);
|
||||
bool string_parse_vertical_alignment(const char *s, enum vertical_alignment *ret);
|
||||
bool string_parse_markup_mode(const char *s, enum markup_mode *ret);
|
||||
bool string_parse_mouse_action(const char *s, enum mouse_action *ret);
|
||||
bool string_parse_sepcolor(const char *s, struct separator_color_data *ret);
|
||||
|
@ -426,13 +426,13 @@ void load_settings(char *cmdline_config_path)
|
||||
{
|
||||
char *c = option_get_string(
|
||||
"global",
|
||||
"content_alignment", "-content_alignment", "center",
|
||||
"vertical_alignment", "-vertical_alignment", "center",
|
||||
"Align icon and text top/center/bottom"
|
||||
);
|
||||
if (!string_parse_content_alignment(c, &settings.content_alignment)) {
|
||||
if (!string_parse_vertical_alignment(c, &settings.vertical_alignment)) {
|
||||
if (c)
|
||||
LOG_W("Unknown content alignment: '%s'", c);
|
||||
settings.content_alignment = defaults.content_alignment;
|
||||
LOG_W("Unknown vertical alignment: '%s'", c);
|
||||
settings.vertical_alignment = defaults.vertical_alignment;
|
||||
}
|
||||
g_free(c);
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
enum alignment { ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT };
|
||||
enum ellipsize { ELLIPSE_START, ELLIPSE_MIDDLE, ELLIPSE_END };
|
||||
enum icon_position { ICON_LEFT, ICON_RIGHT, ICON_OFF };
|
||||
enum content_alignment { CONTENT_TOP, CONTENT_CENTER, CONTENT_BOTTOM };
|
||||
enum vertical_alignment { VERTICAL_TOP, VERTICAL_CENTER, VERTICAL_BOTTOM };
|
||||
enum separator_color { SEP_FOREGROUND, SEP_AUTO, SEP_FRAME, SEP_CUSTOM };
|
||||
enum follow_mode { FOLLOW_NONE, FOLLOW_MOUSE, FOLLOW_KEYBOARD };
|
||||
enum mouse_action { MOUSE_NONE, MOUSE_DO_ACTION, MOUSE_CLOSE_CURRENT, MOUSE_CLOSE_ALL };
|
||||
@ -76,7 +76,7 @@ struct settings {
|
||||
char *browser;
|
||||
char **browser_cmd;
|
||||
enum icon_position icon_position;
|
||||
enum content_alignment content_alignment;
|
||||
enum vertical_alignment vertical_alignment;
|
||||
int min_icon_size;
|
||||
int max_icon_size;
|
||||
char *icon_path;
|
||||
|
Loading…
x
Reference in New Issue
Block a user