From 951145dd1a171c94336a5fb2e972d9fae277fdf8 Mon Sep 17 00:00:00 2001
From: Arnaud Joset <arj@odoo.com>
Date: Fri, 19 Feb 2021 09:55:06 +0000
Subject: [PATCH] [IMP] web: avoid losing selection when a new quick create
 dialog is opended.

Before this commit, the datetime range selection was lost when the quick create dialog was opened.

closes odoo/odoo#64948

Taskid: 2342252
Related: odoo/enterprise#15915
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
---
 .../js/views/calendar/calendar_quick_create.js   | 16 +++++++++++++++-
 .../src/js/views/calendar/calendar_renderer.js   |  5 -----
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/addons/web/static/src/js/views/calendar/calendar_quick_create.js b/addons/web/static/src/js/views/calendar/calendar_quick_create.js
index 59ea21c42874..f6132c5364e1 100644
--- a/addons/web/static/src/js/views/calendar/calendar_quick_create.js
+++ b/addons/web/static/src/js/views/calendar/calendar_quick_create.js
@@ -32,7 +32,7 @@ var QuickCreate = Dialog.extend({
     init: function (parent, buttons, options, dataTemplate, dataCalendar) {
         this._buttons = buttons || false;
         this.options = options;
-
+        this.parentCalendar = parent;
         // Can hold data pre-set from where you clicked on agenda
         this.dataTemplate = dataTemplate || {};
         this.dataCalendar = dataCalendar;
@@ -67,6 +67,20 @@ var QuickCreate = Dialog.extend({
         this.$('input').focus();
     },
 
+    destroy: function () {
+        // On quick create, remaining dialogs may be closed. We avoid to lose the selection for new quickcreate
+        // by checking that the dialog is not already destroyed.
+        if (!this.isDestroyed()) {
+            // remove selection when the dialog is closed
+            if (this.parentCalendar.renderer.state.scale === 'year') {
+                this.parentCalendar.renderer.calendar.view.unselect();
+            } else {
+                this.parentCalendar.renderer.calendar.unselect();
+            }
+        }
+        this._super.apply(this, arguments);
+    },
+
     //--------------------------------------------------------------------------
     // Private
     //--------------------------------------------------------------------------
diff --git a/addons/web/static/src/js/views/calendar/calendar_renderer.js b/addons/web/static/src/js/views/calendar/calendar_renderer.js
index 6c0efb6ff965..23bb6885c28f 100644
--- a/addons/web/static/src/js/views/calendar/calendar_renderer.js
+++ b/addons/web/static/src/js/views/calendar/calendar_renderer.js
@@ -381,11 +381,6 @@ return AbstractRenderer.extend({
             data.title = this.state.context.default_name;
         }
         this.trigger_up('openCreate', this._convertEventToFC3Event(data));
-        if (this.state.scale === 'year') {
-            this.calendar.view.unselect();
-        } else {
-            this.calendar.unselect();
-        }
     },
     /**
      * Return the Object options for FullCalendar
-- 
GitLab