Tweaked checkbox/radio default hover color to be less distracting. Added GetItemWidth(). Added text filter to style editor.

This commit is contained in:
ocornut 2014-08-12 00:04:13 +01:00
parent 2a1ba33263
commit ab8561e6fc
2 changed files with 15 additions and 5 deletions

View File

@ -226,7 +226,7 @@ ImGuiStyle::ImGuiStyle()
Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.40f, 0.40f, 0.80f, 0.40f); Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.40f, 0.40f, 0.80f, 0.40f);
Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.80f, 0.50f, 0.50f, 0.40f); Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.80f, 0.50f, 0.50f, 0.40f);
Colors[ImGuiCol_ComboBg] = ImVec4(0.20f, 0.20f, 0.20f, 0.99f); Colors[ImGuiCol_ComboBg] = ImVec4(0.20f, 0.20f, 0.20f, 0.99f);
Colors[ImGuiCol_CheckHovered] = ImVec4(0.60f, 0.40f, 0.40f, 1.00f); Colors[ImGuiCol_CheckHovered] = ImVec4(0.60f, 0.40f, 0.40f, 0.45f);
Colors[ImGuiCol_CheckActive] = ImVec4(0.90f, 0.90f, 0.90f, 0.50f); Colors[ImGuiCol_CheckActive] = ImVec4(0.90f, 0.90f, 0.90f, 0.50f);
Colors[ImGuiCol_SliderGrab] = ImVec4(1.00f, 1.00f, 1.00f, 0.30f); Colors[ImGuiCol_SliderGrab] = ImVec4(1.00f, 1.00f, 1.00f, 0.30f);
Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.80f, 0.50f, 0.50f, 1.00f); Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.80f, 0.50f, 0.50f, 1.00f);
@ -2123,6 +2123,12 @@ void PopItemWidth()
window->DC.ItemWidth.pop_back(); window->DC.ItemWidth.pop_back();
} }
float GetItemWidth()
{
ImGuiWindow* window = GetCurrentWindow();
return window->DC.ItemWidth.back();
}
void PushAllowKeyboardFocus(bool allow_keyboard_focus) void PushAllowKeyboardFocus(bool allow_keyboard_focus)
{ {
ImGuiWindow* window = GetCurrentWindow(); ImGuiWindow* window = GetCurrentWindow();
@ -3307,7 +3313,6 @@ void Checkbox(const char* label, bool* v)
const ImGuiAabb text_bb(window->DC.CursorPos + ImVec2(0,style.FramePadding.y), window->DC.CursorPos + ImVec2(0,style.FramePadding.y) + text_size); const ImGuiAabb text_bb(window->DC.CursorPos + ImVec2(0,style.FramePadding.y), window->DC.CursorPos + ImVec2(0,style.FramePadding.y) + text_size);
ItemSize(ImVec2(text_bb.GetWidth(), check_bb.GetHeight())); ItemSize(ImVec2(text_bb.GetWidth(), check_bb.GetHeight()));
const ImGuiAabb total_bb(ImMin(check_bb.Min, text_bb.Min), ImMax(check_bb.Max, text_bb.Max)); const ImGuiAabb total_bb(ImMin(check_bb.Min, text_bb.Min), ImMax(check_bb.Max, text_bb.Max));
if (ClipAdvance(total_bb)) if (ClipAdvance(total_bb))
@ -3324,7 +3329,6 @@ void Checkbox(const char* label, bool* v)
} }
RenderFrame(check_bb.Min, check_bb.Max, window->Color(hovered ? ImGuiCol_CheckHovered : ImGuiCol_FrameBg)); RenderFrame(check_bb.Min, check_bb.Max, window->Color(hovered ? ImGuiCol_CheckHovered : ImGuiCol_FrameBg));
if (*v) if (*v)
{ {
window->DrawList->AddRectFilled(check_bb.Min+ImVec2(4,4), check_bb.Max-ImVec2(4,4), window->Color(ImGuiCol_CheckActive)); window->DrawList->AddRectFilled(check_bb.Min+ImVec2(4,4), check_bb.Max-ImVec2(4,4), window->Color(ImGuiCol_CheckActive));
@ -3363,7 +3367,6 @@ bool RadioButton(const char* label, bool active)
const ImGuiAabb text_bb(window->DC.CursorPos + ImVec2(0, style.FramePadding.y), window->DC.CursorPos + ImVec2(0, style.FramePadding.y) + text_size); const ImGuiAabb text_bb(window->DC.CursorPos + ImVec2(0, style.FramePadding.y), window->DC.CursorPos + ImVec2(0, style.FramePadding.y) + text_size);
ItemSize(ImVec2(text_bb.GetWidth(), check_bb.GetHeight())); ItemSize(ImVec2(text_bb.GetWidth(), check_bb.GetHeight()));
const ImGuiAabb total_bb(ImMin(check_bb.Min, text_bb.Min), ImMax(check_bb.Max, text_bb.Max)); const ImGuiAabb total_bb(ImMin(check_bb.Min, text_bb.Min), ImMax(check_bb.Max, text_bb.Max));
if (ClipAdvance(total_bb)) if (ClipAdvance(total_bb))
@ -5146,11 +5149,17 @@ void ShowStyleEditor(ImGuiStyle* ref)
ImGui::SameLine(); ImGui::SameLine();
ImGui::RadioButton("HEX", &edit_mode, ImGuiColorEditMode_HEX); ImGui::RadioButton("HEX", &edit_mode, ImGuiColorEditMode_HEX);
static ImGuiTextFilter filter;
filter.Draw("Filter colors", 200);
ImGui::ColorEditMode(edit_mode); ImGui::ColorEditMode(edit_mode);
for (size_t i = 0; i < ImGuiCol_COUNT; i++) for (size_t i = 0; i < ImGuiCol_COUNT; i++)
{ {
const char* name = GetStyleColorName(i);
if (!filter.PassFilter(name))
continue;
ImGui::PushID(i); ImGui::PushID(i);
ImGui::ColorEdit4(GetStyleColorName(i), (float*)&style.Colors[i], true); ImGui::ColorEdit4(name, (float*)&style.Colors[i], true);
if (memcmp(&style.Colors[i], (ref ? &ref->Colors[i] : &def.Colors[i]), sizeof(ImVec4)) != 0) if (memcmp(&style.Colors[i], (ref ? &ref->Colors[i] : &def.Colors[i]), sizeof(ImVec4)) != 0)
{ {
ImGui::SameLine(); if (ImGui::Button("Revert")) style.Colors[i] = ref ? ref->Colors[i] : def.Colors[i]; ImGui::SameLine(); if (ImGui::Button("Revert")) style.Colors[i] = ref ? ref->Colors[i] : def.Colors[i];

View File

@ -145,6 +145,7 @@ namespace ImGui
void SetTreeStateStorage(ImGuiStorage* tree); void SetTreeStateStorage(ImGuiStorage* tree);
void PushItemWidth(float item_width); void PushItemWidth(float item_width);
void PopItemWidth(); void PopItemWidth();
float GetItemWidth();
void PushAllowKeyboardFocus(bool v); void PushAllowKeyboardFocus(bool v);
void PopAllowKeyboardFocus(); void PopAllowKeyboardFocus();
void PushStyleColor(ImGuiCol idx, ImVec4 col); void PushStyleColor(ImGuiCol idx, ImVec4 col);