summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--calmwm.c58
-rw-r--r--calmwm.h1
-rw-r--r--screen.c54
3 files changed, 56 insertions, 57 deletions
diff --git a/calmwm.c b/calmwm.c
index f95e811..c925760 100644
--- a/calmwm.c
+++ b/calmwm.c
@@ -54,7 +54,6 @@ static void	dpy_init(const char *);
 static int	x_errorhandler(Display *, XErrorEvent *);
 static int	x_wmerrorhandler(Display *, XErrorEvent *);
 static void	x_setup(void);
-static void	x_setupscreen(struct screen_ctx *, u_int);
 static void	x_teardown(void);
 
 int
@@ -135,7 +134,7 @@ x_setup(void)
 
 	for (i = 0; i < ScreenCount(X_Dpy); i++) {
 		sc = xcalloc(1, sizeof(*sc));
-		x_setupscreen(sc, i);
+		screen_init(sc, i);
 		TAILQ_INSERT_TAIL(&Screenq, sc, entry);
 	}
 
@@ -158,61 +157,6 @@ x_teardown(void)
 	XCloseDisplay(X_Dpy);
 }
 
-static void
-x_setupscreen(struct screen_ctx *sc, u_int which)
-{
-	Window			*wins, w0, w1;
-	XWindowAttributes	 winattr;
-	XSetWindowAttributes	 rootattr;
-	u_int			 nwins, i;
-
-	sc->which = which;
-	sc->rootwin = RootWindow(X_Dpy, sc->which);
-
-	xu_ewmh_net_supported(sc);
-	xu_ewmh_net_supported_wm_check(sc);
-
-	conf_gap(&Conf, sc);
-
-	screen_update_geometry(sc);
-
-	conf_color(&Conf, sc);
-
-	group_init(sc);
-	conf_font(&Conf, sc);
-
-	TAILQ_INIT(&sc->mruq);
-
-	/* Initialize menu window. */
-	menu_init(sc);
-
-	rootattr.cursor = Cursor_normal;
-	rootattr.event_mask = CHILDMASK|PropertyChangeMask|EnterWindowMask|
-	    LeaveWindowMask|ColormapChangeMask|BUTTONMASK;
-
-	XChangeWindowAttributes(X_Dpy, sc->rootwin,
-	    CWEventMask|CWCursor, &rootattr);
-
-	/* Deal with existing clients. */
-	XQueryTree(X_Dpy, sc->rootwin, &w0, &w1, &wins, &nwins);
-
-	for (i = 0; i < nwins; i++) {
-		XGetWindowAttributes(X_Dpy, wins[i], &winattr);
-		if (winattr.override_redirect ||
-		    winattr.map_state != IsViewable)
-			continue;
-		(void)client_new(wins[i], sc, winattr.map_state != IsUnmapped);
-	}
-	XFree(wins);
-
-	screen_updatestackingorder(sc);
-
-	if (HasRandr)
-		XRRSelectInput(X_Dpy, sc->rootwin, RRScreenChangeNotifyMask);
-
-	XSync(X_Dpy, False);
-}
-
 static int
 x_wmerrorhandler(Display *dpy, XErrorEvent *e)
 {
diff --git a/calmwm.h b/calmwm.h
index cf00f54..38c3fee 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -369,6 +369,7 @@ void			 search_print_client(struct menu *, int);
 
 XineramaScreenInfo	*screen_find_xinerama(struct screen_ctx *, int, int);
 struct screen_ctx	*screen_fromroot(Window);
+void			 screen_init(struct screen_ctx *, u_int);
 void			 screen_update_geometry(struct screen_ctx *);
 void			 screen_updatestackingorder(struct screen_ctx *);
 
diff --git a/screen.c b/screen.c
index b52856f..a515adb 100644
--- a/screen.c
+++ b/screen.c
@@ -32,6 +32,60 @@
 
 static void	 screen_init_xinerama(struct screen_ctx *);
 
+void
+screen_init(struct screen_ctx *sc, u_int which)
+{
+	Window			*wins, w0, w1;
+	XWindowAttributes	 winattr;
+	XSetWindowAttributes	 rootattr;
+	u_int			 nwins, i;
+
+	sc->which = which;
+	sc->rootwin = RootWindow(X_Dpy, sc->which);
+
+	xu_ewmh_net_supported(sc);
+	xu_ewmh_net_supported_wm_check(sc);
+
+	conf_gap(&Conf, sc);
+
+	screen_update_geometry(sc);
+
+	conf_color(&Conf, sc);
+
+	group_init(sc);
+	conf_font(&Conf, sc);
+
+	TAILQ_INIT(&sc->mruq);
+
+	menu_init(sc);
+
+	rootattr.cursor = Cursor_normal;
+	rootattr.event_mask = CHILDMASK|PropertyChangeMask|EnterWindowMask|
+	    LeaveWindowMask|ColormapChangeMask|BUTTONMASK;
+
+	XChangeWindowAttributes(X_Dpy, sc->rootwin,
+	    CWEventMask|CWCursor, &rootattr);
+
+	/* Deal with existing clients. */
+	XQueryTree(X_Dpy, sc->rootwin, &w0, &w1, &wins, &nwins);
+
+	for (i = 0; i < nwins; i++) {
+		XGetWindowAttributes(X_Dpy, wins[i], &winattr);
+		if (winattr.override_redirect ||
+		    winattr.map_state != IsViewable)
+			continue;
+		(void)client_new(wins[i], sc, winattr.map_state != IsUnmapped);
+	}
+	XFree(wins);
+
+	screen_updatestackingorder(sc);
+
+	if (HasRandr)
+		XRRSelectInput(X_Dpy, sc->rootwin, RRScreenChangeNotifyMask);
+
+	XSync(X_Dpy, False);
+}
+
 struct screen_ctx *
 screen_fromroot(Window rootwin)
 {