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; |