diff options
Diffstat (limited to 'app/bin/chotbar.c')
| -rw-r--r-- | app/bin/chotbar.c | 47 | 
1 files changed, 27 insertions, 20 deletions
| diff --git a/app/bin/chotbar.c b/app/bin/chotbar.c index f138cbb..188ad27 100644 --- a/app/bin/chotbar.c +++ b/app/bin/chotbar.c @@ -21,10 +21,13 @@   */  #include <ctype.h> -#include "track.h" -#include "compound.h" -  #include <stdint.h> +#include <string.h> + +#include "compound.h" +#include "fileio.h" +#include "messages.h" +#include "track.h"  EXPORT DIST_T curBarScale = -1;  EXPORT long hotBarLabels = 0; @@ -73,7 +76,7 @@ static void HotBarHighlight( int inx )  {  	wPos_t x0;  	if ( inx >= hotBarCurrStart && inx < hotBarCurrEnd ) { -		x0 = (wPos_t)((hotBarMap(inx).x-hotBarMap((int)hotBarCurrStart).x)*hotBarD.dpi+2); +		x0 = (wPos_t)((hotBarMap(inx).x-hotBarMap((int)hotBarCurrStart).x)*hotBarD.dpi);  		wDrawFilledRectangle( hotBarD.d, x0, 0, (wPos_t)(hotBarMap(inx).w*hotBarD.dpi-2), hotBarHeight, wDrawColorBlack, wDrawOptTemp );  	}  } @@ -101,30 +104,32 @@ static void RedrawHotBar( wDraw_p dd, void * data, wPos_t w, wPos_t h  )  	}  	if ( hotBarLabels && !hotBarFp )  		hotBarFp = wStandardFont( F_HELV, FALSE, FALSE ); +	wPos_t textSize = wMessageGetHeight(0L);  	for ( inx=hotBarCurrStart; inx < hotBarMap_da.cnt; inx++ ) {  		tbm = &hotBarMap(inx);  		barScale = tbm->barScale; -		x = tbm->x - hotBarMap(hotBarCurrStart).x + 2.0/hotBarD.dpi; +		x = tbm->x - hotBarMap(hotBarCurrStart).x;  		if ( x + tbm->w > barWidth ) {  			break;  		}  		orig.y = hh/2.0*barScale - tbm->size.y/2.0 - tbm->orig.y;  		if ( hotBarLabels ) { -			orig.y += 8/hotBarD.dpi*barScale; +			orig.y += textSize/hotBarD.dpi*barScale;  			if ( tbm->labelW > tbm->objectW ) {  				x += (tbm->labelW-tbm->objectW)/2;  			}  		}  		x *= barScale; -		orig.x = x - tbm->orig.x; +		orig.x = x;  		hotBarD.scale = barScale;  		hotBarD.size.x = barWidth*barScale;  		hotBarD.size.y = barHeight*barScale;  		tbm->proc( HB_DRAW, tbm->context, &hotBarD, &orig );  		if ( hotBarLabels ) { -			orig.x = x - (tbm->labelW-tbm->objectW)/2*barScale; -			orig.y = 2*barScale/hotBarD.dpi; -			DrawString( &hotBarD, orig, 0.0, tbm->proc( HB_BARTITLE, tbm->context, NULL, NULL ), hotBarFp, hotBarFs*barScale, drawColorBlack ); +			hotBarD.scale = 1.0; +			orig.x = tbm->x - hotBarMap(hotBarCurrStart).x; +			orig.y = 2.0/hotBarD.dpi;	            //Draw Label under icon +			DrawString( &hotBarD, orig, 0.0, tbm->proc( HB_BARTITLE, tbm->context, NULL, NULL ), hotBarFp, hotBarFs, drawColorBlack );  		}  	}  	hotBarCurrEnd = inx; @@ -220,7 +225,8 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wPos_t w,  	}  	x = w/hotBarD.dpi + hotBarMap(hotBarCurrStart).x;  	for ( inx=hotBarCurrStart; inx<hotBarCurrEnd; inx++ ) { -		if ( x < hotBarMap(inx).x + hotBarMap(inx).w ) { +		if ((x >= hotBarMap(inx).x) &&						//leave spaces between buttons +			(x <= hotBarMap(inx).x + hotBarMap(inx).w )) {  				break;  		}  	} @@ -231,7 +237,7 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wPos_t w,  	px += (wPos_t)(tbm->w*hotBarD.dpi/2);  	titleP = tbm->proc( HB_LISTTITLE, tbm->context, NULL, NULL );  	px -= wLabelWidth( titleP ) / 2; -	wControlSetBalloon( (wControl_p)hotBarD.d, px, -5, titleP ); +	wControlSetBalloon( (wControl_p)hotBarD.d, px, -20, titleP );  	switch (action & 0xff) {  	case wActionLDown:  		pos.x = mainD.size.x+mainD.orig.x; @@ -380,7 +386,7 @@ EXPORT void AddHotBarElement(  				tbm->w = tbm->labelW;  			}  		} -		hotBarWidth += tbm->w; +		hotBarWidth += tbm->w + 2/hotBarD.dpi;  } @@ -440,8 +446,9 @@ EXPORT void LayoutHotBar( void )  	wWinGetSize( mainW, &winWidth, &winHeight );  	hotBarHeight = hotBarDrawHeight; -	if ( hotBarLabels) -		hotBarHeight += 8; +	if ( hotBarLabels) { +	   hotBarHeight += wMessageGetHeight(0L); +	}  	if (hotBarLeftB == NULL) {  		wIcon_p bm_p;  		if (winWidth < 50) @@ -450,18 +457,18 @@ EXPORT void LayoutHotBar( void )  		hotBarLeftB = wButtonCreate( mainW, 0, 0, "hotBarLeft", (char*)bm_p, BO_ICON, 0, DoHotBarLeft, NULL );  		bm_p = wIconCreateBitMap( 16, 16, turnbarr_bits, wDrawColorBlack );  		hotBarRightB = wButtonCreate( mainW, 0, 0, "hotBarRight", (char*)bm_p, BO_ICON, 0, DoHotBarRight, NULL ); -		hotBarD.d = wDrawCreate( mainW, 0, 0, NULL, BD_NOCAPTURE, 100, hotBarHeight, NULL, RedrawHotBar, SelectHotBar ); +		hotBarD.d = wDrawCreate( mainW, 0, 0, NULL, BD_NOCAPTURE|BD_NOFOCUS, 100, hotBarHeight, NULL, RedrawHotBar, SelectHotBar );  		hotBarD.dpi = wDrawGetDPI( hotBarD.d );  		hotBarD.scale = 1.0;  		initialize = TRUE;  	}  	buttonWidth = wControlGetWidth((wControl_p)hotBarLeftB);  	wControlSetPos( (wControl_p)hotBarLeftB, 0, toolbarHeight ); -	wControlSetPos( (wControl_p)hotBarRightB, winWidth-buttonWidth, toolbarHeight ); +	wControlSetPos( (wControl_p)hotBarRightB, winWidth-20-buttonWidth, toolbarHeight );  	wControlSetPos( (wControl_p)hotBarD.d, buttonWidth, toolbarHeight ); -	wDrawSetSize( hotBarD.d, winWidth-buttonWidth*2, hotBarHeight+2 ); -	hotBarD.size.x = ((double)(winWidth-buttonWidth*2))/hotBarD.dpi*hotBarD.scale; -	hotBarD.size.y = (double)hotBarHeight/hotBarD.dpi*hotBarD.scale; +	wDrawSetSize( hotBarD.d, winWidth-20-buttonWidth*2, hotBarHeight+2 ); +	hotBarD.size.x = ((double)(winWidth-20-buttonWidth*2))/hotBarD.dpi*hotBarD.scale; +	hotBarD.size.y = (double)hotBarDrawHeight/hotBarD.dpi*hotBarD.scale;  //Exclude Label from calc  	wControlShow( (wControl_p)hotBarLeftB, TRUE );  	wControlShow( (wControl_p)hotBarRightB, TRUE );  	wControlShow( (wControl_p)hotBarD.d, TRUE ); | 
