Przeglądaj źródła

ColorEdit4: Fixed not returning true when clicking on the Original/Ref color in Picker spawned from ColorEdit4 + shallow tidying up (#346)

omar 8 lat temu
rodzic
commit
6c82572a35
1 zmienionych plików z 8 dodań i 7 usunięć
  1. 8 7
      imgui.cpp

+ 8 - 7
imgui.cpp

@@ -9239,12 +9239,13 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
         if (!(flags & ImGuiColorEditFlags_NoInputs))
             SameLine(0, style.ItemInnerSpacing.x);
 
-        const ImVec4 col_display(col[0], col[1], col[2], alpha ? col[3] : 1.0f); // 1.0f
-        if (ColorButton("##ColorButton", col_display, flags))
+        const ImVec4 col_v4(col[0], col[1], col[2], alpha ? col[3] : 1.0f);
+        if (ColorButton("##ColorButton", col_v4, flags))
         {
             if (!(flags & ImGuiColorEditFlags_NoPicker))
             {
-                g.ColorPickerRef = ImVec4(col[0], col[1], col[2], alpha ? col[3] : 1.0f);
+                // Store current color and open a picker
+                g.ColorPickerRef = col_v4;
                 OpenPopup("picker");
                 SetNextWindowPos(window->DC.LastItemRect.GetBL() + ImVec2(-1,style.ItemSpacing.y));
             }
@@ -9267,7 +9268,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
             ImGuiColorEditFlags picker_flags = (flags & picker_flags_to_forward) | (ImGuiColorEditFlags_RGB | ImGuiColorEditFlags_HSV | ImGuiColorEditFlags_HEX) | ImGuiColorEditFlags_NoLabel;
             if ((flags & ImGuiColorEditFlags_NoRefColor) == 0)
                 picker_flags |= ImGuiColorEditFlags_NoColorSquare;
-            PushItemWidth(square_sz * 12.0f);
+            PushItemWidth(square_sz * 12.0f); // Use 256 + bar sizes?
             value_changed |= ColorPicker4("##picker", col, picker_flags);
             PopItemWidth();
             if ((flags & ImGuiColorEditFlags_NoRefColor) == 0)
@@ -9275,12 +9276,12 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
                 SameLine();
                 BeginGroup();
                 Text("Current");
-                ColorButton("##current", col_display, ImGuiColorEditFlags_NoTooltip|ImGuiColorEditFlags_AlphaPreviewHalf, ImVec2(square_sz * 3, square_sz * 2));
+                ColorButton("##current", col_v4, ImGuiColorEditFlags_NoTooltip|ImGuiColorEditFlags_AlphaPreviewHalf, ImVec2(square_sz * 3, square_sz * 2));
                 Text("Original");
                 if (ColorButton("##original", g.ColorPickerRef, ImGuiColorEditFlags_NoTooltip|ImGuiColorEditFlags_AlphaPreviewHalf, ImVec2(square_sz * 3, square_sz * 2)))
                 {
-                    memcpy(col, &g.ColorPickerRef, (alpha ? 4 : 3) * sizeof(float));
-                    value_changed = 0;
+                    memcpy(col, &g.ColorPickerRef, components * sizeof(float));
+                    value_changed = true;
                 }
                 EndGroup();
             }