mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-10 07:50:19 +00:00
fix: KDE Wayland alert flash—detect Plasma+Wayland, present() before urgency hint
This commit is contained in:
@@ -432,12 +432,47 @@ set_window_urgency (GtkWidget *win, gboolean set)
|
|||||||
gtk_window_set_urgency_hint (GTK_WINDOW (win), set);
|
gtk_window_set_urgency_hint (GTK_WINDOW (win), set);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
is_wayland_display (void)
|
||||||
|
{
|
||||||
|
GdkDisplay *display = gdk_display_get_default ();
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
if (!display)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
name = gdk_display_get_name (display);
|
||||||
|
if (!name)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return g_str_has_prefix (name, "wayland");
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
is_kde_desktop (void)
|
||||||
|
{
|
||||||
|
const char *desktop = g_getenv ("XDG_CURRENT_DESKTOP");
|
||||||
|
|
||||||
|
if (desktop && strstr (desktop, "KDE"))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return g_getenv ("KDE_FULL_SESSION") != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
is_kde_wayland (void)
|
||||||
|
{
|
||||||
|
return is_wayland_display () && is_kde_desktop ();
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
flash_window (GtkWidget *win)
|
flash_window (GtkWidget *win)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_GTK_MAC
|
#ifdef HAVE_GTK_MAC
|
||||||
gtkosx_application_attention_request (osx_app, INFO_REQUEST);
|
gtkosx_application_attention_request (osx_app, INFO_REQUEST);
|
||||||
#endif
|
#endif
|
||||||
|
if (is_kde_wayland ())
|
||||||
|
gtk_window_present (GTK_WINDOW (win));
|
||||||
set_window_urgency (win, TRUE);
|
set_window_urgency (win, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user