From 68223059055be45801ae077d2ccc1b89e427946e Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Sun, 14 Mar 2021 11:40:42 -0400 Subject: [PATCH] More accurate rendering of scroll bars. Issue #16 --- mlvwm/borders.c | 15 +++++++++------ mlvwm/borders.h | 2 +- mlvwm/event.c | 8 ++++---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/mlvwm/borders.c b/mlvwm/borders.c index 93f37f3..bf11f09 100644 --- a/mlvwm/borders.c +++ b/mlvwm/borders.c @@ -535,7 +535,7 @@ void SetTitleBar( MlvwmWindow *t, Bool on_off ) } } -void DrawArrow( Window w, int direction, GC color ) +void DrawArrow( Window w, int direction, GC fill, GC outline ) { XPoint arrow_p[] = { {7,3},{2,8},{5,8},{5,12},{9,12},{9,8},{12,8},{7,3}, {0,0}}, @@ -564,8 +564,8 @@ void DrawArrow( Window w, int direction, GC color ) if( direction==C_SBAR_DOWN ) for( lp=0; lpflags&SCROLL && size<0 ) + if( t->flags&SCROLL && size<0 ) { DrawShadowBox( 0, 0, SBAR_WH, SBAR_WH, win, 1, Scr.WhiteGC, Scr.Gray2GC, SHADOW_ALL ); - - DrawArrow( win, context, Scr.Gray3GC ); + DrawArrow( win, context, Scr.Gray3GC, Scr.BlackGC); + } + else{ + DrawArrow( win, context, Scr.Gray4GC, Scr.Gray2GC); + } } else{ mask = GCForeground; diff --git a/mlvwm/borders.h b/mlvwm/borders.h index 23d15cf..00be828 100644 --- a/mlvwm/borders.h +++ b/mlvwm/borders.h @@ -17,7 +17,7 @@ extern void SetShape( MlvwmWindow *, int ); extern void SetUpFrame( MlvwmWindow *, int, int, int, int, Bool ); extern void SetTitleBar( MlvwmWindow *, Bool ); -extern void DrawArrow( Window, int, GC ); +extern void DrawArrow( Window, int, GC, GC ); extern void DrawSbarAnk( MlvwmWindow *, int, Bool ); extern void DrawSbarArrow( MlvwmWindow *, int, Bool ); extern void DrawSbarBar( MlvwmWindow *, int, Bool ); diff --git a/mlvwm/event.c b/mlvwm/event.c index 360937b..522ce36 100644 --- a/mlvwm/event.c +++ b/mlvwm/event.c @@ -1248,7 +1248,7 @@ void PressSbar( Bool isHbar, Window pressedwin, MlvwmWindow *tmp_win ) anker = tmp_win->scroll_v[3]; } if( pushd!=0 ){ - DrawArrow( pressedwin, direction, Scr.BlackGC ); + DrawArrow( pressedwin, direction, Scr.BlackGC, Scr.BlackGC ); XSync( dpy, 0 ); } @@ -1290,14 +1290,14 @@ void PressSbar( Bool isHbar, Window pressedwin, MlvwmWindow *tmp_win ) case EnterNotify: if( ev.xcrossing.window==pressedwin ){ if( !isSelect ) - DrawArrow( pressedwin, direction, Scr.BlackGC ); + DrawArrow( pressedwin, direction, Scr.BlackGC, Scr.BlackGC ); isSelect = True; } break; case LeaveNotify: if( ev.xcrossing.window==pressedwin ){ if( isSelect ) - DrawArrow( pressedwin, direction, Scr.Gray3GC ); + DrawArrow( pressedwin, direction, Scr.Gray3GC, Scr.BlackGC ); isSelect = False; } break; @@ -1330,7 +1330,7 @@ void PressSbar( Bool isHbar, Window pressedwin, MlvwmWindow *tmp_win ) while( !isEnd ); if( pushd!=0 ) - DrawArrow( pressedwin, direction, Scr.Gray3GC ); + DrawArrow( pressedwin, direction, Scr.Gray3GC, Scr.BlackGC ); XSync( dpy, 0 ); }