MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / _build_advanced_menu

Method _build_advanced_menu

editor/gui/window_wrapper.cpp:400–433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

398// ScreenSelect
399
400void ScreenSelect::_build_advanced_menu() {
401 // Clear old screen list.
402 while (screen_list->get_child_count(false) > 0) {
403 Node *child = screen_list->get_child(0);
404 screen_list->remove_child(child);
405 child->queue_free();
406 }
407
408 // Populate screen list.
409 const real_t height = real_t(get_theme_font_size(SceneStringName(font_size))) * 1.5;
410
411 int current_screen = get_window()->get_current_screen();
412 for (int i = 0; i < DisplayServer::get_singleton()->get_screen_count(); i++) {
413 Button *button = memnew(Button);
414
415 Size2 screen_size = Size2(DisplayServer::get_singleton()->screen_get_size(i));
416 Size2 button_size = Size2(height * (screen_size.x / screen_size.y), height);
417 button->set_custom_minimum_size(button_size);
418 screen_list->add_child(button);
419
420 button->set_text(itos(i));
421 button->set_text_alignment(HORIZONTAL_ALIGNMENT_CENTER);
422 button->set_tooltip_text(vformat(TTR("Make this panel floating in the screen %d."), i));
423
424 if (i == current_screen) {
425 Color accent_color = get_theme_color("accent_color", EditorStringName(Editor));
426 button->add_theme_color_override(SceneStringName(font_color), accent_color);
427 }
428
429 button->connect(SceneStringName(pressed), callable_mp(this, &ScreenSelect::_emit_screen_signal).bind(i));
430 button->connect(SceneStringName(pressed), callable_mp(static_cast<BaseButton *>(this), &ScreenSelect::set_pressed).bind(false));
431 button->connect(SceneStringName(pressed), callable_mp(static_cast<Window *>(popup), &Popup::hide));
432 }
433}
434
435void ScreenSelect::_emit_screen_signal(int p_screen_idx) {
436 if (!is_disabled()) {

Callers

nothing calls this directly

Calls 15

itosFunction · 0.85
vformatFunction · 0.85
TTRFunction · 0.85
get_current_screenMethod · 0.80
connectMethod · 0.65
get_child_countMethod · 0.45
get_childMethod · 0.45
remove_childMethod · 0.45
queue_freeMethod · 0.45
get_screen_countMethod · 0.45
screen_get_sizeMethod · 0.45

Tested by

no test coverage detected