Comments (3)
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.
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.
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)
- How can you resize microui window dynamically? HOT 2
- demo/build.sh is not suitable for MacOS HOT 1
- Post a screenshot HOT 7
- Licensing HOT 1
- DirectX 9 HOT 3
- Porting push_quad to DirectX
- Can I use it without SDL ? HOT 1
- Hash function "Cannot convert from 'const void *' to 'const unsigned char *'" HOT 4
- Question: how do I open a window HOT 2
- Library dependency HOT 1
- Why is black area covering gui appearing after resizing window? HOT 1
- C string gets corrupted when passed to the TextCommand handler HOT 3
- How to port to another low level access graphic control HOT 4
- Textbox improvements! HOT 3
- Question: Microui extensions
- Question: Running demo on windows HOT 2
- RAM Footprint HOT 7
- Can you layout from minimum required sizes by child widgets?
- 'step' does not work with mu_slider_ex
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from microui.