show count of hidden msgs
This commit is contained in:
parent
5915cbdd9f
commit
167d7c8671
@ -20,6 +20,7 @@ const char *format = "%s %b"; /* default format */
|
|||||||
int timeouts[] = { 10, 10, 0 }; /* low, normal, critical */
|
int timeouts[] = { 10, 10, 0 }; /* low, normal, critical */
|
||||||
const char *geom = "0x3-30+20"; /* geometry */
|
const char *geom = "0x3-30+20"; /* geometry */
|
||||||
int sort = True; /* sort messages by urgency */
|
int sort = True; /* sort messages by urgency */
|
||||||
|
int indicate_hidden = True; /* show count of hidden messages */
|
||||||
/* const char *geom = "x1"; */
|
/* const char *geom = "x1"; */
|
||||||
|
|
||||||
|
|
||||||
|
21
dunst.c
21
dunst.c
@ -240,9 +240,11 @@ delete_msg(msg_queue_t *elem) {
|
|||||||
|
|
||||||
void
|
void
|
||||||
drawmsg(void) {
|
drawmsg(void) {
|
||||||
int width, x, y, height, i;
|
int width, x, y, height, drawn_msg_count, i;
|
||||||
unsigned int len = list_len(msgqueue);
|
unsigned int len = list_len(msgqueue);
|
||||||
msg_queue_t *cur_msg = msgqueue;
|
msg_queue_t *cur_msg = msgqueue;
|
||||||
|
char hidden[128];
|
||||||
|
int hidden_count = 0;
|
||||||
dc->x = 0;
|
dc->x = 0;
|
||||||
dc->y = 0;
|
dc->y = 0;
|
||||||
dc->h = 0;
|
dc->h = 0;
|
||||||
@ -252,12 +254,20 @@ drawmsg(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
height = MIN(geometry.h, len);
|
height = MIN(geometry.h, len);
|
||||||
|
drawn_msg_count = height;
|
||||||
|
hidden_count = len - height;
|
||||||
|
hidden_count = indicate_hidden && hidden_count > 0 ? hidden_count : 0;
|
||||||
|
sprintf(hidden, "(%d more)", hidden_count);
|
||||||
|
if(hidden_count)
|
||||||
|
height++;
|
||||||
|
|
||||||
if(geometry.mask & WidthValue) {
|
if(geometry.mask & WidthValue) {
|
||||||
if(geometry.w == 0) {
|
if(geometry.w == 0) {
|
||||||
width = 0;
|
width = 0;
|
||||||
for(i = 0; i < height; i++){
|
for(i = 0; i < height; i++){
|
||||||
width = MAX(width, textw(dc, cur_msg->msg));
|
width = MAX(width, textw(dc, cur_msg->msg));
|
||||||
|
if(hidden_count)
|
||||||
|
width = MAX(width, textw(dc,hidden));
|
||||||
cur_msg = cur_msg->next;
|
cur_msg = cur_msg->next;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -285,7 +295,7 @@ drawmsg(void) {
|
|||||||
XResizeWindow(dc->dpy, win, width, height*font_h);
|
XResizeWindow(dc->dpy, win, width, height*font_h);
|
||||||
drawrect(dc, 0, 0, width, height*font_h, True, BG(dc, colors[NORM]));
|
drawrect(dc, 0, 0, width, height*font_h, True, BG(dc, colors[NORM]));
|
||||||
|
|
||||||
for(i = 0; i < height; i++) {
|
for(i = 0; i < drawn_msg_count; i++) {
|
||||||
if(cur_msg->start == 0)
|
if(cur_msg->start == 0)
|
||||||
cur_msg->start = now;
|
cur_msg->start = now;
|
||||||
|
|
||||||
@ -296,6 +306,13 @@ drawmsg(void) {
|
|||||||
cur_msg = cur_msg->next;
|
cur_msg = cur_msg->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(hidden_count) {
|
||||||
|
drawrect(dc, 0, dc->y, width, font_h, True, BG(dc, colors[NORM]));
|
||||||
|
drawtext(dc, hidden, colors[NORM]);
|
||||||
|
dc->y += font_h;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
XMoveWindow(dc->dpy, win, x, y);
|
XMoveWindow(dc->dpy, win, x, y);
|
||||||
|
|
||||||
mapdc(dc, win, width, height*font_h);
|
mapdc(dc, win, width, height*font_h);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user