pthom / hello_imgui

Hello, Dear ImGui: unleash your creativity in app development and prototyping
https://pthom.github.io/hello_imgui
MIT License
676 stars 103 forks source link

Can I change a borderless window size? #76

Open vertexi opened 11 months ago

vertexi commented 11 months ago

I want to create a window that borderless = true and resizable = true. But according to GLFW's document

GLFW_DECORATED specifies whether the windowed mode window will have window decorations such as a border, a close widget, etc. An undecorated window will not be resizable by the user but will still allow the user to generate close events on some platforms. Possible values are GLFW_TRUE and GLFW_FALSE. This hint is ignored for full screen windows.

So, I wonder if I can write some code to detect the mouse whether drag the corner of window or not, then call function like setwindowsize().

pthom commented 11 months ago

you should try. ImGui provides ImGui::GetMousePos() + ImGui::IsMouseDown() which could help you.

But you may experience difficulties. You are fighting against the OS and/or Glfw.

pthom commented 10 months ago

This is now possible, see new content of AppWindowParams:

struct AppWindowParams
{
    std::string windowTitle;

    WindowGeometry windowGeometry;

    // if true, then save & restore from last run
    bool restorePreviousGeometry = false;

    bool resizable = true;
    bool hidden = false;

    bool   borderless = false;
    bool   borderlessMovable = true;
    bool   borderlessResizable = true;
    bool   borderlessClosable = true;
    ImVec4 borderlessHighlightColor = ImVec4(0.2f, 0.4f, 1.f, 0.3f);

    EdgeInsets edgeInsets;
    bool       handleEdgeInsets = true;
};
vertexi commented 10 months ago

Magnificent work! Thank you.