about summary refs log tree commit diff
path: root/calmwm.c
diff options
context:
space:
mode:
authoroga <oga>2008-09-22 14:15:03 +0000
committeroga <oga>2008-09-22 14:15:03 +0000
commit61601991b5151be7500cf7581b303b7f12ddb905 (patch)
treee5947cccefbe32d49130a7a8c80c7d808853988b /calmwm.c
parenta0082c58a4a95d05f452cfa3da7eaf4e1eb17dba (diff)
downloadcwm-61601991b5151be7500cf7581b303b7f12ddb905.tar.gz
cwm-61601991b5151be7500cf7581b303b7f12ddb905.tar.xz
cwm-61601991b5151be7500cf7581b303b7f12ddb905.zip
Display the current window title not a previous one in the case of
``show all'' in the window search dialogue. Noticed and diff from Tim
van der Molen, thanks!
Diffstat (limited to 'calmwm.c')
-rw-r--r--calmwm.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/calmwm.c b/calmwm.c
index c64035d..446ed17 100644
--- a/calmwm.c
+++ b/calmwm.c
@@ -36,6 +36,7 @@ u_int				 Nscreens;
 struct client_ctx_q		 Clientq;
 
 int				 Doshape, Shape_ev;
+int				 HasXinerama, HasRandr, Randr_ev;
 int				 Starting;
 struct conf			 Conf;
 
@@ -121,6 +122,8 @@ dpy_init(const char *dpyname)
 
 	Doshape = XShapeQueryExtension(X_Dpy, &Shape_ev, &i);
 
+	HasRandr = XRRQueryExtension(X_Dpy, &Randr_ev, &i);
+
 	TAILQ_INIT(&Screenq);
 }
 
@@ -133,7 +136,7 @@ x_setup(void)
 
 	Nscreens = ScreenCount(X_Dpy);
 	for (i = 0; i < (int)Nscreens; i++) {
-		XMALLOC(sc, struct screen_ctx);
+		XCALLOC(sc, struct screen_ctx);
 		x_setupscreen(sc, i);
 		TAILQ_INSERT_TAIL(&Screenq, sc, entry);
 	}
@@ -161,6 +164,7 @@ x_setupscreen(struct screen_ctx *sc, u_int which)
 	Window			*wins, w0, w1;
 	XWindowAttributes	 winattr;
 	XSetWindowAttributes	 rootattr;
+	int			 fake;
 	u_int			 nwins, i;
 
 	Curscreen = sc;
@@ -246,6 +250,18 @@ x_setupscreen(struct screen_ctx *sc, u_int which)
 	XChangeWindowAttributes(X_Dpy, sc->rootwin,
 	    CWEventMask, &rootattr);
 
+	if (XineramaQueryExtension(X_Dpy, &fake, &fake) == 1 &&
+	    ((HasXinerama = XineramaIsActive(X_Dpy)) == 1))
+		HasXinerama = 1;
+	if (HasRandr)
+		XRRSelectInput(X_Dpy, sc->rootwin, RRScreenChangeNotifyMask);
+	/*
+	 * initial setup of xinerama screens, if we're using RandR then we'll
+	 * redo this whenever the screen changes since a CTRC may have been
+	 * added or removed
+	 */
+	screen_init_xinerama(sc);
+
 	XSync(X_Dpy, False);
 
 	return;