pthom / hello_imgui

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

Can I change a borderless window size? #76

Open vertexi opened 7 months ago

vertexi commented 7 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 7 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 6 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 5 months ago

Magnificent work! Thank you.