Comments (3)
if (page == 4) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_COG " \n", ImVec2(50, 50))) { page = 4; }
if (page == 4) { ImGui::PopStyleColor(); }
Look carefully at the code and you will understand your mistake: when the Button()
is pressed you are changing the value of page
, creating an assymetry in the Push/Pop logic.
You could do:
int next_page = page;
if (page == 1) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_CROSSHAIRS " \n", ImVec2(50, 50))) { next_page = 1; }
if (page == 1) { ImGui::PopStyleColor(); }
ImGui::SetCursorPosX(50);
if (page == 2) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_EYE " \n", ImVec2(50, 50))) { next_page = 2; }
if (page == 2) { ImGui::PopStyleColor(); }
ImGui::SetCursorPosX(50);
if (page == 3) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_CLOUD " \n", ImVec2(50, 50))) { next_page = 3; }
if (page == 3) { ImGui::PopStyleColor(); }
ImGui::SetCursorPosX(50);
if (page == 4) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_COG " \n", ImVec2(50, 50))) { next_page= 4; }
if (page == 4) { ImGui::PopStyleColor(); }
page = next_page;
Or:
if (page == 1) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_CROSSHAIRS " \n", ImVec2(50, 50))) { next_page = 1; }
if (page == 1) { ImGui::PopStyleColor(); }
ImGui::SetCursorPosX(50);
if (page == 2) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_EYE " \n", ImVec2(50, 50))) { next_page = 2; }
if (page == 2) { ImGui::PopStyleColor(); }
ImGui::SetCursorPosX(50);
if (page == 3) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_CLOUD " \n", ImVec2(50, 50))) { next_page = 3; }
if (page == 3) { ImGui::PopStyleColor(); }
ImGui::SetCursorPosX(50);
if (page == 4) { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(127, 0, 255, 255)); }
if (ImGui::Button("\n " ICON_FA_COG " \n", ImVec2(50, 50))) { next_page= 4; }
if (page == 4) { ImGui::PopStyleColor(); }
You might also want to create yourself a helper function:
// in your own header+source file
bool ImGui::ButtonColored(const ImVec4& col, const char* label)
{
PushStyleColor(ImGuiCol_Text, col);
bool ret = Button(label);
PopStyleColor();
return ret;
}
And use it:
ImGui::Indent(50.0f);
ImVec4 base_color = style.Colors[ImGuiCol_Text];
ImVec4 selected_color = ImVec4(127, 0, 255, 255);
ImVec2 button_sz(50,50);
if (ImGui::ButtonColored(page == 1 ? selected_color : base_color, "\n " ICON_FA_CROSSHAIRS " \n", button_sz)) { page = 1; }
if (ImGui::ButtonColored(page == 2 ? selected_color : base_color, "\n " ICON_FA_EYE " \n", button_sz)) { page = 2; }
[....]
ImGui::Unindent(50.0f);
from imgui.
bro thank u so much lol im new to this
from imgui.
it fixed it
from imgui.
Related Issues (20)
- Scale to window maintaining aspect ratio, but Viewport won't center HOT 2
- Please help me to clarify the concepts of some specific terms HOT 2
- WebGPU ImGui::Image not accepts different texture formats HOT 3
- InputText CTRL+V paste fails if text is too long HOT 4
- Why does ImGui tables insert extra ID into the id path of the child widgets? HOT 1
- Emscripten build runtime error: Unable to preventDefault inside passive event listener HOT 6
- getting tightest possible horizontal spacing HOT 7
- Fonts become white rectangles after upgrading to most recent ImGui/SDL3/Vulkan versions HOT 12
- Color too dark custom checkbox color fill HOT 3
- No horizontal scrollbar in a window when calling SetNextWindowContentSize with size larger than the screen HOT 6
- Plugin architecture in imgui(C++)? HOT 4
- Misbehaving GUI when i through libigl to use imgui HOT 2
- DXGI warning with DX11 backend about `DXGI_SWAP_EFFECT_DISCARD` HOT 9
- Transparent issue HOT 3
- ImGui Dockspace not working when viewports are enabled HOT 11
- Tabbar containing dockspace HOT 8
- How to dock a window to the size programmatically wthout taking the whole space HOT 3
- Memory leak when rendering with DX11 in C++ HOT 16
- How to display the same texture with different scale modes? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from imgui.