Add 'get_previous_tab()' to 'Tabs'

This commit is contained in:
Michael Alexsander 2020-09-08 17:30:47 -03:00
parent 2410016638
commit 2b319889cb
3 changed files with 18 additions and 0 deletions

View File

@ -36,6 +36,13 @@
Returns [code]true[/code] if the offset buttons (the ones that appear when there's not enough space for all tabs) are visible. Returns [code]true[/code] if the offset buttons (the ones that appear when there's not enough space for all tabs) are visible.
</description> </description>
</method> </method>
<method name="get_previous_tab" qualifiers="const">
<return type="int">
</return>
<description>
Returns the previously active tab index.
</description>
</method>
<method name="get_select_with_rmb" qualifiers="const"> <method name="get_select_with_rmb" qualifiers="const">
<return type="bool"> <return type="bool">
</return> </return>

View File

@ -388,6 +388,7 @@ void Tabs::set_current_tab(int p_current) {
} }
ERR_FAIL_INDEX(p_current, get_tab_count()); ERR_FAIL_INDEX(p_current, get_tab_count());
previous = current;
current = p_current; current = p_current;
_change_notify("current_tab"); _change_notify("current_tab");
@ -401,6 +402,10 @@ int Tabs::get_current_tab() const {
return current; return current;
} }
int Tabs::get_previous_tab() const {
return previous;
}
int Tabs::get_hovered_tab() const { int Tabs::get_hovered_tab() const {
return hover; return hover;
} }
@ -588,6 +593,7 @@ void Tabs::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
void Tabs::clear_tabs() { void Tabs::clear_tabs() {
tabs.clear(); tabs.clear();
current = 0; current = 0;
previous = 0;
call_deferred("_update_hover"); call_deferred("_update_hover");
update(); update();
} }
@ -605,6 +611,7 @@ void Tabs::remove_tab(int p_idx) {
if (current < 0) { if (current < 0) {
current = 0; current = 0;
previous = 0;
} }
if (current >= tabs.size()) { if (current >= tabs.size()) {
current = tabs.size() - 1; current = tabs.size() - 1;
@ -917,6 +924,7 @@ void Tabs::_bind_methods() {
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);
ClassDB::bind_method(D_METHOD("get_previous_tab"), &Tabs::get_previous_tab);
ClassDB::bind_method(D_METHOD("set_tab_title", "tab_idx", "title"), &Tabs::set_tab_title); ClassDB::bind_method(D_METHOD("set_tab_title", "tab_idx", "title"), &Tabs::set_tab_title);
ClassDB::bind_method(D_METHOD("get_tab_title", "tab_idx"), &Tabs::get_tab_title); ClassDB::bind_method(D_METHOD("get_tab_title", "tab_idx"), &Tabs::get_tab_title);
ClassDB::bind_method(D_METHOD("set_tab_icon", "tab_idx", "icon"), &Tabs::set_tab_icon); ClassDB::bind_method(D_METHOD("set_tab_icon", "tab_idx", "icon"), &Tabs::set_tab_icon);
@ -970,6 +978,7 @@ void Tabs::_bind_methods() {
Tabs::Tabs() { Tabs::Tabs() {
current = 0; current = 0;
previous = 0;
tab_align = ALIGN_CENTER; tab_align = ALIGN_CENTER;
rb_hover = -1; rb_hover = -1;
rb_pressing = false; rb_pressing = false;

View File

@ -77,6 +77,7 @@ private:
bool missing_right; bool missing_right;
Vector<Tab> tabs; Vector<Tab> tabs;
int current; int current;
int previous;
int _get_top_margin() const; int _get_top_margin() const;
TabAlign tab_align; TabAlign tab_align;
int rb_hover; int rb_hover;
@ -138,6 +139,7 @@ public:
int get_tab_count() const; int get_tab_count() const;
void set_current_tab(int p_current); void set_current_tab(int p_current);
int get_current_tab() const; int get_current_tab() const;
int get_previous_tab() const;
int get_hovered_tab() const; int get_hovered_tab() const;
int get_tab_offset() const; int get_tab_offset() const;