Git Product home page Git Product logo

Comments (3)

ocornut avatar ocornut commented on June 20, 2024
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.

UniqueNotDB avatar UniqueNotDB commented on June 20, 2024

bro thank u so much lol im new to this

from imgui.

UniqueNotDB avatar UniqueNotDB commented on June 20, 2024

it fixed it

from imgui.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.