I've updated my vertical volume bar script so that the tooltip showing the volume will update while the mouse-wheel is being scrolled on the bar. Code below
// ==PREPROCESSOR==
// @name "Volume-bar with tooltip"
// @author "rawny"
// ==/PREPROCESSOR==
// Based somewhat on:
// -> "Volbar with GdiDrawText" by T.P Wang
// -> "Simple Seekbar" by marc2003
var a = 25;
var g_drag = 0;
var g_drag_seek = 0;
var g_tooltip = window.CreateTooltip();
var g_trackingMouse = false;
var old_x;
var old_y;
function RGB(r, g, b) {
return (0xff000000 | (r << 16) | (g << 8) | (b));
}
function RGBA(r, g, b, a) {
return ((a << 24) | (r << 16) | (g << 8) | (b));
}
function on_size() {
ww = window.Width;
wh = window.Height;
}
function on_paint(gr){
var ww = window.Width;
var wh = window.Height;
var pos = 0;
var volume = fb.Volume;
if(g_drag){
pos = wh * g_drag_seek;
}else{
pos = wh * Math.exp(fb.Volume/a);
}
gr.FillGradRect(0, wh-pos, ww, wh, 90, RGB(0,0,255), RGB(70,90,200));
gr.FillGradRect(0, 0, ww, wh-pos, 90, RGB(0,0,0), RGB(50,50,50));
gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(100,100,100));
}
function on_mouse_move(x,y){
// Set the cursor to the hand symbol:
window.SetCursor(32649);
g_drag_seek = 1-y/wh;
g_drag_seek = (g_drag_seek<Math.exp(-100/a)) ? Math.exp(-100/a) : (g_drag_seek<1) ? g_drag_seek : 1;
if(x > ww){
g_drag = 0;
}
if(g_drag){
window.Repaint();
}
if(!g_trackingMouse){
g_tooltip.Activate();
g_tooltip.TrackActivate = true;
g_trackingMouse = true;
}
if(x != old_x || y != old_y){
txt = Math.ceil(a*Math.log(g_drag_seek))+"dB ("+Math.ceil(g_drag_seek*100)+"%)";
g_tooltip.Text = txt;
g_tooltip.TrackPosition(x+10,y-10);
old_x = x;
old_y = y;
}
}
function on_mouse_leave(){
g_trackingMouse = false;
g_tooltip.TrackActivate = false;
}
function on_mouse_lbtn_down(x,y){
g_drag = 1;
}
function on_mouse_lbtn_up(x,y){
if(!g_drag){
return;
}
g_drag = 0;
var v = 1-y/wh;
v = (v<Math.exp(-100/a)) ? Math.exp(-100/a) : (v<1) ? v : 1;
fb.Volume = a*Math.log(v);
}
function on_mouse_wheel(delta){
if(delta>0){
fb.VolumeUp();
}else{
fb.VolumeDown();
}
g_tooltip.Text = Math.ceil(fb.Volume)+"db ("+Math.ceil((Math.exp(fb.Volume/a))*100)+"%)";
var ttY = wh-(wh * Math.exp(fb.Volume/a));
g_tooltip.TrackPosition(10, ttY-8);
}
function on_volume_change(val){
window.Repaint();
}