mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Added flag for selectables to handle double clicks.
This commit is contained in:
		| @@ -5222,7 +5222,11 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | ||||
|         SetHoveredID(id); | ||||
|         if (!(flags & ImGuiButtonFlags_NoKeyModifiers) || (!g.IO.KeyCtrl && !g.IO.KeyShift && !g.IO.KeyAlt)) | ||||
|         { | ||||
|             if (g.IO.MouseClicked[0]) | ||||
|             if (g.IO.MouseDoubleClicked[0] && (flags & ImGuiButtonFlags_PressedOnDoubleClick)) | ||||
|             { | ||||
|                 pressed = true; | ||||
|             } | ||||
|             else if (g.IO.MouseClicked[0]) | ||||
|             { | ||||
|                 if (flags & ImGuiButtonFlags_PressedOnClick) | ||||
|                 { | ||||
| @@ -8135,6 +8139,7 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl | ||||
|     if (flags & ImGuiSelectableFlags_Menu) button_flags |= ImGuiButtonFlags_PressedOnClick; | ||||
|     if (flags & ImGuiSelectableFlags_MenuItem) button_flags |= ImGuiButtonFlags_PressedOnClick|ImGuiButtonFlags_PressedOnRelease; | ||||
|     if (flags & ImGuiSelectableFlags_Disabled) button_flags |= ImGuiButtonFlags_Disabled; | ||||
|     if (flags & ImGuiSelectableFlags_HandleDoubleClick) button_flags |= ImGuiButtonFlags_PressedOnDoubleClick; | ||||
|     bool hovered, held; | ||||
|     bool pressed = ButtonBehavior(bb_with_spacing, id, &hovered, &held, button_flags); | ||||
|     if (flags & ImGuiSelectableFlags_Disabled) | ||||
|   | ||||
							
								
								
									
										3
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -504,7 +504,8 @@ enum ImGuiSelectableFlags_ | ||||
| { | ||||
|     // Default: 0 | ||||
|     ImGuiSelectableFlags_DontClosePopups    = 1 << 0,   // Clicking this don't close parent popup window | ||||
|     ImGuiSelectableFlags_SpanAllColumns     = 1 << 1    // Selectable frame can span all columns (text will still fit in current column) | ||||
|     ImGuiSelectableFlags_SpanAllColumns     = 1 << 1,   // Selectable frame can span all columns (text will still fit in current column) | ||||
|     ImGuiSelectableFlags_HandleDoubleClick  = 1 << 2    // Generate press events on double clicks too | ||||
| }; | ||||
|  | ||||
| // User fill ImGuiIO.KeyMap[] array with indices into the ImGuiIO.KeysDown[512] array | ||||
|   | ||||
| @@ -392,11 +392,16 @@ void ImGui::ShowTestWindow(bool* p_opened) | ||||
|         { | ||||
|             if (ImGui::TreeNode("Basic")) | ||||
|             { | ||||
|                 static bool selected[3] = { false, true, false }; | ||||
|                 static bool selected[4] = { false, true, false, false }; | ||||
|                 ImGui::Selectable("1. I am selectable", &selected[0]); | ||||
|                 ImGui::Selectable("2. I am selectable", &selected[1]); | ||||
|                 ImGui::Text("3. I am not selectable"); | ||||
|                 ImGui::Selectable("4. I am selectable", &selected[2]); | ||||
|                 if (ImGui::Selectable("5. I am double clickable", selected[3], ImGuiSelectableFlags_HandleDoubleClick)) | ||||
|                 { | ||||
|                     if (ImGui::IsMouseDoubleClicked(0)) | ||||
|                         selected[3] = !selected[3]; | ||||
|                 } | ||||
|                 ImGui::TreePop(); | ||||
|             } | ||||
|             if (ImGui::TreeNode("Rendering more text into the same block")) | ||||
|   | ||||
| @@ -152,14 +152,15 @@ inline void operator delete(void*, ImPlacementNewDummy, void*) {} | ||||
|  | ||||
| enum ImGuiButtonFlags_ | ||||
| { | ||||
|     ImGuiButtonFlags_Repeat             = 1 << 0, | ||||
|     ImGuiButtonFlags_PressedOnClick     = 1 << 1,   // return pressed on click only (default requires click+release) | ||||
|     ImGuiButtonFlags_PressedOnRelease   = 1 << 2,   // return pressed on release only (default requires click+release) | ||||
|     ImGuiButtonFlags_FlattenChilds      = 1 << 3, | ||||
|     ImGuiButtonFlags_DontClosePopups    = 1 << 4, | ||||
|     ImGuiButtonFlags_Disabled           = 1 << 5, | ||||
|     ImGuiButtonFlags_AlignTextBaseLine  = 1 << 6, | ||||
|     ImGuiButtonFlags_NoKeyModifiers     = 1 << 7 | ||||
|     ImGuiButtonFlags_Repeat                 = 1 << 0, | ||||
|     ImGuiButtonFlags_PressedOnClick         = 1 << 1,   // return pressed on click only (default requires click+release) | ||||
|     ImGuiButtonFlags_PressedOnRelease       = 1 << 2,   // return pressed on release only (default requires click+release) | ||||
|     ImGuiButtonFlags_FlattenChilds          = 1 << 3, | ||||
|     ImGuiButtonFlags_DontClosePopups        = 1 << 4, | ||||
|     ImGuiButtonFlags_Disabled               = 1 << 5, | ||||
|     ImGuiButtonFlags_AlignTextBaseLine      = 1 << 6, | ||||
|     ImGuiButtonFlags_NoKeyModifiers         = 1 << 7, | ||||
|     ImGuiButtonFlags_PressedOnDoubleClick   = 1 << 8 | ||||
| }; | ||||
|  | ||||
| enum ImGuiTreeNodeFlags_ | ||||
| @@ -176,10 +177,10 @@ enum ImGuiSliderFlags_ | ||||
| enum ImGuiSelectableFlagsPrivate_ | ||||
| { | ||||
|     // NB: need to be in sync with last value of ImGuiSelectableFlags_ | ||||
|     ImGuiSelectableFlags_Menu               = 1 << 2, | ||||
|     ImGuiSelectableFlags_MenuItem           = 1 << 3, | ||||
|     ImGuiSelectableFlags_Disabled           = 1 << 4, | ||||
|     ImGuiSelectableFlags_DrawFillAvailWidth = 1 << 5 | ||||
|     ImGuiSelectableFlags_Menu               = 1 << 3, | ||||
|     ImGuiSelectableFlags_MenuItem           = 1 << 4, | ||||
|     ImGuiSelectableFlags_Disabled           = 1 << 5, | ||||
|     ImGuiSelectableFlags_DrawFillAvailWidth = 1 << 6 | ||||
| }; | ||||
|  | ||||
| // FIXME: this is in development, not exposed/functional as a generic feature yet. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user