]> git.lizzy.rs Git - minetest.git/blobdiff - src/guiKeyChangeMenu.cpp
Fix memory leaks due to messed up memory handling for particles as well as their...
[minetest.git] / src / guiKeyChangeMenu.cpp
index c660ed870be829f835c6093a7141960f63733c7b..8b0bb8278bea0d95b0542ab79dccbeb729608c92 100644 (file)
 #include "settings.h"
 #include <algorithm>
 
+#include "mainmenumanager.h"  // for g_gamecallback
+
 #define KMaxButtonPerColumns 12
 
+extern MainGameCallback *g_gamecallback;
+
 enum
 {
        GUI_ID_BACK_BUTTON = 101, GUI_ID_ABORT_BUTTON, GUI_ID_SCROLL_BAR,
@@ -113,7 +117,7 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
        recalculateAbsolutePosition(false);
 
        v2s32 topleft(0, 0);
-       changeCtype("");
+       
        {
                core::rect < s32 > rect(0, 0, 600, 40);
                rect += topleft + v2s32(25, 3);
@@ -196,9 +200,7 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
                Environment->addButton(rect, this, GUI_ID_ABORT_BUTTON,
                                                         text );
                delete[] text;
-       }
-       changeCtype("C");
-       
+       }       
 }
 
 void GUIKeyChangeMenu::drawMenu()
@@ -236,7 +238,11 @@ bool GUIKeyChangeMenu::acceptInput()
                if(e != NULL && e->getType() == gui::EGUIET_CHECK_BOX)
                        g_settings->setBool("doubletap_jump", ((gui::IGUICheckBox*)e)->isChecked());
        }
+
        clearKeyCache();
+
+       g_gamecallback->signalKeyConfigChange();
+
        return true;
 }
 
@@ -265,7 +271,7 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
        if (event.EventType == EET_KEY_INPUT_EVENT && activeKey >= 0
                && event.KeyInput.PressedDown)
        {
-               changeCtype("");
+               
                bool prefer_character = shift_down;
                KeyPress kp(event.KeyInput, prefer_character);
                
@@ -313,7 +319,6 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
 
                        this->key_used.push_back(kp);
 
-                       changeCtype("C");
                        // Allow characters made with shift
                        if(shift_went_down){
                                shift_down = true;
@@ -339,12 +344,6 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
                }
                if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED)
                {
-                       if(event.GUIEvent.Caller->getID() != GUI_ID_BACK_BUTTON &&
-                          event.GUIEvent.Caller->getID() != GUI_ID_ABORT_BUTTON)
-                       {
-                               changeCtype("");
-                       }
-
                        switch (event.GUIEvent.Caller->getID())
                        {
                                case GUI_ID_BACK_BUTTON: //back
@@ -377,8 +376,6 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event)
                                        break;
                        }
                        Environment->setFocus(this);
-                       //Buttons
-                       changeCtype("C");
                }
        }
        return Parent ? Parent->OnEvent(event) : false;