aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calmwm.h4
-rw-r--r--menu.c34
-rw-r--r--mousefunc.c34
3 files changed, 43 insertions, 29 deletions
diff --git a/calmwm.h b/calmwm.h
index 3ad75e4..6b8acca 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -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.316 2016/09/29 00:21:55 okan Exp $
+ * $OpenBSD: calmwm.h,v 1.317 2016/09/30 15:12:19 okan Exp $
*/
#ifndef _CALMWM_H_
@@ -511,6 +511,8 @@ void mousefunc_client_move(struct client_ctx *,
void mousefunc_client_resize(struct client_ctx *,
union arg *);
+void menu_windraw(struct screen_ctx *, Window,
+ const char *, ...);
struct menu *menu_filter(struct screen_ctx *, struct menu_q *,
const char *, const char *, int,
void (*)(struct menu_q *, struct menu_q *, char *),
diff --git a/menu.c b/menu.c
index 94eb399..57d32d0 100644
--- a/menu.c
+++ b/menu.c
@@ -16,7 +16,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: menu.c,v 1.94 2016/09/29 00:21:55 okan Exp $
+ * $OpenBSD: menu.c,v 1.95 2016/09/30 15:12:19 okan Exp $
*/
#include <sys/types.h>
@@ -638,3 +638,35 @@ menuq_clear(struct menu_q *mq)
free(mi);
}
}
+
+void
+menu_windraw(struct screen_ctx *sc, Window win, const char *fmt, ...)
+{
+ va_list ap;
+ int i;
+ char *text;
+ XGlyphInfo extents;
+
+ va_start(ap, fmt);
+ i = vasprintf(&text, fmt, ap);
+ va_end(ap);
+
+ if (i < 0 || text == NULL)
+ err(1, "vasprintf");
+
+ XftTextExtentsUtf8(X_Dpy, sc->xftfont, (const FcChar8*)text,
+ strlen(text), &extents);
+
+ XReparentWindow(X_Dpy, sc->menu.win, win, 0, 0);
+ XMoveResizeWindow(X_Dpy, sc->menu.win, 0, 0,
+ extents.xOff, sc->xftfont->height);
+ XMapWindow(X_Dpy, sc->menu.win);
+ XClearWindow(X_Dpy, sc->menu.win);
+
+ XftDrawStringUtf8(sc->menu.xftdraw, &sc->xftcolor[CWM_COLOR_MENU_FONT],
+ sc->xftfont, 0, sc->xftfont->ascent + 1,
+ (const FcChar8*)text, strlen(text));
+
+ free(text);
+}
+
diff --git a/mousefunc.c b/mousefunc.c
index d1491af..0428bf2 100644
--- a/mousefunc.c
+++ b/mousefunc.c
@@ -16,7 +16,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: mousefunc.c,v 1.109 2016/09/30 15:05:02 okan Exp $
+ * $OpenBSD: mousefunc.c,v 1.110 2016/09/30 15:12:19 okan Exp $
*/
#include <sys/types.h>
@@ -32,31 +32,6 @@
#include "calmwm.h"
-static void mousefunc_sweep_draw(struct client_ctx *);
-
-static void
-mousefunc_sweep_draw(struct client_ctx *cc)
-{
- struct screen_ctx *sc = cc->sc;
- char s[14]; /* fits " nnnn x nnnn \0" */
- XGlyphInfo extents;
-
- (void)snprintf(s, sizeof(s), " %4d x %-4d ", cc->dim.w, cc->dim.h);
-
- XftTextExtentsUtf8(X_Dpy, sc->xftfont, (const FcChar8*)s,
- strlen(s), &extents);
-
- XReparentWindow(X_Dpy, sc->menu.win, cc->win, 0, 0);
- XMoveResizeWindow(X_Dpy, sc->menu.win, 0, 0,
- extents.xOff, sc->xftfont->height);
- XMapWindow(X_Dpy, sc->menu.win);
- XClearWindow(X_Dpy, sc->menu.win);
-
- XftDrawStringUtf8(sc->menu.xftdraw, &sc->xftcolor[CWM_COLOR_MENU_FONT],
- sc->xftfont, 0, sc->xftfont->ascent + 1,
- (const FcChar8*)s, strlen(s));
-}
-
void
mousefunc_client_resize(struct client_ctx *cc, union arg *arg)
{
@@ -89,7 +64,8 @@ mousefunc_client_resize(struct client_ctx *cc, union arg *arg)
cc->geom.h = ev.xmotion.y;
client_applysizehints(cc);
client_resize(cc, 1);
- mousefunc_sweep_draw(cc);
+ menu_windraw(sc, cc->win,
+ "%4d x %-4d", cc->dim.w, cc->dim.h);
break;
case ButtonRelease:
client_resize(cc, 1);
@@ -151,9 +127,13 @@ mousefunc_client_move(struct client_ctx *cc, union arg *arg)
cc->geom.y + cc->geom.h + (cc->bwidth * 2),
area.y, area.y + area.h, sc->snapdist);
client_move(cc);
+ menu_windraw(sc, cc->win,
+ "%4d, %-4d", cc->geom.x, cc->geom.y);
break;
case ButtonRelease:
client_move(cc);
+ XUnmapWindow(X_Dpy, sc->menu.win);
+ XReparentWindow(X_Dpy, sc->menu.win, sc->rootwin, 0, 0);
xu_ptr_ungrab();
return;
}