Fix various problems with tab-related icons
This commit is contained in:
parent
72d87cfbce
commit
94ad89a5fb
@ -785,7 +785,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
|||||||
theme->set_color("font_color_fg", "Tabs", font_color);
|
theme->set_color("font_color_fg", "Tabs", font_color);
|
||||||
theme->set_color("font_color_bg", "Tabs", font_color_disabled);
|
theme->set_color("font_color_bg", "Tabs", font_color_disabled);
|
||||||
theme->set_icon("menu", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons"));
|
theme->set_icon("menu", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons"));
|
||||||
theme->set_icon("menu_hl", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons"));
|
theme->set_icon("menu_highlight", "TabContainer", theme->get_icon("GuiTabMenuHl", "EditorIcons"));
|
||||||
theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected);
|
theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected);
|
||||||
theme->set_stylebox("SceneTabBG", "EditorStyles", style_tab_unselected);
|
theme->set_stylebox("SceneTabBG", "EditorStyles", style_tab_unselected);
|
||||||
theme->set_icon("close", "Tabs", theme->get_icon("GuiClose", "EditorIcons"));
|
theme->set_icon("close", "Tabs", theme->get_icon("GuiClose", "EditorIcons"));
|
||||||
@ -795,10 +795,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
|||||||
theme->set_icon("decrement", "TabContainer", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
theme->set_icon("decrement", "TabContainer", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
||||||
theme->set_icon("increment", "Tabs", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
theme->set_icon("increment", "Tabs", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
||||||
theme->set_icon("decrement", "Tabs", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
theme->set_icon("decrement", "Tabs", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
||||||
theme->set_icon("increment_highlight", "Tabs", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
theme->set_icon("increment_highlight", "Tabs", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
|
||||||
theme->set_icon("decrement_highlight", "Tabs", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
theme->set_icon("decrement_highlight", "Tabs", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
|
||||||
theme->set_icon("increment_highlight", "TabContainer", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
theme->set_icon("increment_highlight", "TabContainer", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
|
||||||
theme->set_icon("decrement_highlight", "TabContainer", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
theme->set_icon("decrement_highlight", "TabContainer", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
|
||||||
theme->set_constant("hseparation", "Tabs", 4 * EDSCALE);
|
theme->set_constant("hseparation", "Tabs", 4 * EDSCALE);
|
||||||
|
|
||||||
// Content of each tab
|
// Content of each tab
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
<svg width="6" height="16" version="1.1" viewBox="0 0 6 16" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g transform="translate(0 -1036.4)">
|
|
||||||
<path transform="translate(0 1036.4)" d="m3 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm0 6a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm0 6a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" fill="#fff" fill-opacity=".39216"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 419 B |
3
editor/icons/icon_GUI_scroll_arrow_left_hl.svg
Normal file
3
editor/icons/icon_GUI_scroll_arrow_left_hl.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m8 2a6 6 0 0 1 6 6 6 6 0 0 1-6 6 6 6 0 0 1-6-6 6 6 0 0 1 6-6zm1.0137 2a1 1 0 0 0-0.7207 0.29297l-3 3a1.0001 1.0001 0 0 0 0 1.4141l3 3a1 1 0 0 0 1.4141 0 1 1 0 0 0 0-1.4141l-2.293-2.293 2.293-2.293a1 1 0 0 0 0-1.4141 1 1 0 0 0-0.69336-0.29297z" fill="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 439 B |
3
editor/icons/icon_GUI_scroll_arrow_right_hl.svg
Normal file
3
editor/icons/icon_GUI_scroll_arrow_right_hl.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m8 2a6 6 0 0 0-6 6 6 6 0 0 0 6 6 6 6 0 0 0 6-6 6 6 0 0 0-6-6zm-1.0137 2a1 1 0 0 1 0.7207 0.29297l3 3a1.0001 1.0001 0 0 1 0 1.4141l-3 3a1 1 0 0 1-1.4141 0 1 1 0 0 1 0-1.4141l2.293-2.293-2.293-2.293a1 1 0 0 1 0-1.4141 1 1 0 0 1 0.69336-0.29297z" fill="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 439 B |
5
editor/icons/icon_GUI_tab_menu_hl.svg
Normal file
5
editor/icons/icon_GUI_tab_menu_hl.svg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g transform="translate(0 -1036.4)" fill="#e0e0e0">
|
||||||
|
<path transform="translate(0 1036.4)" d="m8 0a2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0-2-2zm0 6a2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0-2-2zm0 6a2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill="#e0e0e0"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 405 B |
@ -94,7 +94,7 @@ void TabContainer::_gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do not activate tabs when tabs is empty
|
// Do not activate tabs when tabs is empty.
|
||||||
if (get_tab_count() == 0)
|
if (get_tab_count() == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -140,6 +140,76 @@ void TabContainer::_gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
pos.x -= tab_width;
|
pos.x -= tab_width;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<InputEventMouseMotion> mm = p_event;
|
||||||
|
|
||||||
|
if (mm.is_valid()) {
|
||||||
|
|
||||||
|
Point2 pos(mm->get_position().x, mm->get_position().y);
|
||||||
|
Size2 size = get_size();
|
||||||
|
|
||||||
|
// Mouse must be on tabs in the tab header area.
|
||||||
|
if (pos.x < tabs_ofs_cache || pos.y > _get_top_margin()) {
|
||||||
|
|
||||||
|
if (menu_hovered || highlight_arrow > -1) {
|
||||||
|
menu_hovered = false;
|
||||||
|
highlight_arrow = -1;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<Texture> menu = get_icon("menu");
|
||||||
|
if (popup) {
|
||||||
|
|
||||||
|
if (pos.x >= size.width - menu->get_width()) {
|
||||||
|
if (!menu_hovered) {
|
||||||
|
menu_hovered = true;
|
||||||
|
highlight_arrow = -1;
|
||||||
|
update();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (menu_hovered) {
|
||||||
|
menu_hovered = false;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (menu_hovered) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not activate tabs when tabs is empty.
|
||||||
|
if ((get_tab_count() == 0 || !buttons_visible_cache) && menu_hovered) {
|
||||||
|
highlight_arrow = -1;
|
||||||
|
update();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int popup_ofs = 0;
|
||||||
|
if (popup) {
|
||||||
|
popup_ofs = menu->get_width();
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<Texture> increment = get_icon("increment");
|
||||||
|
Ref<Texture> decrement = get_icon("decrement");
|
||||||
|
if (pos.x >= size.width - increment->get_width() - popup_ofs) {
|
||||||
|
|
||||||
|
if (highlight_arrow != 1) {
|
||||||
|
highlight_arrow = 1;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
} else if (pos.x >= size.width - increment->get_width() - decrement->get_width() - popup_ofs) {
|
||||||
|
|
||||||
|
if (highlight_arrow != 0) {
|
||||||
|
highlight_arrow = 0;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
} else if (highlight_arrow > -1) {
|
||||||
|
highlight_arrow = -1;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabContainer::_notification(int p_what) {
|
void TabContainer::_notification(int p_what) {
|
||||||
@ -203,9 +273,11 @@ void TabContainer::_notification(int p_what) {
|
|||||||
Ref<StyleBox> tab_fg = get_stylebox("tab_fg");
|
Ref<StyleBox> tab_fg = get_stylebox("tab_fg");
|
||||||
Ref<StyleBox> tab_disabled = get_stylebox("tab_disabled");
|
Ref<StyleBox> tab_disabled = get_stylebox("tab_disabled");
|
||||||
Ref<Texture> increment = get_icon("increment");
|
Ref<Texture> increment = get_icon("increment");
|
||||||
|
Ref<Texture> increment_hl = get_icon("increment_highlight");
|
||||||
Ref<Texture> decrement = get_icon("decrement");
|
Ref<Texture> decrement = get_icon("decrement");
|
||||||
|
Ref<Texture> decrement_hl = get_icon("decrement_highlight");
|
||||||
Ref<Texture> menu = get_icon("menu");
|
Ref<Texture> menu = get_icon("menu");
|
||||||
Ref<Texture> menu_hl = get_icon("menu_hl");
|
Ref<Texture> menu_hl = get_icon("menu_highlight");
|
||||||
Ref<Font> font = get_font("font");
|
Ref<Font> font = get_font("font");
|
||||||
Color font_color_fg = get_color("font_color_fg");
|
Color font_color_fg = get_color("font_color_fg");
|
||||||
Color font_color_bg = get_color("font_color_bg");
|
Color font_color_bg = get_color("font_color_bg");
|
||||||
@ -332,7 +404,7 @@ void TabContainer::_notification(int p_what) {
|
|||||||
x = get_size().width;
|
x = get_size().width;
|
||||||
if (popup) {
|
if (popup) {
|
||||||
x -= menu->get_width();
|
x -= menu->get_width();
|
||||||
if (mouse_x_cache > x)
|
if (menu_hovered)
|
||||||
menu_hl->draw(get_canvas_item(), Size2(x, (header_height - menu_hl->get_height()) / 2));
|
menu_hl->draw(get_canvas_item(), Size2(x, (header_height - menu_hl->get_height()) / 2));
|
||||||
else
|
else
|
||||||
menu->draw(get_canvas_item(), Size2(x, (header_height - menu->get_height()) / 2));
|
menu->draw(get_canvas_item(), Size2(x, (header_height - menu->get_height()) / 2));
|
||||||
@ -340,23 +412,26 @@ void TabContainer::_notification(int p_what) {
|
|||||||
|
|
||||||
// Draw the navigation buttons.
|
// Draw the navigation buttons.
|
||||||
if (buttons_visible_cache) {
|
if (buttons_visible_cache) {
|
||||||
int y_center = header_height / 2;
|
|
||||||
|
|
||||||
x -= increment->get_width();
|
x -= increment->get_width();
|
||||||
increment->draw(canvas,
|
if (last_tab_cache < tabs.size() - 1) {
|
||||||
Point2(x, y_center - (increment->get_height() / 2)),
|
draw_texture(highlight_arrow == 1 ? increment_hl : increment, Point2(x, (header_height - increment->get_height()) / 2));
|
||||||
Color(1, 1, 1, last_tab_cache < tabs.size() - 1 ? 1.0 : 0.5));
|
} else {
|
||||||
|
draw_texture(increment, Point2(x, (header_height - increment->get_height()) / 2), Color(1, 1, 1, 0.5));
|
||||||
|
}
|
||||||
|
|
||||||
x -= decrement->get_width();
|
x -= decrement->get_width();
|
||||||
decrement->draw(canvas,
|
if (first_tab_cache > 0) {
|
||||||
Point2(x, y_center - (decrement->get_height() / 2)),
|
draw_texture(highlight_arrow == 0 ? decrement_hl : decrement, Point2(x, (header_height - decrement->get_height()) / 2));
|
||||||
Color(1, 1, 1, first_tab_cache > 0 ? 1.0 : 0.5));
|
} else {
|
||||||
|
draw_texture(decrement, Point2(x, (header_height - decrement->get_height()) / 2), Color(1, 1, 1, 0.5));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case NOTIFICATION_THEME_CHANGED: {
|
case NOTIFICATION_THEME_CHANGED: {
|
||||||
|
|
||||||
minimum_size_changed();
|
minimum_size_changed();
|
||||||
call_deferred("_on_theme_changed"); //wait until all changed theme
|
call_deferred("_on_theme_changed"); // Wait until all changed theme.
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -367,6 +442,14 @@ void TabContainer::_on_theme_changed() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabContainer::_on_mouse_exited() {
|
||||||
|
if (menu_hovered || highlight_arrow > -1) {
|
||||||
|
menu_hovered = false;
|
||||||
|
highlight_arrow = -1;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int TabContainer::_get_tab_width(int p_index) const {
|
int TabContainer::_get_tab_width(int p_index) const {
|
||||||
|
|
||||||
ERR_FAIL_INDEX_V(p_index, get_tab_count(), 0);
|
ERR_FAIL_INDEX_V(p_index, get_tab_count(), 0);
|
||||||
@ -894,6 +977,7 @@ void TabContainer::set_use_hidden_tabs_for_min_size(bool p_use_hidden_tabs) {
|
|||||||
bool TabContainer::get_use_hidden_tabs_for_min_size() const {
|
bool TabContainer::get_use_hidden_tabs_for_min_size() const {
|
||||||
return use_hidden_tabs_for_min_size;
|
return use_hidden_tabs_for_min_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabContainer::_bind_methods() {
|
void TabContainer::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_gui_input"), &TabContainer::_gui_input);
|
ClassDB::bind_method(D_METHOD("_gui_input"), &TabContainer::_gui_input);
|
||||||
@ -925,6 +1009,7 @@ void TabContainer::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_child_renamed_callback"), &TabContainer::_child_renamed_callback);
|
ClassDB::bind_method(D_METHOD("_child_renamed_callback"), &TabContainer::_child_renamed_callback);
|
||||||
ClassDB::bind_method(D_METHOD("_on_theme_changed"), &TabContainer::_on_theme_changed);
|
ClassDB::bind_method(D_METHOD("_on_theme_changed"), &TabContainer::_on_theme_changed);
|
||||||
|
ClassDB::bind_method(D_METHOD("_on_mouse_exited"), &TabContainer::_on_mouse_exited);
|
||||||
ClassDB::bind_method(D_METHOD("_update_current_tab"), &TabContainer::_update_current_tab);
|
ClassDB::bind_method(D_METHOD("_update_current_tab"), &TabContainer::_update_current_tab);
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
|
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
|
||||||
@ -947,14 +1032,17 @@ TabContainer::TabContainer() {
|
|||||||
first_tab_cache = 0;
|
first_tab_cache = 0;
|
||||||
last_tab_cache = 0;
|
last_tab_cache = 0;
|
||||||
buttons_visible_cache = false;
|
buttons_visible_cache = false;
|
||||||
|
menu_hovered = false;
|
||||||
|
highlight_arrow = -1;
|
||||||
tabs_ofs_cache = 0;
|
tabs_ofs_cache = 0;
|
||||||
current = 0;
|
current = 0;
|
||||||
previous = 0;
|
previous = 0;
|
||||||
mouse_x_cache = 0;
|
|
||||||
align = ALIGN_CENTER;
|
align = ALIGN_CENTER;
|
||||||
tabs_visible = true;
|
tabs_visible = true;
|
||||||
popup = NULL;
|
popup = NULL;
|
||||||
drag_to_rearrange_enabled = false;
|
drag_to_rearrange_enabled = false;
|
||||||
tabs_rearrange_group = -1;
|
tabs_rearrange_group = -1;
|
||||||
use_hidden_tabs_for_min_size = false;
|
use_hidden_tabs_for_min_size = false;
|
||||||
|
|
||||||
|
connect("mouse_exited", this, "_on_mouse_exited");
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,6 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int mouse_x_cache;
|
|
||||||
int first_tab_cache;
|
int first_tab_cache;
|
||||||
int tabs_ofs_cache;
|
int tabs_ofs_cache;
|
||||||
int last_tab_cache;
|
int last_tab_cache;
|
||||||
@ -54,6 +53,8 @@ private:
|
|||||||
int previous;
|
int previous;
|
||||||
bool tabs_visible;
|
bool tabs_visible;
|
||||||
bool buttons_visible_cache;
|
bool buttons_visible_cache;
|
||||||
|
bool menu_hovered;
|
||||||
|
int highlight_arrow;
|
||||||
TabAlign align;
|
TabAlign align;
|
||||||
Control *_get_tab(int p_idx) const;
|
Control *_get_tab(int p_idx) const;
|
||||||
int _get_top_margin() const;
|
int _get_top_margin() const;
|
||||||
@ -65,6 +66,7 @@ private:
|
|||||||
Vector<Control *> _get_tabs() const;
|
Vector<Control *> _get_tabs() const;
|
||||||
int _get_tab_width(int p_index) const;
|
int _get_tab_width(int p_index) const;
|
||||||
void _on_theme_changed();
|
void _on_theme_changed();
|
||||||
|
void _on_mouse_exited();
|
||||||
void _update_current_tab();
|
void _update_current_tab();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -226,12 +226,6 @@ void Tabs::_notification(int p_what) {
|
|||||||
minimum_size_changed();
|
minimum_size_changed();
|
||||||
update();
|
update();
|
||||||
} break;
|
} break;
|
||||||
case NOTIFICATION_MOUSE_EXIT: {
|
|
||||||
rb_hover = -1;
|
|
||||||
cb_hover = -1;
|
|
||||||
hover = -1;
|
|
||||||
update();
|
|
||||||
} break;
|
|
||||||
case NOTIFICATION_RESIZED: {
|
case NOTIFICATION_RESIZED: {
|
||||||
_update_cache();
|
_update_cache();
|
||||||
_ensure_no_over_offset();
|
_ensure_no_over_offset();
|
||||||
@ -597,6 +591,15 @@ void Tabs::_update_cache() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Tabs::_on_mouse_exited() {
|
||||||
|
|
||||||
|
rb_hover = -1;
|
||||||
|
cb_hover = -1;
|
||||||
|
hover = -1;
|
||||||
|
highlight_arrow = -1;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void Tabs::add_tab(const String &p_str, const Ref<Texture> &p_icon) {
|
void Tabs::add_tab(const String &p_str, const Ref<Texture> &p_icon) {
|
||||||
|
|
||||||
Tab t;
|
Tab t;
|
||||||
@ -948,6 +951,7 @@ void Tabs::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_gui_input"), &Tabs::_gui_input);
|
ClassDB::bind_method(D_METHOD("_gui_input"), &Tabs::_gui_input);
|
||||||
ClassDB::bind_method(D_METHOD("_update_hover"), &Tabs::_update_hover);
|
ClassDB::bind_method(D_METHOD("_update_hover"), &Tabs::_update_hover);
|
||||||
|
ClassDB::bind_method(D_METHOD("_on_mouse_exited"), &Tabs::_on_mouse_exited);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_count"), &Tabs::get_tab_count);
|
ClassDB::bind_method(D_METHOD("get_tab_count"), &Tabs::get_tab_count);
|
||||||
ClassDB::bind_method(D_METHOD("set_current_tab", "tab_idx"), &Tabs::set_current_tab);
|
ClassDB::bind_method(D_METHOD("set_current_tab", "tab_idx"), &Tabs::set_current_tab);
|
||||||
ClassDB::bind_method(D_METHOD("get_current_tab"), &Tabs::get_current_tab);
|
ClassDB::bind_method(D_METHOD("get_current_tab"), &Tabs::get_current_tab);
|
||||||
@ -1024,4 +1028,6 @@ Tabs::Tabs() {
|
|||||||
hover = -1;
|
hover = -1;
|
||||||
drag_to_rearrange_enabled = false;
|
drag_to_rearrange_enabled = false;
|
||||||
tabs_rearrange_group = -1;
|
tabs_rearrange_group = -1;
|
||||||
|
|
||||||
|
connect("mouse_exited", this, "_on_mouse_exited");
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ private:
|
|||||||
bool cb_pressing;
|
bool cb_pressing;
|
||||||
CloseButtonDisplayPolicy cb_displaypolicy;
|
CloseButtonDisplayPolicy cb_displaypolicy;
|
||||||
|
|
||||||
int hover; // hovered tab
|
int hover; // Hovered tab.
|
||||||
int min_width;
|
int min_width;
|
||||||
bool scrolling_enabled;
|
bool scrolling_enabled;
|
||||||
bool drag_to_rearrange_enabled;
|
bool drag_to_rearrange_enabled;
|
||||||
@ -101,6 +101,8 @@ private:
|
|||||||
void _update_hover();
|
void _update_hover();
|
||||||
void _update_cache();
|
void _update_cache();
|
||||||
|
|
||||||
|
void _on_mouse_exited();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _gui_input(const Ref<InputEvent> &p_event);
|
void _gui_input(const Ref<InputEvent> &p_event);
|
||||||
void _notification(int p_what);
|
void _notification(int p_what);
|
||||||
|
Loading…
Reference in New Issue
Block a user