--- rxvt-unicode/src/scrollbar.h 2008/01/28 10:54:54 1.12 +++ rxvt-unicode/src/scrollbar.h 2008/02/17 12:11:36 1.16 @@ -10,7 +10,44 @@ #define R_SB_PLAIN 4 #define R_SB_RXVT 8 +#define R_SB_ALIGN_CENTRE 0 +#define R_SB_ALIGN_TOP 1 +#define R_SB_ALIGN_BOTTOM 2 + +#define SB_WIDTH_NEXT 19 +#define SB_WIDTH_XTERM 15 +#define SB_WIDTH_PLAIN 7 +#ifndef SB_WIDTH_RXVT +# define SB_WIDTH_RXVT 10 +#endif + +/* + * NeXT scrollbar defines + */ +#define SB_PADDING 1 +#define SB_BORDER_WIDTH 1 +#define SB_BEVEL_WIDTH_UPPER_LEFT 1 +#define SB_BEVEL_WIDTH_LOWER_RIGHT 2 +#define SB_LEFT_PADDING (SB_PADDING + SB_BORDER_WIDTH) +#define SB_MARGIN_SPACE (SB_PADDING * 2) +#define SB_BUTTON_WIDTH (SB_WIDTH_NEXT - SB_MARGIN_SPACE - SB_BORDER_WIDTH) +#define SB_BUTTON_HEIGHT (SB_BUTTON_WIDTH) +#define SB_BUTTON_SINGLE_HEIGHT (SB_BUTTON_HEIGHT + SB_PADDING) +#define SB_BUTTON_BOTH_HEIGHT (SB_BUTTON_SINGLE_HEIGHT * 2) +#define SB_BUTTON_TOTAL_HEIGHT (SB_BUTTON_BOTH_HEIGHT + SB_PADDING) +#define SB_BUTTON_BEVEL_X (SB_LEFT_PADDING) +#define SB_BUTTON_FACE_X (SB_BUTTON_BEVEL_X + SB_BEVEL_WIDTH_UPPER_LEFT) +#define SB_THUMB_MIN_HEIGHT (SB_BUTTON_WIDTH - (SB_PADDING * 2)) + +enum sb_state { + STATE_IDLE = 1, + STATE_MOTION, + STATE_UP, + STATE_DOWN, +}; + struct scrollBar_t { + rxvt_term *term; char state; /* scrollbar state */ char init; /* scrollbar has been initialised */ unsigned int beg; /* slider sub-window begin height */ @@ -28,11 +65,7 @@ Window win; Cursor leftptr_cursor; int (rxvt_term::*update)(int, int, int, int); - - void setIdle() { state = 1 ; } - void setMotion() { state = 'm'; } - void setUp() { state = 'U'; } - void setDn() { state = 'D'; } + void setup (rxvt_term *); bool upButton (int y) { @@ -50,14 +83,12 @@ return y > end; return false; } + unsigned total_width () + { + return width + shadow * 2; + } }; -#define scrollbar_TotalWidth() (scrollBar.width + scrollBar.shadow * 2) -#define scrollbar_isMotion() (scrollBar.state == 'm') -#define scrollbar_isUp() (scrollBar.state == 'U') -#define scrollbar_isDn() (scrollBar.state == 'D') -#define scrollbar_isUpDn() (scrollbar_isUp () || scrollbar_isDn ()) - #define SCROLLNEXT_MINHEIGHT SB_THUMB_MIN_HEIGHT #define SCROLLRXVT_MINHEIGHT 10 @@ -70,34 +101,6 @@ #define scrollbar_size() (scrollBar.end - scrollBar.beg \ - scrollbar_minheight ()) -#define R_SB_ALIGN_CENTRE 0 -#define R_SB_ALIGN_TOP 1 -#define R_SB_ALIGN_BOTTOM 2 - -#define SB_WIDTH_NEXT 19 -#define SB_WIDTH_XTERM 15 -#define SB_WIDTH_PLAIN 7 -#ifndef SB_WIDTH_RXVT -# define SB_WIDTH_RXVT 10 -#endif - -/* - * NeXT scrollbar defines - */ -#define SB_PADDING 1 -#define SB_BORDER_WIDTH 1 -#define SB_BEVEL_WIDTH_UPPER_LEFT 1 -#define SB_BEVEL_WIDTH_LOWER_RIGHT 2 -#define SB_LEFT_PADDING (SB_PADDING + SB_BORDER_WIDTH) -#define SB_MARGIN_SPACE (SB_PADDING * 2) -#define SB_BUTTON_WIDTH (SB_WIDTH_NEXT - SB_MARGIN_SPACE - SB_BORDER_WIDTH) -#define SB_BUTTON_HEIGHT (SB_BUTTON_WIDTH) -#define SB_BUTTON_SINGLE_HEIGHT (SB_BUTTON_HEIGHT + SB_PADDING) -#define SB_BUTTON_BOTH_HEIGHT (SB_BUTTON_SINGLE_HEIGHT * 2) -#define SB_BUTTON_TOTAL_HEIGHT (SB_BUTTON_BOTH_HEIGHT + SB_PADDING) -#define SB_BUTTON_BEVEL_X (SB_LEFT_PADDING) -#define SB_BUTTON_FACE_X (SB_BUTTON_BEVEL_X + SB_BEVEL_WIDTH_UPPER_LEFT) -#define SB_THUMB_MIN_HEIGHT (SB_BUTTON_WIDTH - (SB_PADDING * 2)) /* * +-------------+ * | | <---< SB_PADDING