if (me.pressed == 1)
{
hit = 1;
- if (pos.x < 1 - me.controlWidth - me.tolerance.y * me.controlWidth) hit = 0;
- if (pos.y < 0 - me.tolerance.x) hit = 0;
- if (pos.x >= 1 + me.tolerance.y * me.controlWidth) hit = 0;
- if (pos.y >= 1 + me.tolerance.x) hit = 0;
+ if (pos.x < 1 - me.controlWidth - me.tolerance.x * me.controlWidth) hit = 0;
+ if (pos.y < 0 - me.tolerance.y) hit = 0;
+ if (pos.x >= 1 + me.tolerance.x * me.controlWidth) hit = 0;
+ if (pos.y >= 1 + me.tolerance.y) hit = 0;
if (hit)
{
// calculate new pos to v
}
else if (me.pressed == 2)
{
- me.setSelected(me, me.getItemAtPos(me, me.scrollPos + pos.y));
- me.setFocusedItem(me, me.selectedItem);
+ int clickeditem = me.getItemAtPos(me, me.scrollPos + pos.y);
+ me.setSelected(me, clickeditem);
+ me.setFocusedItem(me, clickeditem);
me.mouseMoveOffset = -1;
}
return 1;
// continue doing that while dragging (even when dragging outside). When releasing, forward the click to the then selected item.
this.pressed = 2;
// an item has been clicked. Select it, ...
- this.setSelected(this, this.getItemAtPos(this, this.scrollPos + pos.y));
- this.setFocusedItem(this, this.selectedItem);
+ int clickeditem = this.getItemAtPos(this, this.scrollPos + pos.y);
+ this.setSelected(this, clickeditem);
+ this.setFocusedItem(this, clickeditem);
}
return true;
}
me.pressed = 3; // do that here, so setSelected can know the mouse has been released
// item dragging mode
// select current one one last time...
- me.setSelected(me, me.getItemAtPos(me, me.scrollPos + pos.y));
- me.setFocusedItem(me, me.selectedItem);
+ int clickeditem = me.getItemAtPos(me, me.scrollPos + pos.y);
+ me.setSelected(me, clickeditem);
+ me.setFocusedItem(me, clickeditem);
// and give it a nice click event
if (me.nItems > 0)
{
vector where = globalToBox(pos, eY * (me.getItemStart(me, me.selectedItem) - me.scrollPos), eX * (1 - me.controlWidth) + eY * me.getItemHeight(me, me.selectedItem));
- if ((me.selectedItem == me.lastClickedItem) && (time < me.lastClickedTime + 0.3)) me.doubleClickListBoxItem(me, me.selectedItem, where);
- else me.clickListBoxItem(me, me.selectedItem, where);
+ if ((me.selectedItem == me.lastClickedItem && clickeditem == me.selectedItem) && (time < me.lastClickedTime + 0.3))
+ me.doubleClickListBoxItem(me, me.selectedItem, where);
+ else
+ me.clickListBoxItem(me, me.selectedItem, where);
me.lastClickedItem = me.selectedItem;
me.lastClickedTime = time;
}
}
AUTOCVAR(menu_scroll_averaging_time, float, 0.16, "smooth scroll averaging time");
-// scroll faster while dragging the scrollbar
+ // scroll faster while dragging the scrollbar
AUTOCVAR(menu_scroll_averaging_time_pressed, float, 0.06, "smooth scroll averaging time when dragging the scrollbar");
void ListBox_draw(entity me)
{
if (me.scrollPos != me.scrollPosTarget)
{
float averaging_time = (me.pressed == 1)
- ? autocvar_menu_scroll_averaging_time_pressed
+ ? autocvar_menu_scroll_averaging_time_pressed
: autocvar_menu_scroll_averaging_time;
// this formula works with whatever framerate
float f = averaging_time ? exp(-frametime / averaging_time) : 0;