fix for combobox bounce

This commit is contained in:
2026-02-14 14:31:30 +01:00
parent a910f7b36b
commit 7d78b7f6ba
4 changed files with 23 additions and 0 deletions
+7
View File
@@ -33,11 +33,13 @@ void Simulator_base::showEvent(QShowEvent *event)
{ {
QWidget::showEvent(event); QWidget::showEvent(event);
SPDLOG_DEBUG("Connecting callbacks"); SPDLOG_DEBUG("Connecting callbacks");
m_first_load = true;
connect(m_web_socket, &Web_socket_wrapper::on_command_cb, this, [=, this](json &j) { on_cmd_cb(j); }); connect(m_web_socket, &Web_socket_wrapper::on_command_cb, this, [=, this](json &j) { on_cmd_cb(j); });
connect(m_web_socket, &Web_socket_wrapper::on_event_cb, this, [=, this](json &j) { on_event_cb(j); }); connect(m_web_socket, &Web_socket_wrapper::on_event_cb, this, [=, this](json &j) { on_event_cb(j); });
connect(m_web_socket, &Web_socket_wrapper::on_closed, this, [=, this] { m_error_dialog->open(); }); connect(m_web_socket, &Web_socket_wrapper::on_closed, this, [=, this] { m_error_dialog->open(); });
m_web_socket->inhibit_events(true);
m_web_socket->send_command(Web_socket_wrapper::Command::get_UI_elements); m_web_socket->send_command(Web_socket_wrapper::Command::get_UI_elements);
this->m_timer_update->start(m_refresh_rate); this->m_timer_update->start(m_refresh_rate);
m_open = true; m_open = true;
@@ -69,6 +71,11 @@ void Simulator_base::on_cmd_cb(json &j)
default: default:
break; break;
} }
if (m_first_load)
{
m_web_socket->inhibit_events(false);
m_first_load = false;
}
} }
void Simulator_base::on_event_cb(json &j) void Simulator_base::on_event_cb(json &j)
+1
View File
@@ -83,6 +83,7 @@ class Simulator_base : public QMainWindow
uint32_t m_refresh_rate; uint32_t m_refresh_rate;
NetworkError *m_error_dialog; NetworkError *m_error_dialog;
bool m_open = false; bool m_open = false;
bool m_first_load = true;
std::vector<QWidget *> m_ui_lookup; std::vector<QWidget *> m_ui_lookup;
}; };
+13
View File
@@ -70,6 +70,8 @@ void Web_socket_wrapper::send_command(Command command, QString id)
void Web_socket_wrapper::send_event(Event event, size_t id) void Web_socket_wrapper::send_event(Event event, size_t id)
{ {
if (m_inhibit_events)
return;
json j; json j;
switch (event) switch (event)
{ {
@@ -86,6 +88,8 @@ void Web_socket_wrapper::send_event(Event event, size_t id)
void Web_socket_wrapper::send_event(Event event, size_t id, double val) void Web_socket_wrapper::send_event(Event event, size_t id, double val)
{ {
if (m_inhibit_events)
return;
json j; json j;
switch (event) switch (event)
{ {
@@ -102,6 +106,8 @@ void Web_socket_wrapper::send_event(Event event, size_t id, double val)
void Web_socket_wrapper::send_event(Event event, size_t id, QString val) void Web_socket_wrapper::send_event(Event event, size_t id, QString val)
{ {
if (m_inhibit_events)
return;
json j; json j;
switch (event) switch (event)
{ {
@@ -124,6 +130,8 @@ void Web_socket_wrapper::send_event(Event event, size_t id, QString val)
void Web_socket_wrapper::send_event(Event event, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload) void Web_socket_wrapper::send_event(Event event, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload)
{ {
if (m_inhibit_events)
return;
json j; json j;
switch (event) switch (event)
{ {
@@ -189,3 +197,8 @@ void Web_socket_wrapper::m_on_pong_timeout()
m_web_socket->close(); m_web_socket->close();
emit on_closed(); emit on_closed();
} }
void Web_socket_wrapper::inhibit_events(bool inhibit)
{
m_inhibit_events = inhibit;
}
+2
View File
@@ -44,6 +44,7 @@ class Web_socket_wrapper : public QObject
void send_event(Event event, size_t id, QString val); void send_event(Event event, size_t id, QString val);
void send_event(Event event, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload); void send_event(Event event, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload);
void close(); void close();
void inhibit_events(bool inhibit);
Q_SIGNALS: Q_SIGNALS:
void on_connected(); void on_connected();
@@ -59,6 +60,7 @@ class Web_socket_wrapper : public QObject
private: private:
bool m_connected = false; bool m_connected = false;
bool m_inhibit_events = false;
QWebSocket *m_web_socket; QWebSocket *m_web_socket;
QTimer *m_ping_timer; QTimer *m_ping_timer;
QTimer *m_pong_timer; QTimer *m_pong_timer;