tImplementing xzoomreset. - st - [fork] customized build of st, the simple term… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit dc8c5c82aa14e75305bd5b0e42b4f8bba45702a8 | |
parent c7a945c4086ab913cd8a05997bfbc1906645eff4 | |
Author: Christoph Lohmann <[email protected]> | |
Date: Mon, 29 Sep 2014 15:38:21 +0200 | |
Implementing xzoomreset. | |
Thanks [email protected] for proposing this. | |
Diffstat: | |
M config.def.h | 1 + | |
M st.c | 25 ++++++++++++++++++++++++- | |
2 files changed, 25 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -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} }, | |
diff --git a/st.c b/st.c | |
t@@ -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 *); | |
t@@ -503,6 +505,7 @@ static int oldbutton = 3; /* button event on startup: 3 = … | |
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}; | |
t@@ -2993,6 +2996,7 @@ xloadfonts(char *fontstr, double fontsize) { | |
FcPatternAddDouble(pattern, FC_PIXEL_SIZE, 12); | |
usedfontsize = 12; | |
} | |
+ defaultfontsize = usedfontsize; | |
} | |
FcConfigSubstitute(0, pattern, FcMatchPattern); | |
t@@ -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. */ | |
t@@ -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; |