Add client wrapper for XWMHints to support XA_WM_HINTS in PropertyNotify

events; based off a diff from Thomas Adam.
This commit is contained in:
okan 2013-12-11 15:41:11 +00:00
parent 5da88fd68f
commit 3d5c10942f
3 changed files with 18 additions and 10 deletions

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: calmwm.h,v 1.232 2013/12/11 14:16:09 okan Exp $
* $OpenBSD: calmwm.h,v 1.233 2013/12/11 15:41:11 okan Exp $
*/
#ifndef _CALMWM_H_
@ -398,6 +398,7 @@ void client_unhide(struct client_ctx *);
void client_vmaximize(struct client_ctx *);
void client_vtile(struct client_ctx *);
void client_warp(struct client_ctx *);
void client_wm_hints(struct client_ctx *);
void group_alltoggle(struct screen_ctx *);
void group_autogroup(struct client_ctx *);

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: client.c,v 1.155 2013/12/11 14:16:09 okan Exp $
* $OpenBSD: client.c,v 1.156 2013/12/11 15:41:11 okan Exp $
*/
#include <sys/param.h>
@ -77,7 +77,7 @@ client_init(Window win, struct screen_ctx *sc, int mapped)
conf_client(cc);
XGetClassHint(X_Dpy, cc->win, &cc->ch);
cc->wmh = XGetWMHints(X_Dpy, cc->win);
client_wm_hints(cc);
client_getmwmhints(cc);
client_wm_protocols(cc);
client_getsizehints(cc);
@ -93,12 +93,6 @@ client_init(Window win, struct screen_ctx *sc, int mapped)
cc->geom.h = wattr.height;
cc->colormap = wattr.colormap;
if (cc->wmh != NULL) {
if (cc->wmh->flags & InputHint) {
if (cc->wmh->input == 1)
cc->flags |= CLIENT_INPUT;
}
}
if (wattr.map_state != IsViewable) {
client_placecalc(cc);
client_move(cc);
@ -509,6 +503,16 @@ client_wm_protocols(struct client_ctx *cc)
}
}
void
client_wm_hints(struct client_ctx *cc)
{
if ((cc->wmh = XGetWMHints(X_Dpy, cc->win)) == NULL)
return;
if ((cc->wmh->flags & InputHint) && (cc->wmh->input))
cc->flags |= CLIENT_INPUT;
}
void
client_msg(struct client_ctx *cc, Atom proto)
{

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: xevents.c,v 1.96 2013/12/11 14:16:09 okan Exp $
* $OpenBSD: xevents.c,v 1.97 2013/12/11 15:41:11 okan Exp $
*/
/*
@ -186,6 +186,9 @@ xev_handle_propertynotify(XEvent *ee)
case XA_WM_NAME:
client_setname(cc);
break;
case XA_WM_HINTS:
client_wm_hints(cc);
break;
case XA_WM_TRANSIENT_FOR:
client_transient(cc);
break;