diff options
| author | Bert <ber.t@gmx.com> | 2011-02-17 17:28:13 +0100 | 
|---|---|---|
| committer | Bert <ber.t@gmx.com> | 2011-02-17 17:28:13 +0100 | 
| commit | 6adbb3831d889b7a0fa3b69e40843d8b70beaf55 (patch) | |
| tree | cabceb1b50489cf92e2f550a9a2025430d0bd08a | |
| parent | f08c24bbb31ae0e3f7001d5d4d0e8f31b0c817f8 (diff) | |
Use Button1 to open thumbnail
| -rw-r--r-- | main.c | 97 | ||||
| -rw-r--r-- | thumbs.c | 16 | ||||
| -rw-r--r-- | thumbs.h | 2 | 
3 files changed, 74 insertions, 41 deletions
| @@ -268,11 +268,11 @@ void redraw() {  }  void on_keypress(XKeyEvent *kev) { -	int sel, x, y; +	int x, y;  	unsigned int w, h;  	char key;  	KeySym ksym; -	int changed; +	int changed, sel;  	if (!kev)  		return; @@ -439,7 +439,7 @@ void on_keypress(XKeyEvent *kev) {  }  void on_buttonpress(XButtonEvent *bev) { -	int changed; +	int changed, sel;  	unsigned int mask;  	if (!bev) @@ -448,46 +448,61 @@ void on_buttonpress(XButtonEvent *bev) {  	mask = CLEANMASK(bev->state);  	changed = 0; -	switch (bev->button) { -		case Button1: -			if (fileidx + 1 < filecnt) { -				++fileidx; -				changed = load_image(); -			} -			break; -		case Button2: -			mox = bev->x; -			moy = bev->y; -			win_set_cursor(&win, CURSOR_HAND); -			break; -		case Button3: -			if (fileidx > 0) { -				--fileidx; -				changed = load_image(); -			} -			break; -		case Button4: -			if (mask == ControlMask) -				changed = img_zoom_in(&img); -			else if (mask == ShiftMask) +	if (mode == MODE_NORMAL) { +		switch (bev->button) { +			case Button1: +				if (fileidx + 1 < filecnt) { +					++fileidx; +					changed = load_image(); +				} +				break; +			case Button2: +				mox = bev->x; +				moy = bev->y; +				win_set_cursor(&win, CURSOR_HAND); +				break; +			case Button3: +				if (fileidx > 0) { +					--fileidx; +					changed = load_image(); +				} +				break; +			case Button4: +				if (mask == ControlMask) +					changed = img_zoom_in(&img); +				else if (mask == ShiftMask) +					changed = img_pan(&img, &win, PAN_LEFT); +				else +					changed = img_pan(&img, &win, PAN_UP); +				break; +			case Button5: +				if (mask == ControlMask) +					changed = img_zoom_out(&img); +				else if (mask == ShiftMask) +					changed = img_pan(&img, &win, PAN_RIGHT); +				else +					changed = img_pan(&img, &win, PAN_DOWN); +				break; +			case 6:  				changed = img_pan(&img, &win, PAN_LEFT); -			else -				changed = img_pan(&img, &win, PAN_UP); -			break; -		case Button5: -			if (mask == ControlMask) -				changed = img_zoom_out(&img); -			else if (mask == ShiftMask) +				break; +			case 7:  				changed = img_pan(&img, &win, PAN_RIGHT); -			else -				changed = img_pan(&img, &win, PAN_DOWN); -			break; -		case 6: -			changed = img_pan(&img, &win, PAN_LEFT); -			break; -		case 7: -			changed = img_pan(&img, &win, PAN_RIGHT); -			break; +				break; +		} +	} else { +		/* thumbnail mode */ +		switch (bev->button) { +			case Button1: +				if ((sel = tns_translate(&tns, bev->x, bev->y)) >= 0) { +					fileidx = sel; +					load_image(); +					mode = MODE_NORMAL; +					changed = 1; +					break; +				} +				break; +		}  	}  	if (changed) @@ -170,3 +170,19 @@ void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) {  			break;  	}  } + +int tns_translate(tns_t *tns, int x, int y) { +	int n; +	thumb_t *t; + +	if (!tns || x < 5 || y < 5) +		return -1; + +	if ((n = y / thumb_dim * tns-> cols + x / thumb_dim) < tns->cnt) { +		t = &tns->thumbs[n]; +		if (x > t->x && x < t->x + t->w && y > t->y && y < t->y + t->h) +			return n; +	} + +	return -1; +} @@ -57,4 +57,6 @@ void tns_highlight(tns_t*, win_t*, int);  void tns_move_selection(tns_t*, win_t*, movedir_t); +int tns_translate(tns_t*, int, int); +  #endif /* THUMBS_H */ | 
