X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fitem%2Flistbox.qc;h=021bc95ce9cda1e9e9994fa90c1561a2aae35b72;hb=8411e8405dcb67853bc15a238932becc1aee66a9;hp=97f08c98113e520e6d55457356befca52319f28b;hpb=0d4410adb034af1a9989862211e49e442fa9b9dd;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/item/listbox.qc b/qcsrc/menu/item/listbox.qc index 97f08c981..021bc95ce 100644 --- a/qcsrc/menu/item/listbox.qc +++ b/qcsrc/menu/item/listbox.qc @@ -202,8 +202,9 @@ } 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; @@ -241,8 +242,9 @@ // 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; } @@ -268,15 +270,18 @@ 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; @@ -331,7 +336,7 @@ } } 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) { @@ -348,7 +353,7 @@ 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;