mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-16 12:03:27 +01:00
Worked on single-frame click.
This commit is contained in:
parent
3f16a524c8
commit
e5efa01920
@ -11638,6 +11638,7 @@ static void ImGui::UpdateViewportsNewFrame()
|
|||||||
// - when releasing a moving window we will revert to aiming behind (at viewport_hovered)
|
// - when releasing a moving window we will revert to aiming behind (at viewport_hovered)
|
||||||
// - when we are between viewports, our dragged preview will tend to show in the last viewport _even_ if we don't have tooltips in their viewports (when lacking monitor info)
|
// - when we are between viewports, our dragged preview will tend to show in the last viewport _even_ if we don't have tooltips in their viewports (when lacking monitor info)
|
||||||
// - consider the case of holding on a menu item to browse child menus: even thou a mouse button is held, there's no active id because menu items only react on mouse release.
|
// - consider the case of holding on a menu item to browse child menus: even thou a mouse button is held, there's no active id because menu items only react on mouse release.
|
||||||
|
// FIXME-VIEWPORT: This is essentially broken, when ImGuiBackendFlags_HasMouseHoveredViewport is set we want to trust when viewport_hovered==NULL and use that.
|
||||||
const bool is_mouse_dragging_with_an_expected_destination = g.DragDropActive;
|
const bool is_mouse_dragging_with_an_expected_destination = g.DragDropActive;
|
||||||
if (is_mouse_dragging_with_an_expected_destination && viewport_hovered == NULL)
|
if (is_mouse_dragging_with_an_expected_destination && viewport_hovered == NULL)
|
||||||
viewport_hovered = g.MouseLastHoveredViewport;
|
viewport_hovered = g.MouseLastHoveredViewport;
|
||||||
@ -12970,7 +12971,6 @@ bool ImGui::DockContextCalcDropPosForDocking(ImGuiWindow* target, ImGuiDockNode*
|
|||||||
ImGuiDockNode::ImGuiDockNode(ImGuiID id)
|
ImGuiDockNode::ImGuiDockNode(ImGuiID id)
|
||||||
{
|
{
|
||||||
ID = id;
|
ID = id;
|
||||||
WindowMenuButtonId = ImHashStr("#COLLAPSE", 0, ID);
|
|
||||||
SharedFlags = LocalFlags = ImGuiDockNodeFlags_None;
|
SharedFlags = LocalFlags = ImGuiDockNodeFlags_None;
|
||||||
ParentNode = ChildNodes[0] = ChildNodes[1] = NULL;
|
ParentNode = ChildNodes[0] = ChildNodes[1] = NULL;
|
||||||
TabBar = NULL;
|
TabBar = NULL;
|
||||||
@ -13823,8 +13823,7 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w
|
|||||||
// Docking/Collapse button
|
// Docking/Collapse button
|
||||||
if (has_window_menu_button)
|
if (has_window_menu_button)
|
||||||
{
|
{
|
||||||
IMGUI_TEST_ENGINE_ID_INFO(node->WindowMenuButtonId, ImGuiDataType_String, "#COLLAPSE");
|
if (CollapseButton(host_window->GetID("#COLLAPSE"), window_menu_button_pos, node)) // == DockNodeGetWindowMenuButtonId(node)
|
||||||
if (CollapseButton(node->WindowMenuButtonId, window_menu_button_pos, node))
|
|
||||||
OpenPopup("#WindowMenu");
|
OpenPopup("#WindowMenu");
|
||||||
if (IsItemActive())
|
if (IsItemActive())
|
||||||
focus_tab_id = tab_bar->SelectedTabId;
|
focus_tab_id = tab_bar->SelectedTabId;
|
||||||
|
@ -1227,7 +1227,6 @@ enum ImGuiDockNodeState
|
|||||||
struct IMGUI_API ImGuiDockNode
|
struct IMGUI_API ImGuiDockNode
|
||||||
{
|
{
|
||||||
ImGuiID ID;
|
ImGuiID ID;
|
||||||
ImGuiID WindowMenuButtonId; // == ImHashStr("#COLLAPSE", ID)
|
|
||||||
ImGuiDockNodeFlags SharedFlags; // Flags shared by all nodes of a same dockspace hierarchy (inherited from the root node)
|
ImGuiDockNodeFlags SharedFlags; // Flags shared by all nodes of a same dockspace hierarchy (inherited from the root node)
|
||||||
ImGuiDockNodeFlags LocalFlags; // Flags specific to this node
|
ImGuiDockNodeFlags LocalFlags; // Flags specific to this node
|
||||||
ImGuiDockNodeState State;
|
ImGuiDockNodeState State;
|
||||||
@ -2592,9 +2591,10 @@ namespace ImGui
|
|||||||
IMGUI_API bool DockContextCalcDropPosForDocking(ImGuiWindow* target, ImGuiDockNode* target_node, ImGuiWindow* payload, ImGuiDir split_dir, bool split_outer, ImVec2* out_pos);
|
IMGUI_API bool DockContextCalcDropPosForDocking(ImGuiWindow* target, ImGuiDockNode* target_node, ImGuiWindow* payload, ImGuiDir split_dir, bool split_outer, ImVec2* out_pos);
|
||||||
IMGUI_API bool DockNodeBeginAmendTabBar(ImGuiDockNode* node);
|
IMGUI_API bool DockNodeBeginAmendTabBar(ImGuiDockNode* node);
|
||||||
IMGUI_API void DockNodeEndAmendTabBar();
|
IMGUI_API void DockNodeEndAmendTabBar();
|
||||||
inline ImGuiDockNode* DockNodeGetRootNode(ImGuiDockNode* node) { while (node->ParentNode) node = node->ParentNode; return node; }
|
inline ImGuiDockNode* DockNodeGetRootNode(ImGuiDockNode* node) { while (node->ParentNode) node = node->ParentNode; return node; }
|
||||||
inline int DockNodeGetDepth(const ImGuiDockNode* node) { int depth = 0; while (node->ParentNode) { node = node->ParentNode; depth++; } return depth; }
|
inline int DockNodeGetDepth(const ImGuiDockNode* node) { int depth = 0; while (node->ParentNode) { node = node->ParentNode; depth++; } return depth; }
|
||||||
inline ImGuiDockNode* GetWindowDockNode() { ImGuiContext& g = *GImGui; return g.CurrentWindow->DockNode; }
|
inline ImGuiID DockNodeGetWindowMenuButtonId(const ImGuiDockNode* node) { return ImHashStr("#COLLAPSE", 0, node->ID); }
|
||||||
|
inline ImGuiDockNode* GetWindowDockNode() { ImGuiContext& g = *GImGui; return g.CurrentWindow->DockNode; }
|
||||||
IMGUI_API bool GetWindowAlwaysWantOwnTabBar(ImGuiWindow* window);
|
IMGUI_API bool GetWindowAlwaysWantOwnTabBar(ImGuiWindow* window);
|
||||||
IMGUI_API void BeginDocked(ImGuiWindow* window, bool* p_open);
|
IMGUI_API void BeginDocked(ImGuiWindow* window, bool* p_open);
|
||||||
IMGUI_API void BeginDockableDragDropSource(ImGuiWindow* window);
|
IMGUI_API void BeginDockableDragDropSource(ImGuiWindow* window);
|
||||||
|
Loading…
Reference in New Issue
Block a user