~z-man/armagetronad/0.4-armagetronad-v2sty-unified

« back to all changes in this revision

Viewing changes to src/tron/gServerBrowser.cpp

  • Committer: Manuel Moos
  • Date: 2017-02-11 22:10:44 UTC
  • Revision ID: z-man@users.sf.net-20170211221044-3pln95rpzrk6kbza
Don't just handle SDL_KEYDOWN events in gServerFilterMenuItem::Event. Fixes server filter for SDL2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
167
167
    
168
168
    virtual void Render(REAL x,REAL y,REAL alpha=1, bool selected=0);
169
169
    virtual bool Event( SDL_Event& event );
170
 
    
171
 
    
172
 
private:
173
 
    tString prev_filter_string;
174
170
};
175
171
 
176
172
class gServerMenuItem: public gBrowserMenuItem
1092
1088
bool gServerFilterMenuItem::Event( SDL_Event& event )
1093
1089
{
1094
1090
#ifndef DEDICATED
1095
 
    if (event.type!=SDL_KEYDOWN)
1096
 
        return false;
1097
 
    
1098
 
    bool update = prev_filter_string != *content;
1099
 
    prev_filter_string = *content;
1100
 
    
1101
 
    switch (event.key.keysym.sym)
 
1091
    auto prev_filter_string = *content; // store current content for later comparison
 
1092
    bool update = false; // do we need to update the server list?
 
1093
    bool ret = false; // have we handled the event?
 
1094
 
 
1095
    if (event.type==SDL_KEYDOWN)
1102
1096
    {
1103
 
    case(SDLK_ESCAPE):
1104
 
        if(! content->empty())
 
1097
        switch (event.key.keysym.sym)
1105
1098
        {
1106
 
            *content = "";
1107
 
            
1108
 
            (static_cast<gServerMenu*>(menu))->Update();
1109
 
            return true;
1110
 
            
 
1099
        case(SDLK_ESCAPE):
 
1100
            // escape clears the filter
 
1101
            if(!content->empty())
 
1102
            {
 
1103
                *content = "";
 
1104
 
 
1105
                update = true;
 
1106
                ret = true;
 
1107
 
 
1108
                break;
 
1109
            }
 
1110
 
 
1111
            // fall through
 
1112
        default:
 
1113
            // let base handle it
 
1114
            ret = uMenuItemString::Event( event );
 
1115
 
1111
1116
            break;
1112
1117
        }
1113
 
        else    
1114
 
        {
1115
 
            return uMenuItemString::Event( event );
1116
 
        }
1117
 
 
1118
 
        break;
1119
 
    default:
1120
 
        break;
1121
 
    }
1122
 
        
 
1118
    }
 
1119
    else
 
1120
    {
 
1121
        // let base handle it
 
1122
        ret = uMenuItemString::Event( event );
 
1123
    }
 
1124
 
 
1125
    // update on change
 
1126
    if(prev_filter_string != *content)
 
1127
    {
 
1128
        update = true;
 
1129
    }
 
1130
 
1123
1131
    if(update)
1124
1132
    {
 
1133
        // update menu, filter has changed
1125
1134
        (static_cast<gServerMenu*>(menu))->Update();
1126
1135
    }
1127
 
    
 
1136
 
 
1137
    return ret;
 
1138
#else
 
1139
    return false;
1128
1140
#endif
1129
 
 
1130
 
    return uMenuItemString::Event( event );
1131
1141
}
1132
1142
 
1133
1143
gServerStartMenuItem::gServerStartMenuItem(gServerMenu *men)