exit confirmation changes
This commit is contained in:
		@@ -528,12 +528,16 @@ IMGUI_ITEM_ATLAS_FUNCTION(_imgui_atlas_selectable, _imgui_selectable(self, imgui
 | 
				
			|||||||
IMGUI_ITEM_ATLAS_VALUE_FUNCTION(_imgui_atlas_selectable_input_int, s32, _imgui_selectable_input_int(self, imgui, value));
 | 
					IMGUI_ITEM_ATLAS_VALUE_FUNCTION(_imgui_atlas_selectable_input_int, s32, _imgui_selectable_input_int(self, imgui, value));
 | 
				
			||||||
IMGUI_ITEM_ATLAS_VALUE_FUNCTION(_imgui_atlas_selectable_input_text, std::string, _imgui_selectable_input_text(self, imgui, value));
 | 
					IMGUI_ITEM_ATLAS_VALUE_FUNCTION(_imgui_atlas_selectable_input_text, std::string, _imgui_selectable_input_text(self, imgui, value));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool _imgui_option_popup(ImguiItem self, Imgui* imgui)
 | 
					static bool _imgui_option_popup(ImguiItem self, Imgui* imgui, ImguiPopupState* state = nullptr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ImGui::SetNextWindowPos(ImGui::GetMainViewport()->GetCenter(), ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
 | 
						ImGui::SetNextWindowPos(ImGui::GetMainViewport()->GetCenter(), ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						if (state) *state = IMGUI_POPUP_STATE_CLOSED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (imgui_begin_popup_modal(self.label_get(), imgui))
 | 
						if (imgui_begin_popup_modal(self.label_get(), imgui))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							if (state) *state = IMGUI_POPUP_STATE_OPEN;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		ImGui::Text(self.text_get());
 | 
							ImGui::Text(self.text_get());
 | 
				
			||||||
		ImGui::Separator();
 | 
							ImGui::Separator();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -541,13 +545,17 @@ static bool _imgui_option_popup(ImguiItem self, Imgui* imgui)
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
			imgui_close_current_popup(imgui);
 | 
								imgui_close_current_popup(imgui);
 | 
				
			||||||
			imgui_end_popup(imgui);
 | 
								imgui_end_popup(imgui);
 | 
				
			||||||
 | 
								if (state) *state = IMGUI_POPUP_STATE_CONFIRM;
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ImGui::SameLine();
 | 
							ImGui::SameLine();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (_imgui_button(IMGUI_POPUP_CANCEL, imgui))
 | 
							if (_imgui_button(IMGUI_POPUP_CANCEL, imgui))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
			imgui_close_current_popup(imgui);
 | 
								imgui_close_current_popup(imgui);
 | 
				
			||||||
 | 
								if (state) *state = IMGUI_POPUP_STATE_CANCEL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		imgui_end_popup(imgui);
 | 
							imgui_end_popup(imgui);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -1240,6 +1248,8 @@ static void _imgui_timeline(Imgui* self)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void _imgui_taskbar(Imgui* self)
 | 
					static void _imgui_taskbar(Imgui* self)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						static ImguiPopupState exitConfirmState = IMGUI_POPUP_STATE_CLOSED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ImGuiViewport* viewport = ImGui::GetMainViewport();
 | 
						ImGuiViewport* viewport = ImGui::GetMainViewport();
 | 
				
			||||||
	ImguiItem taskbar = IMGUI_TASKBAR;
 | 
						ImguiItem taskbar = IMGUI_TASKBAR;
 | 
				
			||||||
	ImGui::SetNextWindowSize({viewport->Size.x, IMGUI_TASKBAR.size.y});
 | 
						ImGui::SetNextWindowSize({viewport->Size.x, IMGUI_TASKBAR.size.y});
 | 
				
			||||||
@@ -1278,10 +1288,15 @@ static void _imgui_taskbar(Imgui* self)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (self->isTryQuit) imgui_open_popup(IMGUI_EXIT_CONFIRMATION.label);
 | 
						if (self->isTryQuit) imgui_open_popup(IMGUI_EXIT_CONFIRMATION.label);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (_imgui_option_popup(IMGUI_EXIT_CONFIRMATION, self))
 | 
						_imgui_option_popup(IMGUI_EXIT_CONFIRMATION, self, &exitConfirmState);
 | 
				
			||||||
		self->isQuit = true;
 | 
					
 | 
				
			||||||
	else
 | 
						switch (exitConfirmState)
 | 
				
			||||||
		self->isTryQuit = false;
 | 
						{
 | 
				
			||||||
 | 
							case IMGUI_POPUP_STATE_CLOSED: self->isTryQuit = false; break;
 | 
				
			||||||
 | 
							case IMGUI_POPUP_STATE_OPEN: self->isTryQuit = true; break;
 | 
				
			||||||
 | 
							case IMGUI_POPUP_STATE_CONFIRM: self->isQuit = true; break;
 | 
				
			||||||
 | 
							case IMGUI_POPUP_STATE_CANCEL: self->isTryQuit = false; break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_imgui_selectable(IMGUI_WIZARD.copy({}), self);
 | 
						_imgui_selectable(IMGUI_WIZARD.copy({}), self);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								src/imgui.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/imgui.h
									
									
									
									
									
								
							@@ -146,6 +146,14 @@ enum ImguiPopupType
 | 
				
			|||||||
    IMGUI_POPUP_CENTER_WINDOW
 | 
					    IMGUI_POPUP_CENTER_WINDOW
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum ImguiPopupState
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    IMGUI_POPUP_STATE_CLOSED,
 | 
				
			||||||
 | 
					    IMGUI_POPUP_STATE_OPEN,
 | 
				
			||||||
 | 
					    IMGUI_POPUP_STATE_CONFIRM,
 | 
				
			||||||
 | 
					    IMGUI_POPUP_STATE_CANCEL
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct ImguiColorSet 
 | 
					struct ImguiColorSet 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImVec4 normal{};
 | 
					    ImVec4 normal{};
 | 
				
			||||||
@@ -603,7 +611,7 @@ IMGUI_ITEM(IMGUI_FOOTER_CHILD,
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMGUI_ITEM(IMGUI_TASKBAR,
 | 
					IMGUI_ITEM(IMGUI_TASKBAR,
 | 
				
			||||||
    self.label = "## Taskbar",
 | 
					    self.label = "Taskbar",
 | 
				
			||||||
    self.size = {0, 32},
 | 
					    self.size = {0, 32},
 | 
				
			||||||
    self.flags = ImGuiWindowFlags_NoTitleBar        |
 | 
					    self.flags = ImGuiWindowFlags_NoTitleBar        |
 | 
				
			||||||
                 ImGuiWindowFlags_NoResize          |
 | 
					                 ImGuiWindowFlags_NoResize          |
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user