Allow switching to non-form view even if no record is selected

Closes #13511
(grafted from 532aa26b3fa2e4f67078bcb8a300bb6d7610e67d)

--HG--
branch : 7.0
This commit is contained in:
Cédric Krier committed 2024-09-24 17:23:12 +02:00
1 parent 6370264f6e
commit 7ad3a78f88
4 files changed
+33 -2

No files matched your search

+12
View File
@@ -926,6 +926,18 @@
get number_of_views() {
return this.views.length + this.view_to_load.length;
},
get view_index() {
return this.views.indexOf(this.current_view);
},
get next_view_type() {
var views = this.views.concat(this.view_to_load)
var next_view_index = (this.view_index + 1) % views.length;
var next_view = views[next_view_index];
if (typeof next_view != 'string') {
next_view = next_view.view_type;
}
return next_view;
},
switch_view: function(
view_type=null, view_id=null, creatable=null, display=true) {
if (view_id !== null) {
+4 -1
View File
@@ -1452,6 +1452,7 @@
}
}
const view_type = this.screen.current_view.view_type;
var next_view_type = this.screen.next_view_type;
const has_views = this.screen.number_of_views > 1;
var buttons = ['print', 'relate', 'email', 'attach'];
for (const button_id of buttons) {
@@ -1472,7 +1473,9 @@
set_sensitive(button_id, position && can_be_sensitive);
}
set_sensitive(
'switch_', (position || (view_type == 'form')) && has_views);
'switch_',
(position || (view_type == 'form') || (next_view_type != 'form')) &&
has_views);
set_sensitive('delete_', this.screen.deletable);
set_sensitive('previous', this.screen.has_previous());
set_sensitive('next', this.screen.has_next());
+4 -1
View File
@@ -578,6 +578,7 @@ class Form(TabContent):
name = str(position) if position else '_'
selected = len(self.screen.selected_records)
view_type = self.screen.current_view.view_type
next_view_type = self.screen.next_view_type
has_views = self.screen.number_of_views > 1
if selected > 1:
name += '#%i' % selected
@@ -593,7 +594,9 @@ class Form(TabContent):
for b in self.screen.get_buttons())
set_sensitive(button_id, bool(position) and can_be_sensitive)
set_sensitive(
'switch', (position or view_type == 'form') and has_views)
'switch',
(position or view_type == 'form' or next_view_type != 'form')
and has_views)
set_sensitive('remove', self.screen.deletable)
set_sensitive('previous', self.screen.has_prev())
set_sensitive('next', self.screen.has_next())
@@ -536,6 +536,19 @@ class Screen:
def number_of_views(self):
return len(self.views) + len(self.view_to_load)
@property
def view_index(self):
return self.__current_view
@property
def next_view_type(self):
views = self.views + self.view_to_load
next_view_index = (self.view_index + 1) % len(views)
next_view = views[next_view_index]
if not isinstance(next_view, str):
next_view = next_view.view_type
return next_view
def switch_view(
self, view_type=None, view_id=None, creatable=None, display=True):
if view_id is not None: