diff --git a/data/gui/dialogs/confirm_dialog.stkgui b/data/gui/dialogs/confirm_dialog.stkgui
index b4117780f..600e28fe3 100644
--- a/data/gui/dialogs/confirm_dialog.stkgui
+++ b/data/gui/dialogs/confirm_dialog.stkgui
@@ -5,7 +5,7 @@
-
+
diff --git a/src/main.cpp b/src/main.cpp
index 19a72d70a..af34520cb 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2410,6 +2410,22 @@ int main(int argc, char *argv[])
}
#endif
+ class DriverDialog :
+ public MessageDialog::IConfirmDialogListener
+ {
+ public:
+ virtual void onConfirm()
+ {
+ GUIEngine::ModalDialog::dismiss();
+ } // onConfirm
+ // --------------------------------------------------------
+ virtual void onCancel()
+ {
+ UserConfigParams::m_old_driver_popup = false;
+ GUIEngine::ModalDialog::dismiss();
+ } // onCancel
+ }; // DriverDialog
+
if (GraphicsRestrictions::isDisabled(
GraphicsRestrictions::GR_DRIVER_RECENT_ENOUGH))
{
@@ -2418,7 +2434,9 @@ int main(int argc, char *argv[])
MessageDialog *dialog =
new MessageDialog(_("Your driver version is too old. "
"Please install the latest video "
- "drivers."), /*from queue*/ true);
+ "drivers."),
+ MessageDialog::MESSAGE_DIALOG_OK_DONTSHOWAGAIN,
+ new DriverDialog(), /*delete_listener*/ true, /*from queue*/ true);
GUIEngine::DialogQueue::get()->pushDialog(dialog);
}
Log::warn("OpenGL", "Driver is too old!");
@@ -2438,7 +2456,9 @@ int main(int argc, char *argv[])
"check if an update is available. SuperTuxKart "
"recommends a driver supporting %s or better. The game "
"will likely still run, but in a reduced-graphics mode.",
- version), /*from queue*/ true);
+ version),
+ MessageDialog::MESSAGE_DIALOG_OK_DONTSHOWAGAIN,
+ new DriverDialog(), /*delete_listener*/ true, /*from queue*/ true);
GUIEngine::DialogQueue::get()->pushDialog(dialog);
}
#endif
diff --git a/src/states_screens/dialogs/message_dialog.cpp b/src/states_screens/dialogs/message_dialog.cpp
index 654174231..f493918b8 100644
--- a/src/states_screens/dialogs/message_dialog.cpp
+++ b/src/states_screens/dialogs/message_dialog.cpp
@@ -136,6 +136,13 @@ void MessageDialog::loadedFromFile()
IconButtonWidget* yesbtn = getWidget("confirm");
yesbtn->setText(_("OK"));
}
+ else if (m_type == MessageDialog::MESSAGE_DIALOG_OK_DONTSHOWAGAIN)
+ {
+ IconButtonWidget* yesbtn = getWidget("confirm");
+ yesbtn->setText(_("OK"));
+ IconButtonWidget* cancel = getWidget("cancel");
+ cancel->setText(_("Don't show again"));
+ }
}
// ----------------------------------------------------------------------------
diff --git a/src/states_screens/dialogs/message_dialog.hpp b/src/states_screens/dialogs/message_dialog.hpp
index b49f29341..a98956f83 100644
--- a/src/states_screens/dialogs/message_dialog.hpp
+++ b/src/states_screens/dialogs/message_dialog.hpp
@@ -63,7 +63,8 @@ public:
};
enum MessageDialogType { MESSAGE_DIALOG_OK, MESSAGE_DIALOG_CONFIRM,
- MESSAGE_DIALOG_OK_CANCEL, MESSAGE_DIALOG_YESNO };
+ MESSAGE_DIALOG_OK_CANCEL, MESSAGE_DIALOG_YESNO,
+ MESSAGE_DIALOG_OK_DONTSHOWAGAIN };
MessageDialogType m_type;