Git Product home page Git Product logo

Comments (3)

bogez57 avatar bogez57 commented on July 3, 2024

After some fiddling, it seems this is by design? The reason I was asking is I wanted to be able to set a window to open while within another window/container. So it seems you can only get a container if it's already within another parent window AND only if the call to open the window and the actual begin_window call are on the same stack level so to speak. So I can't do something like:

if(mu_begin_window(ctx, "Parent Window", mu_rect(200, 100, 300, 400)))
    {
        if(mu_begin_window(ctx, "Child Window", mu_rect(200, 100, 300, 400)))
        {
            if(mu_button(ctx, "Open Another Window"))
            {
                //Won't work because this mu_get_container call is done within "Child Window". You would have to move this button up a level to the parent window
                mu_Container* cnt = mu_get_container(ctx, "Another Window");
                cnt->open = 1;
            };
            mu_end_window(ctx);
        }
        
        //This window won't open even if above button was pressed
        if(mu_begin_window_ex(ctx, "Another Window", mu_rect(300, 100, 300, 200), MU_OPT_CLOSED))
        {
            mu_end_window(ctx);
        };
        
        mu_end_window(ctx);
    };

from microui.

rxi avatar rxi commented on July 3, 2024

Yes, this is by design. All window references inside a window are unique within the context of that window; this makes sense in the context of having nested sub menus (eg. imagine you have many entities each with their own window, you would want all children windows spawned from these entity windows to be unique to their parent). This means for the case you described you need to defer the opening of the window to the context of when that window is processed:

if(mu_begin_window(ctx, "Parent Window", mu_rect(200, 100, 300, 400)))
    {
        int open_other_window = 0;
        if(mu_begin_window(ctx, "Child Window", mu_rect(200, 100, 300, 400)))
        {
            if(mu_button(ctx, "Open Another Window"))
            {
                open_other_window = 1;
            };
            mu_end_window(ctx);
        }
        
        if (open_other_window) {
                mu_Container* cnt = mu_get_container(ctx, "Another Window");
                cnt->open = 1;
        }
        if(mu_begin_window_ex(ctx, "Another Window", mu_rect(300, 100, 300, 200), MU_OPT_CLOSED))
        {
            mu_end_window(ctx);
        };
        
        mu_end_window(ctx);
    };

from microui.

bogez57 avatar bogez57 commented on July 3, 2024

Thank you for the explanation. I'm not very familiar with ui stuff so sometimes it's hard to see the 'why' for some of the library design. Appreciate it.

from microui.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.