From 77fab5940c66685ef8eb3ab033b17f42ef57051b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Wed, 13 Jul 2016 16:51:19 +0200 Subject: [PATCH] InputConfigDiag: Don't prevent closing dialog if device not found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no reason to prevent the user from closing the config dialog if the device is not found. It's not very good UX… Also fixes ExpressionParser to return NO_DEVICE if the device doesn't exist instead of SUCCESS. --- Source/Core/DolphinWX/InputConfigDiag.cpp | 3 ++- .../ControllerInterface/ExpressionParser.cpp | 15 +++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Source/Core/DolphinWX/InputConfigDiag.cpp b/Source/Core/DolphinWX/InputConfigDiag.cpp index cad5d3496a..62efa38430 100644 --- a/Source/Core/DolphinWX/InputConfigDiag.cpp +++ b/Source/Core/DolphinWX/InputConfigDiag.cpp @@ -320,7 +320,8 @@ bool ControlDialog::Validate() UpdateGUI(); - return control_reference->parse_error == EXPRESSION_PARSE_SUCCESS; + return (control_reference->parse_error == EXPRESSION_PARSE_SUCCESS || + control_reference->parse_error == EXPRESSION_PARSE_NO_DEVICE); } void GamepadPage::SetDevice(wxCommandEvent&) diff --git a/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp b/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp index 2960888148..5e4c2375af 100644 --- a/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp +++ b/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp @@ -401,7 +401,7 @@ private: if (control == nullptr) { *expr_out = new DummyExpression(tok.qualifier); - return EXPRESSION_PARSE_SUCCESS; + return EXPRESSION_PARSE_NO_DEVICE; } *expr_out = new ControlExpression(tok.qualifier, device, control); @@ -427,13 +427,12 @@ private: ExpressionParseStatus Unary(ExpressionNode** expr_out) { - ExpressionParseStatus status; - if (IsUnaryExpression(Peek().type)) { Token tok = Chew(); ExpressionNode* atom_expr; - if ((status = Atom(&atom_expr)) != EXPRESSION_PARSE_SUCCESS) + ExpressionParseStatus status = Atom(&atom_expr); + if (status == EXPRESSION_PARSE_SYNTAX_ERROR) return status; *expr_out = new UnaryExpression(tok.type, atom_expr); return EXPRESSION_PARSE_SUCCESS; @@ -457,16 +456,16 @@ private: ExpressionParseStatus Binary(ExpressionNode** expr_out) { - ExpressionParseStatus status; - - if ((status = Unary(expr_out)) != EXPRESSION_PARSE_SUCCESS) + ExpressionParseStatus status = Unary(expr_out); + if (status == EXPRESSION_PARSE_SYNTAX_ERROR) return status; while (IsBinaryToken(Peek().type)) { Token tok = Chew(); ExpressionNode* unary_expr; - if ((status = Unary(&unary_expr)) != EXPRESSION_PARSE_SUCCESS) + status = Unary(&unary_expr); + if (status == EXPRESSION_PARSE_SYNTAX_ERROR) { delete *expr_out; return status;