diff options
| author | Mikael Magnusson <mikachu@gmail.com> | 2009-09-20 15:37:54 +0200 |
|---|---|---|
| committer | Mikael Magnusson <mikachu@gmail.com> | 2009-09-20 15:37:54 +0200 |
| commit | 48b6fd9ac4cb82c0c176a4554ce3272c01025aae (patch) | |
| tree | e947f6df39cc4370d53140c705eac4755bdaba51 /openbox | |
| parent | 1169118e60050ee361e22111ffce842ff393d8bf (diff) | |
Reload motif wm hints when property changes
Google's chrome does this when you toggle window decorations.
Based on patch in #4250 by Daniel Erat.
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/client.c | 3 | ||||
| -rw-r--r-- | openbox/client.h | 2 | ||||
| -rw-r--r-- | openbox/event.c | 7 |
3 files changed, 10 insertions, 2 deletions
diff --git a/openbox/client.c b/openbox/client.c index c1af196b..fe342f65 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -80,7 +80,6 @@ static void client_get_area(ObClient *self); static void client_get_desktop(ObClient *self); static void client_get_state(ObClient *self); static void client_get_shaped(ObClient *self); -static void client_get_mwm_hints(ObClient *self); static void client_get_colormap(ObClient *self); static void client_set_desktop_recursive(ObClient *self, guint target, @@ -1479,7 +1478,7 @@ static void client_update_transient_tree(ObClient *self, } } -static void client_get_mwm_hints(ObClient *self) +void client_get_mwm_hints(ObClient *self) { guint num; guint32 *hints; diff --git a/openbox/client.h b/openbox/client.h index f55c7ac6..832405cf 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -634,6 +634,8 @@ void client_setup_decor_and_functions(ObClient *self, gboolean reconfig); /*! Sets the window's type and transient flag */ void client_get_type_and_transientness(ObClient *self); +/*! Gets the motif wm hints */ +void client_get_mwm_hints(ObClient *self); /*! Returns a client's icon set, or its parents (recursively) if it doesn't have one diff --git a/openbox/event.c b/openbox/event.c index ddd2e326..71fed413 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1517,6 +1517,13 @@ static void event_handle_client(ObClient *client, XEvent *e) reconfigure the window if it needs to. emacs will update its normal hints every time it receives a conigurenotify */ client_reconfigure(client, FALSE); + } else if (msgtype == prop_atoms.motif_wm_hints) { + client_get_mwm_hints(client); + /* This can override some mwm hints */ + client_get_type_and_transientness(client); + + /* Apply the changes to the window */ + client_setup_decor_and_functions(client, TRUE); } else if (msgtype == XA_WM_HINTS) { client_update_wmhints(client); } else if (msgtype == XA_WM_TRANSIENT_FOR) { |
