mirror of
https://github.com/godotengine/godot.git
synced 2025-12-07 22:00:10 +00:00
Allow tab_rmb_clicked signal to always be emitted
This commit is contained in:
parent
6fd949a6dc
commit
e50cf880c3
5 changed files with 47 additions and 59 deletions
|
|
@ -289,25 +289,16 @@ void EditorDockManager::_dock_split_dragged(int p_offset) {
|
|||
EditorNode::get_singleton()->save_editor_layout_delayed();
|
||||
}
|
||||
|
||||
void EditorDockManager::_dock_container_gui_input(const Ref<InputEvent> &p_input, TabContainer *p_dock_container) {
|
||||
Ref<InputEventMouseButton> mb = p_input;
|
||||
|
||||
if (mb.is_valid() && mb->get_button_index() == MouseButton::RIGHT && mb->is_pressed()) {
|
||||
int tab_id = p_dock_container->get_tab_bar()->get_hovered_tab();
|
||||
if (tab_id < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
EditorDock *hovered_dock = Object::cast_to<EditorDock>(p_dock_container->get_tab_control(tab_id));
|
||||
if (hovered_dock == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Right click context menu.
|
||||
dock_context_popup->set_dock(hovered_dock);
|
||||
dock_context_popup->set_position(p_dock_container->get_tab_bar()->get_screen_position() + mb->get_position());
|
||||
dock_context_popup->popup();
|
||||
void EditorDockManager::_dock_container_popup(int p_tab_idx, TabContainer *p_dock_container) {
|
||||
EditorDock *hovered_dock = Object::cast_to<EditorDock>(p_dock_container->get_tab_control(p_tab_idx));
|
||||
if (hovered_dock == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Right click context menu.
|
||||
dock_context_popup->set_dock(hovered_dock);
|
||||
dock_context_popup->set_position(p_dock_container->get_tab_bar()->get_screen_position() + p_dock_container->get_local_mouse_position());
|
||||
dock_context_popup->popup();
|
||||
}
|
||||
|
||||
void EditorDockManager::_dock_container_update_visibility(TabContainer *p_dock_container) {
|
||||
|
|
@ -981,13 +972,13 @@ void EditorDockManager::register_dock_slot(DockSlot p_dock_slot, TabContainer *p
|
|||
p_tab_container->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
p_tab_container->set_popup(dock_context_popup);
|
||||
p_tab_container->connect("pre_popup_pressed", callable_mp(dock_context_popup, &DockContextPopup::select_current_dock_in_dock_slot).bind(p_dock_slot));
|
||||
p_tab_container->get_tab_bar()->connect("tab_rmb_clicked", callable_mp(this, &EditorDockManager::_dock_container_popup).bind(p_tab_container));
|
||||
p_tab_container->set_drag_to_rearrange_enabled(true);
|
||||
p_tab_container->set_tabs_rearrange_group(1);
|
||||
p_tab_container->connect("tab_changed", callable_mp(this, &EditorDockManager::_update_layout).unbind(1));
|
||||
p_tab_container->connect("active_tab_rearranged", callable_mp(this, &EditorDockManager::_update_layout).unbind(1));
|
||||
p_tab_container->connect("child_order_changed", callable_mp(this, &EditorDockManager::_dock_container_update_visibility).bind(p_tab_container));
|
||||
p_tab_container->set_use_hidden_tabs_for_min_size(true);
|
||||
p_tab_container->get_tab_bar()->connect(SceneStringName(gui_input), callable_mp(this, &EditorDockManager::_dock_container_gui_input).bind(p_tab_container));
|
||||
p_tab_container->hide();
|
||||
|
||||
// Create dock dragging hint.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue