diff options
author | Christoph Lohmann <20h@r-36.net> | 2014-09-29 15:38:21 +0200 |
---|---|---|
committer | Christoph Lohmann <20h@r-36.net> | 2014-09-29 15:38:21 +0200 |
commit | dc8c5c82aa14e75305bd5b0e42b4f8bba45702a8 (patch) | |
tree | 1a9646f18265125a2cc0e3b82d6f34f3a578676f | |
parent | c7a945c4086ab913cd8a05997bfbc1906645eff4 (diff) | |
download | st-dc8c5c82aa14e75305bd5b0e42b4f8bba45702a8.tar.gz |
Implementing xzoomreset.
Thanks mvdan@mvdan.cc for proposing this.
-rw-r--r-- | config.def.h | 1 | ||||
-rw-r--r-- | st.c | 25 |
2 files changed, 25 insertions, 1 deletions
diff --git a/config.def.h b/config.def.h index cc16f97..0a3c3e0 100644 --- a/config.def.h +++ b/config.def.h @@ -116,6 +116,7 @@ static Shortcut shortcuts[] = { { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, { MODKEY|ShiftMask, XK_Prior, xzoom, {.i = +1} }, { MODKEY|ShiftMask, XK_Next, xzoom, {.i = -1} }, + { MODKEY|ShiftMask, XK_Home, xzoomreset, {.i = 0} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { MODKEY|ShiftMask, XK_Insert, clippaste, {.i = 0} }, { MODKEY, XK_Num_Lock, numlock, {.i = 0} }, @@ -317,6 +317,8 @@ static void clippaste(const Arg *); static void numlock(const Arg *); static void selpaste(const Arg *); static void xzoom(const Arg *); +static void xzoomabs(const Arg *); +static void xzoomreset(const Arg *); static void printsel(const Arg *); static void printscreen(const Arg *) ; static void toggleprinter(const Arg *); @@ -503,6 +505,7 @@ static int oldbutton = 3; /* button event on startup: 3 = release */ static char *usedfont = NULL; static double usedfontsize = 0; +static double defaultfontsize = 0; static uchar utfbyte[UTF_SIZ + 1] = {0x80, 0, 0xC0, 0xE0, 0xF0}; static uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8}; @@ -2993,6 +2996,7 @@ xloadfonts(char *fontstr, double fontsize) { FcPatternAddDouble(pattern, FC_PIXEL_SIZE, 12); usedfontsize = 12; } + defaultfontsize = usedfontsize; } FcConfigSubstitute(0, pattern, FcMatchPattern); @@ -3005,6 +3009,8 @@ xloadfonts(char *fontstr, double fontsize) { FcPatternGetDouble(dc.font.match->pattern, FC_PIXEL_SIZE, 0, &fontval); usedfontsize = fontval; + if(fontsize == 0) + defaultfontsize = fontval; } /* Setting character width and height. */ @@ -3058,16 +3064,33 @@ xunloadfonts(void) { xunloadfont(&dc.ibfont); } + void xzoom(const Arg *arg) { + Arg larg; + larg.i = usedfontsize + arg->i; + xzoomabs(&larg); +} + +void +xzoomabs(const Arg *arg) { xunloadfonts(); - xloadfonts(usedfont, usedfontsize + arg->i); + xloadfonts(usedfont, arg->i); cresize(0, 0); redraw(0); xhints(); } void +xzoomreset(const Arg *arg) { + Arg larg; + if(defaultfontsize > 0) { + larg.i = defaultfontsize; + xzoomabs(&larg); + } +} + +void xinit(void) { XGCValues gcvalues; Cursor cursor; |