[libwnck/wip/muktupavels/issue-146: 2/2] application: use res_class as app name when group is not set
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libwnck/wip/muktupavels/issue-146: 2/2] application: use res_class as app name when group is not set
- Date: Sun, 9 Oct 2022 20:25:08 +0000 (UTC)
commit 6b86ba278214615f03dd78b61dce1ef1a6beb584
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sun Oct 9 23:17:30 2022 +0300
application: use res_class as app name when group is not set
libwnck/application.c | 4 +++-
libwnck/private.h | 3 +++
libwnck/screen.c | 6 +++++-
libwnck/window.c | 11 +++++++++++
4 files changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/libwnck/application.c b/libwnck/application.c
index 9ab7f489..5b1ae203 100644
--- a/libwnck/application.c
+++ b/libwnck/application.c
@@ -499,6 +499,7 @@ wnck_application_get_startup_id (WnckApplication *app)
/* xwindow is a group leader */
WnckApplication*
_wnck_application_create (Window xwindow,
+ gboolean has_group_leader,
WnckScreen *screen)
{
WnckHandle *handle;
@@ -516,7 +517,8 @@ _wnck_application_create (Window xwindow,
application->priv->xwindow = xwindow;
application->priv->screen = screen;
- application->priv->name = _wnck_get_name (xscreen, xwindow);
+ if (has_group_leader)
+ application->priv->name = _wnck_get_name (xscreen, xwindow);
if (application->priv->name == NULL)
application->priv->name = _wnck_get_res_class_utf8 (xscreen, xwindow);
diff --git a/libwnck/private.h b/libwnck/private.h
index d5e48d93..bf876195 100644
--- a/libwnck/private.h
+++ b/libwnck/private.h
@@ -61,6 +61,8 @@ const char* _wnck_window_get_startup_id (WnckWindow *window);
time_t _wnck_window_get_needs_attention_time (WnckWindow *window);
time_t _wnck_window_or_transient_get_needs_attention_time (WnckWindow *window);
+gboolean _wnck_window_get_has_group_leader (WnckWindow *window);
+
WnckWorkspace* _wnck_workspace_create (int number,
WnckScreen *screen);
void _wnck_workspace_destroy (WnckWorkspace *space);
@@ -82,6 +84,7 @@ void _wnck_application_remove_window (WnckApplication *app,
WnckWindow *window);
WnckApplication* _wnck_application_create (Window xwindow,
+ gboolean has_group_leader,
WnckScreen *screen);
void _wnck_application_destroy (WnckApplication *app);
void _wnck_application_load_icons (WnckApplication *app);
diff --git a/libwnck/screen.c b/libwnck/screen.c
index 42f0c764..a690f7cc 100644
--- a/libwnck/screen.c
+++ b/libwnck/screen.c
@@ -1410,7 +1410,11 @@ update_client_list (WnckScreen *screen)
if (app == NULL)
{
- app = _wnck_application_create (leader, screen);
+ gboolean has_group_leader;
+
+ has_group_leader = _wnck_window_get_has_group_leader (window);
+
+ app = _wnck_application_create (leader, has_group_leader, screen);
created_apps = g_list_prepend (created_apps, app);
}
diff --git a/libwnck/window.c b/libwnck/window.c
index 35bb37c1..ca55596a 100644
--- a/libwnck/window.c
+++ b/libwnck/window.c
@@ -72,6 +72,7 @@ struct _WnckWindowPrivate
WnckScreen *screen;
WnckApplication *app;
WnckClassGroup *class_group;
+ gboolean has_group_leader;
Window group_leader;
Window transient_for;
int orig_event_mask;
@@ -504,6 +505,7 @@ _wnck_window_create (Window xwindow,
/* Default the group leader to the window itself; it is set in
* update_wmhints() if a different group leader is specified.
*/
+ window->priv->has_group_leader = FALSE;
window->priv->group_leader = window->priv->xwindow;
window->priv->session_id =
@@ -767,6 +769,12 @@ wnck_window_get_group_leader (WnckWindow *window)
return window->priv->group_leader;
}
+gboolean
+_wnck_window_get_has_group_leader (WnckWindow *window)
+{
+ return window->priv->has_group_leader;
+}
+
/**
* wnck_window_get_xid:
* @window: a #WnckWindow.
@@ -3188,7 +3196,10 @@ update_wmhints (WnckWindow *window)
_wnck_atom_get ("WM_HINTS"));
if (hints->flags & WindowGroupHint)
+ {
+ window->priv->group_leader = TRUE;
window->priv->group_leader = hints->window_group;
+ }
if (hints->flags & XUrgencyHint)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]