onepad: use modal dialog instead of frame

Avoid various pitfall such as #1387

v2:
* use stack object
This commit is contained in:
Gregory Hainaut 2016-07-20 10:06:29 +02:00
parent 1e3c46a6bb
commit 53a70d9018
6 changed files with 22 additions and 22 deletions

View File

@ -20,7 +20,7 @@
#include "GamepadConfiguration.h"
// Construtor of GamepadConfiguration
GamepadConfiguration::GamepadConfiguration(int pad, wxWindow *parent) : wxFrame(
GamepadConfiguration::GamepadConfiguration(int pad, wxWindow *parent) : wxDialog(
parent, // Parent
wxID_ANY, // ID
_T("Gamepad configuration"), // Title

View File

@ -32,7 +32,7 @@
#include "keyboard.h"
#include "onepad.h"
class GamepadConfiguration : public wxFrame
class GamepadConfiguration : public wxDialog
{
wxPanel* m_pan_gamepad_config;
wxCheckBox *m_cb_rumble, *m_cb_hack_sixaxis_usb, *m_cb_hack_sixaxis_pressure;

View File

@ -20,7 +20,7 @@
#include "JoystickConfiguration.h"
// Construtor of JoystickConfiguration
JoystickConfiguration::JoystickConfiguration(int pad, bool left, wxWindow *parent) : wxFrame(
JoystickConfiguration::JoystickConfiguration(int pad, bool left, wxWindow *parent) : wxDialog(
parent, // Parent
wxID_ANY, // ID
_T("Gamepad configuration"), // Title

View File

@ -32,7 +32,7 @@
#include "keyboard.h"
#include "onepad.h"
class JoystickConfiguration : public wxFrame
class JoystickConfiguration : public wxDialog
{
wxPanel* m_pan_joystick_config;
wxCheckBox *m_cb_reverse_Lx, *m_cb_reverse_Ly, *m_cb_reverse_Rx, *m_cb_reverse_Ry,

View File

@ -20,7 +20,7 @@
#include "dialog.h"
// Construtor of Dialog
Dialog::Dialog() : wxFrame( NULL, // Parent
Dialog::Dialog() : wxDialog( NULL, // Parent
wxID_ANY, // ID
_T("OnePad configuration"), // Title
wxDefaultPosition, // Position
@ -320,21 +320,24 @@ void Dialog::OnButtonClicked(wxCommandEvent &event)
}
else if(bt_id == Gamepad_config) // If the button ID is equals to the Gamepad_config button ID
{
m_frm_gamepad_config = new GamepadConfiguration(gamepad_id, this);
m_frm_gamepad_config->InitGamepadConfiguration();
m_frm_gamepad_config->Show(true);
GamepadConfiguration gamepad_config(gamepad_id, this);
gamepad_config.InitGamepadConfiguration();
gamepad_config.ShowModal();
}
else if(bt_id == JoyL_config) // If the button ID is equals to the JoyL_config button ID
{
m_frm_joystick_config = new JoystickConfiguration(gamepad_id, true, this);
m_frm_joystick_config->InitJoystickConfiguration();
m_frm_joystick_config->Show(true);
JoystickConfiguration joystick_config(gamepad_id, true, this);
joystick_config.InitJoystickConfiguration();
joystick_config.ShowModal();
}
else if(bt_id == JoyR_config) // If the button ID is equals to the JoyR_config button ID
{
m_frm_joystick_config = new JoystickConfiguration(gamepad_id, false, this);
m_frm_joystick_config->InitJoystickConfiguration();
m_frm_joystick_config->Show(true);
JoystickConfiguration joystick_config(gamepad_id, false, this);
joystick_config.InitJoystickConfiguration();
joystick_config.ShowModal();
}
else if(bt_id == Set_all) // If the button ID is equals to the Set_all button ID
{
@ -696,7 +699,8 @@ void Dialog::repopulate()
// Main
void DisplayDialog()
{
Dialog* dialog = new Dialog();
dialog->InitDialog();
dialog->Show(true);
Dialog dialog;
dialog.InitDialog();
dialog.ShowModal();
}

View File

@ -63,7 +63,7 @@ enum gui_buttons {
#define DEFAULT_WIDTH 1000
#define DEFAULT_HEIGHT 740
class Dialog : public wxFrame
class Dialog : public wxDialog
{
// Panels
opPanel* m_pan_tabs[GAMEPAD_NUMBER]; // Gamepad Tabs box
@ -80,10 +80,6 @@ class Dialog : public wxFrame
// Map the key pressed with the feedback image id
std::map<u32,int> m_map_images[GAMEPAD_NUMBER];
// Frame
GamepadConfiguration* m_frm_gamepad_config; // Gamepad Configuration frame
JoystickConfiguration* m_frm_joystick_config; // Joystick Configuration frame
// methods
void config_key(int, int);
void clear_key(int, int);