propogate property changes on the group leader to the whole group
This commit is contained in:
parent
0242bc2ec8
commit
9e746b6439
1 changed files with 38 additions and 18 deletions
|
@ -15,6 +15,7 @@
|
|||
#include "framerender.h"
|
||||
#include "focus.h"
|
||||
#include "moveresize.h"
|
||||
#include "group.h"
|
||||
#include "stacking.h"
|
||||
#include "extensions.h"
|
||||
#include "event.h"
|
||||
|
@ -41,6 +42,7 @@ static void event_handle_menu(XEvent *e);
|
|||
static void event_handle_dock(ObDock *s, XEvent *e);
|
||||
static void event_handle_dockapp(ObDockApp *app, XEvent *e);
|
||||
static void event_handle_client(ObClient *c, XEvent *e);
|
||||
static void event_handle_group(ObGroup *g, XEvent *e);
|
||||
|
||||
static gboolean focus_delay_func(gpointer data);
|
||||
static void focus_delay_client_dest(gpointer data);
|
||||
|
@ -424,6 +426,7 @@ static gboolean event_ignore(XEvent *e, ObClient *client)
|
|||
static void event_process(const XEvent *ec, gpointer data)
|
||||
{
|
||||
Window window;
|
||||
ObGroup *group = NULL;
|
||||
ObClient *client = NULL;
|
||||
ObDock *dock = NULL;
|
||||
ObDockApp *dockapp = NULL;
|
||||
|
@ -435,6 +438,8 @@ static void event_process(const XEvent *ec, gpointer data)
|
|||
e = ⅇ
|
||||
|
||||
window = event_get_window(e);
|
||||
if (!(e->type == PropertyNotify &&
|
||||
(group = g_hash_table_lookup(group_map, &window))))
|
||||
if ((obwin = g_hash_table_lookup(window_map, &window))) {
|
||||
switch (obwin->type) {
|
||||
case Window_Dock:
|
||||
|
@ -460,7 +465,9 @@ static void event_process(const XEvent *ec, gpointer data)
|
|||
return;
|
||||
|
||||
/* deal with it in the kernel */
|
||||
if (client)
|
||||
if (group)
|
||||
event_handle_group(group, e);
|
||||
else if (client)
|
||||
event_handle_client(client, e);
|
||||
else if (dockapp)
|
||||
event_handle_dockapp(dockapp, e);
|
||||
|
@ -572,6 +579,16 @@ static void event_handle_root(XEvent *e)
|
|||
}
|
||||
}
|
||||
|
||||
static void event_handle_group(ObGroup *group, XEvent *e)
|
||||
{
|
||||
GSList *it;
|
||||
|
||||
g_assert(e->type == PropertyNotify);
|
||||
|
||||
for (it = group->members; it; it = g_slist_next(it))
|
||||
event_handle_client(it->data, e);
|
||||
}
|
||||
|
||||
static void event_handle_client(ObClient *client, XEvent *e)
|
||||
{
|
||||
XEvent ce;
|
||||
|
@ -1062,6 +1079,9 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
|||
msgtype == prop_atoms.kwm_win_icon) {
|
||||
client_update_icons(client);
|
||||
}
|
||||
else if (msgtype == prop_atoms.sm_client_id) {
|
||||
client_update_sm_client_id(client);
|
||||
}
|
||||
default:
|
||||
;
|
||||
#ifdef SHAPE
|
||||
|
|
Loading…
Reference in a new issue