JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Add version stuff
[spectrwm.git] / scrotwm.c
index 43a0d4d..d6f4d23 100644 (file)
--- a/scrotwm.c
+++ b/scrotwm.c
@@ -158,6 +158,8 @@ double                      dialog_ratio = .6;
 char                   *bar_argv[] = { NULL, NULL };
 int                    bar_pipe[2];
 char                   bar_ext[SWM_BAR_MAX];
+char                   bar_vertext[SWM_BAR_MAX];
+int                    bar_version = 0;
 sig_atomic_t           bar_alarm = 0;
 int                    bar_delay = 30;
 int                    bar_enabled = 1;
@@ -599,8 +601,8 @@ bar_update(void)
        for (i = 0; i < ScreenCount(display); i++) {
                x = 1;
                TAILQ_FOREACH(r, &screens[i].rl, entry) {
-                       snprintf(loc, sizeof loc, "%s     %d:%d    %s",
-                           s, x++, r->ws->idx + 1, bar_ext);
+                       snprintf(loc, sizeof loc, "%s     %d:%d    %s    %s",
+                           s, x++, r->ws->idx + 1, bar_ext, bar_vertext);
                        bar_print(r, loc);
                }
        }
@@ -726,6 +728,17 @@ bar_setup(struct swm_region *r)
 }
 
 void
+version(struct swm_region *r, union arg *args)
+{
+       bar_version = !bar_version;
+       if (bar_version)
+               strlcpy(bar_vertext, cvstag, sizeof bar_vertext);
+       else
+               strlcpy(bar_vertext, "", sizeof bar_vertext);
+       bar_update();
+}
+
+void
 config_win(struct ws_win *win)
 {
        XConfigureEvent         ce;
@@ -1515,6 +1528,9 @@ send_to_ws(struct swm_region *r, union arg *args)
        Atom                    ws_idx_atom = 0;
        unsigned char           ws_idx_str[SWM_PROPLEN];
 
+       if (win == NULL)
+               return;
+
        DNPRINTF(SWM_D_MOVE, "send_to_ws: win: %lu\n", win->id);
 
        ws = win->ws;
@@ -1638,6 +1654,7 @@ struct key {
        { MODKEY | ShiftMask,   XK_x,           wkill,          {0} },
        { MODKEY,               XK_s,           screenshot,     {.id = SWM_ARG_ID_SS_ALL} },
        { MODKEY | ShiftMask,   XK_s,           screenshot,     {.id = SWM_ARG_ID_SS_WINDOW} },
+       { MODKEY | ShiftMask,   XK_v,           version,        {0} },
 };
 
 void
@@ -1689,6 +1706,10 @@ resize(struct ws_win *win, union arg *args)
                        break;
                case MotionNotify:
                        XSync(display, False);
+                       if (ev.xmotion.x < 0)
+                               ev.xmotion.x = 0;
+                       if (ev.xmotion.y < 0)
+                               ev.xmotion.y = 0;
                        win->g.w = ev.xmotion.x;
                        win->g.h = ev.xmotion.y;
                        resize_window(win);