Ticket #5055: repeatkeyhack.diff

File repeatkeyhack.diff, 1.5 KB (added by bb, 6 years ago)

hack as discribed above for massbarter

  • binaries/data/mods/public/gui/session/hotkeys/misc.xml

     
    9393    </object>
    9494
    9595    <object hotkey="session.massbarter">
    96         <action on="Press">
     96        <action on="Firstpress">
    9797            updateSelectionDetails();
    9898            updateBarterButtons();
    9999        </action>
  • source/gui/CGUI.cpp

     
    6464const double SELECT_DBLCLICK_RATE = 0.5;
    6565const u32 MAX_OBJECT_DEPTH = 100; // Max number of nesting for GUI includes. Used to detect recursive inclusion
    6666
     67std::vector<CStr> PRESSED_HOTKEYS;
     68
    6769InReaction CGUI::HandleEvent(const SDL_Event_* ev)
    6870{
    6971    InReaction ret = IN_PASS;
     
    8284                ret = IN_HANDLED;
    8385
    8486                if (ev->ev.type == SDL_HOTKEYDOWN)
     87                {
     88                    if (std::find(PRESSED_HOTKEYS.begin(), PRESSED_HOTKEYS.end(), hotkey) == PRESSED_HOTKEYS.end())
     89                    {
     90                        PRESSED_HOTKEYS.push_back(hotkey);
     91                        obj->SendEvent(GUIM_PRESSED, "firstpress");
     92                    }
     93
    8594                    obj->SendEvent(GUIM_PRESSED, "press");
     95                }
    8696                else
     97                {
     98                    PRESSED_HOTKEYS.erase(std::remove(PRESSED_HOTKEYS.begin(), PRESSED_HOTKEYS.end(), hotkey), PRESSED_HOTKEYS.end());
    8799                    obj->SendEvent(GUIM_RELEASED, "release");
     100                }
    88101            }
    89102    }
    90103