diff --git a/src/gui/render/RenderView.cpp b/src/gui/render/RenderView.cpp index 4e8a0f989..5a59fcea9 100644 --- a/src/gui/render/RenderView.cpp +++ b/src/gui/render/RenderView.cpp @@ -50,15 +50,7 @@ RenderView::RenderView(): renderModeCheckbox->mode = mode; renderModeCheckbox->SetIcon(icon); renderModeCheckbox->SetActionCallback({ [this, renderModeCheckbox] { - auto renderMode = c->GetRenderMode(); - if (renderModeCheckbox->GetChecked()) - { - renderMode |= renderModeCheckbox->mode; - } - else - { - renderMode &= ~renderModeCheckbox->mode; - } + auto renderMode = CalculateRenderMode(); c->SetRenderMode(renderMode); } }); AddComponent(renderModeCheckbox); @@ -78,6 +70,11 @@ RenderView::RenderView(): displayModeCheckbox->SetIcon(icon); displayModeCheckbox->SetActionCallback({ [this, displayModeCheckbox] { auto displayMode = c->GetDisplayMode(); + // Air display modes are mutually exclusive + if (displayModeCheckbox->mode & DISPLAY_AIR) + { + displayMode &= ~DISPLAY_AIR; + } if (displayModeCheckbox->GetChecked()) { displayMode |= displayModeCheckbox->mode; @@ -128,6 +125,18 @@ RenderView::RenderView(): line4 = 340; } +uint32_t RenderView::CalculateRenderMode() +{ + uint32_t renderMode = 0; + for (auto &checkbox : renderModes) + { + if (checkbox->GetChecked()) + renderMode |= checkbox->mode; + } + + return renderMode; +} + void RenderView::OnMouseDown(int x, int y, unsigned button) { if(x > XRES || y < YRES) diff --git a/src/gui/render/RenderView.h b/src/gui/render/RenderView.h index d6ac49768..132445065 100644 --- a/src/gui/render/RenderView.h +++ b/src/gui/render/RenderView.h @@ -1,5 +1,6 @@ #pragma once #include "gui/interface/Window.h" +#include #include class ModeCheckbox; @@ -21,6 +22,7 @@ class RenderView: public ui::Window { int toolTipPresence; bool isToolTipFadingIn; int line1, line2, line3, line4; + uint32_t CalculateRenderMode(); public: RenderView(); void NotifyRendererChanged(RenderModel * sender);