Fix notification not disappearing
This commit is contained in:
parent
4a9c7693f4
commit
72ceedd4db
@ -42,8 +42,7 @@ pkg_config_packs := gio-2.0 \
|
||||
xext \
|
||||
"xrandr >= 1.5" \
|
||||
xscrnsaver \
|
||||
wayland-client\
|
||||
systemd
|
||||
wayland-client\
|
||||
|
||||
|
||||
# dunstify also needs libnotify
|
||||
|
@ -74,10 +74,12 @@ static gboolean run(void *data)
|
||||
bool active = queues_length_displayed() > 0;
|
||||
|
||||
if (active) {
|
||||
LOG_D("Dunst: Window is active");
|
||||
// Call draw before showing the window to avoid flickering
|
||||
draw();
|
||||
output->win_show(win);
|
||||
} else {
|
||||
LOG_D("Dunst: Window is NOT active");
|
||||
output->win_hide(win);
|
||||
}
|
||||
|
||||
@ -86,6 +88,8 @@ static gboolean run(void *data)
|
||||
gint64 sleep = queues_get_next_datachange(now);
|
||||
gint64 timeout_at = now + sleep;
|
||||
|
||||
LOG_D("Dunst: sleeping for %li ms", sleep/1000);
|
||||
|
||||
if (sleep >= 0) {
|
||||
if (next_timeout < now || timeout_at < next_timeout) {
|
||||
g_timeout_add(sleep/1000, run, NULL);
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "output.h"
|
||||
|
||||
#include "log.h"
|
||||
#include "x11/x.h"
|
||||
#include "x11/screen.h"
|
||||
#include "wayland/wl.h"
|
||||
|
16
src/queues.c
16
src/queues.c
@ -141,6 +141,7 @@ static bool queues_notification_is_finished(struct notification *n, struct dunst
|
||||
if (n->timeout == 0) // sticky
|
||||
return false;
|
||||
|
||||
/* LOG_I("Queues: Still checking if notification is finished"); */
|
||||
bool is_idle = status.fullscreen ? false : status.idle;
|
||||
|
||||
/* don't timeout when user is idle */
|
||||
@ -311,6 +312,21 @@ void queues_notification_close_id(int id, enum reason reason)
|
||||
{
|
||||
struct notification *target = NULL;
|
||||
|
||||
char* reason_string;
|
||||
switch (reason)
|
||||
{
|
||||
case REASON_TIME:
|
||||
reason_string="time";
|
||||
break;
|
||||
case REASON_USER:
|
||||
reason_string="user";
|
||||
break;
|
||||
default:
|
||||
reason_string="unknown";
|
||||
}
|
||||
|
||||
LOG_D("Queues: Closing notification for reason: %s", reason_string);
|
||||
|
||||
GQueue *allqueues[] = { displayed, waiting };
|
||||
for (int i = 0; i < sizeof(allqueues)/sizeof(GQueue*); i++) {
|
||||
for (GList *iter = g_queue_peek_head_link(allqueues[i]); iter;
|
||||
|
@ -777,6 +777,7 @@ void x_win_show(window winptr)
|
||||
*/
|
||||
void x_win_hide(window winptr)
|
||||
{
|
||||
LOG_I("X11: Hiding window");
|
||||
struct window_x11 *win = (struct window_x11*)winptr;
|
||||
ASSERT_OR_RET(win->visible,);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user