mirror of
https://github.com/glest/glest-source.git
synced 2025-02-25 04:02:30 +01:00
ensure language toggle only happens outside of a render event
This commit is contained in:
parent
9848a6c529
commit
0b6dbdf411
@ -657,7 +657,10 @@ MainWindow::MainWindow(Program *program) : WindowGl() {
|
||||
this->program= program;
|
||||
this->popupMenu.setEnabled(false);
|
||||
this->popupMenu.setVisible(false);
|
||||
this->triggerLanguageToggle = false;
|
||||
this->triggerLanguage = "";
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow(){
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
delete program;
|
||||
@ -686,7 +689,9 @@ void MainWindow::eventMouseDown(int x, int y, MouseButton mouseButton){
|
||||
|
||||
// Exit game
|
||||
if(result.first != cancelLanguageSelection) {
|
||||
toggleLanguage(result.second);
|
||||
//toggleLanguage(result.second);
|
||||
this->triggerLanguageToggle = true;
|
||||
this->triggerLanguage = result.second;
|
||||
}
|
||||
|
||||
return;
|
||||
@ -883,6 +888,8 @@ void MainWindow::showLanguages() {
|
||||
void MainWindow::toggleLanguage(string language) {
|
||||
popupMenu.setEnabled(false);
|
||||
popupMenu.setVisible(false);
|
||||
this->triggerLanguageToggle = false;
|
||||
this->triggerLanguage = "";
|
||||
|
||||
Lang &lang= Lang::getInstance();
|
||||
string currentLanguage = lang.getLanguage();
|
||||
@ -983,7 +990,9 @@ void MainWindow::eventKeyDown(SDL_KeyboardEvent key) {
|
||||
else if(keystate.mod & (KMOD_LCTRL | KMOD_RCTRL) &&
|
||||
isKeyPressed(configKeys.getSDLKey("SwitchLanguage"),key) == true) {
|
||||
if(keystate.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) {
|
||||
toggleLanguage("");
|
||||
//toggleLanguage("");
|
||||
this->triggerLanguageToggle = true;
|
||||
this->triggerLanguage = "";
|
||||
}
|
||||
else {
|
||||
showLanguages();
|
||||
|
@ -34,9 +34,10 @@ private:
|
||||
Program* program;
|
||||
PopupMenu popupMenu;
|
||||
int cancelLanguageSelection;
|
||||
bool triggerLanguageToggle;
|
||||
string triggerLanguage;
|
||||
|
||||
void showLanguages();
|
||||
void toggleLanguage(string language);
|
||||
|
||||
public:
|
||||
MainWindow(Program *program);
|
||||
@ -57,6 +58,10 @@ public:
|
||||
virtual void eventClose();
|
||||
|
||||
virtual void render();
|
||||
void toggleLanguage(string language);
|
||||
bool getTriggerLanguageToggle() const { return triggerLanguageToggle; }
|
||||
string getTriggerLanguage() const { return triggerLanguage; }
|
||||
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
|
@ -310,6 +310,17 @@ void Program::loop() {
|
||||
void Program::loopWorker() {
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled) SystemFlags::OutputDebug(SystemFlags::debugPerformance,"In [%s::%s Line: %d] ================================= MAIN LOOP START ================================= \n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
Renderer &renderer= Renderer::getInstance();
|
||||
if(renderer.isMasterserverMode() == false && window) {
|
||||
MainWindow *mainWindow = dynamic_cast<MainWindow *>(window);
|
||||
if(mainWindow) {
|
||||
//mainWindow->render();
|
||||
if(mainWindow->getTriggerLanguageToggle()) {
|
||||
mainWindow->toggleLanguage(mainWindow->getTriggerLanguage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Chrono chronoLoop;
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled) chronoLoop.start();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user