]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
add hotkeys for better usability
authorBuddyFriendGuy <bfggeneral@gmail.com>
Thu, 9 Apr 2015 21:38:27 +0000 (17:38 -0400)
committerBuddyFriendGuy <bfggeneral@gmail.com>
Thu, 9 Apr 2015 21:38:27 +0000 (17:38 -0400)
qcsrc/menu/xonotic/dialog_multiplayer_create.qc
qcsrc/menu/xonotic/maplist.qc

index 2da8a416977530185cd919306521e7bd3fe2ef7b..23c10e588ad4bd4c0cfb634839f3ebf29b2e7b15 100644 (file)
@@ -160,7 +160,8 @@ void XonoticServerCreateTab_fill(entity me)
                me.TD(me, 1, 0.35, e = makeXonoticTextLabel(1, _("Filter:")));
                me.mapListBox.stringFilterBox = makeXonoticMapListStringFilterBox(me, 0, string_null);
                me.TD(me, 1, me.columns - me.firstColumn - 0.35, e = me.mapListBox.stringFilterBox);
-                       e.onChange = MapList_StringFilter_Change;
+                       e.onChange = MapList_StringFilterBox_Change;
+                       e.keyDown = MapList_StringFilterBox_keyDown;
                        e.onChangeEntity = me.mapListBox;
                        me.mapListBox.controlledTextbox = e;
 
index a01af92644f56677720ba8c21b846a6cc4036437..baeaf82e9a9e99773c6016f34f34b2b1990f9cb7 100644 (file)
@@ -47,7 +47,8 @@ CLASS(XonoticMapList) EXTENDS(XonoticListBox)
 ENDCLASS(XonoticMapList)
 entity makeXonoticMapList();
 entity makeXonoticMapListStringFilterBox(entity me, float doEditColorCodes, string theCvar);
-void MapList_StringFilter_Change(entity box, entity me);
+void MapList_StringFilterBox_Change(entity box, entity me);
+float MapList_StringFilterBox_keyDown(entity me, float key, float ascii, float shift);
 void MapList_Add_Shown(entity btn, entity me);
 void MapList_Remove_Shown(entity btn, entity me);
 void MapList_Clear_All(entity btn, entity me);
@@ -62,8 +63,7 @@ void XonoticMapList_destroy(entity me)
 
 entity makeXonoticMapListStringFilterBox(entity me, float doEditColorCodes, string theCvar)
 {
-       me.mapListBox.stringFilterBox = makeXonoticInputBox(doEditColorCodes, theCvar);
-       return me.mapListBox.stringFilterBox;
+       return makeXonoticInputBox(doEditColorCodes, theCvar);
 }
 entity makeXonoticMapList()
 {
@@ -257,7 +257,7 @@ void XonoticMapList_refilterCallback(entity me, entity cb)
        me.refilter(me);
 }
 
-void MapList_StringFilter_Change(entity box, entity me)
+void MapList_StringFilterBox_Change(entity box, entity me)
 {
        if(me.stringFilter)
                strunzone(me.stringFilter);
@@ -406,8 +406,34 @@ float XonoticMapList_keyDown(entity me, float scan, float ascii, float shift)
        {
                me.parent.setFocus(me.parent, me.stringFilterBox);
        }
+       else if(shift & S_CTRL && scan == 'u') // ctrl-u (remove stringFilter line
+       {
+               me.stringFilterBox.setText(me.stringFilterBox, "");
+               MapList_StringFilterBox_Change(me.stringFilterBox, me);
+       }
        else
                return SUPER(XonoticMapList).keyDown(me, scan, ascii, shift);
        return 1;
 }
+
+float MapList_StringFilterBox_keyDown(entity me, float scan, float ascii, float shift)
+{
+       // in this section, note that onChangeEntity has the ref to mapListBox
+       // we make use of that, instead of extending a class to add one more attrib
+       switch(scan)
+       {
+               case K_KP_ENTER:
+               case K_ENTER:
+                       // move the focus to the mapListBox
+                       me.onChangeEntity.parent.setFocus(me.onChangeEntity.parent, me.onChangeEntity);
+                       return 1;
+               case K_KP_UPARROW:
+               case K_UPARROW:
+               case K_KP_DOWNARROW:
+               case K_DOWNARROW:
+                       // pass the event to the mapListBox (to scroll up and down)
+                       return me.onChangeEntity.keyDown(me.onChangeEntity, scan, ascii, shift);
+       }
+       return SUPER(XonoticInputBox).keyDown(me, scan, ascii, shift);
+}
 #endif