Lightnint "event window" is greyed and almost empty

RESOLVED DUPLICATE of bug 1355635

Status

RESOLVED DUPLICATE of bug 1355635
a year ago
a year ago

People

(Reporter: nicolas.saudemont, Unassigned, NeedInfo)

Tracking

Lightning 5.4
x86_64
Linux

Details

Attachments

(2 attachments)

(Reporter)

Description

a year ago
Created attachment 8872548 [details]
BugCalendar_newEvent_5.4.png

User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

Steps to reproduce:

open an existing event or try to create one (double click on an event or in an empty space within the calendar)




Actual results:

The popup window is almost empty : only 4~5 menus and ~4 buttons, all greyed out (non clickable).
Not a single field (updatable or not)

I got it on an Ubuntu 16.04 (x64) but a friend on Windows is having the same issue with the same versions (Thunderbird 52 and lightning 5.4)


Expected results:

Normal window (ie non greyed out) with either fields to fill for a new event or information for existing event.
(Reporter)

Comment 1

a year ago
Actually it doesn't happen for an already existing event : only when trying to create a new one.

The thunderbird console displays this :
TypeError: window.calendarItem is undefined[Learn More]  calendar-dialog-utils.js:402:1
	getCurrentCalendar chrome://calendar/content/calendar-dialog-utils.js:402:1
	eventDialogOverlay.onLoad chrome://obet/content/obel/eventDialogOverlay.js:45:20
	<anonymous> chrome://obet/content/obel/eventDialogOverlay.js:186:3
OS: Unspecified → Linux
Hardware: Unspecified → x86_64
(Reporter)

Comment 2

a year ago
Created attachment 8872594 [details]
BugLightning_5.4_Screenshot.png

screenshot from the TB console when trying to create a new event by double-clicking
This is a known error caused by Oracle Beehive Extensions for Thunderbird (obet). Workaround: Disable the extension or enable the edit in tab option.
Status: UNCONFIRMED → RESOLVED
Last Resolved: a year ago
Resolution: --- → DUPLICATE
Duplicate of bug: 1355635
(Reporter)

Comment 4

a year ago
(In reply to Stefan Sitter from comment #3)
> This is a known error caused by Oracle Beehive Extensions for Thunderbird
> (obet). Workaround: Disable the extension or enable the edit in tab option.

Thanks a lot Stefan. I'll try to find the contact at Oracle to have them know about the issue as it's obviously on their side.
I've contacted someone at Oracle and let them know of the issue, thanks for the offer though!
I think window.calendarItem is initialized in the onLoad() handler in lightning-item-iframe.js:
https://dxr.mozilla.org/comm-central/source/calendar/lightning/content/lightning-item-iframe.js#321

This functionality is probably triggered by the onLoad() handler of the event dialog itself:
https://dxr.mozilla.org/comm-central/source/calendar/base/content/dialogs/calendar-event-dialog.xul#34

Based on the call stack it seems that the Oracle Beehive extension has its own onLoad() handler. Maybe this onLoad() handler is called before Lightnings onLoad() handler? And therefore window.calendarItem is not yet set up? The Exchange EWS Provider extension might use a similar mechanism because it reports the same error (see bug 1364155, bug 1366718).

Philipp, can we ensure that Lightnings onLoad() handler is called first? Or do we have some guidance for the extension developers on how to correctly implement onLoad() handler or a suitable replacement?
Flags: needinfo?(philipp)

Comment 7

a year ago
The undefined value of window.calendarItem is also the cause of bug 1355151 so it should be a Lightning issue.
The patch for that bug didn't fix the real cause, i.e. window.calendarItem is still undefined in Lightning (see bug 1355151 comment 3) but was applied a kind of workaround, basically  window.calendarItem was changed with
 window.arguments[0].calendarEvent
that should be the same variable as set inside onLoad() function:
https://dxr.mozilla.org/comm-central/source/calendar/lightning/content/lightning-item-iframe.js#258

Comment 8

a year ago
Since event-in-a-tab, there are two windows in window mode for the event dialog (summary dialog and event tab don't have this). An outer window (calendar-event-dialog.xul and lightning-item-panel.js), which contains the menu bar, and an inner window (lightning-item-iframe.xul/js), which is loaded in an iframe of the outer. The inner window is shared between window and tab mode, while the outer is for window mode only. See [1] for the documentation of the event-in-a-tab implementation.

If you look at getCurrentCalendar() from the stack trace in comment 1, it seems it is called in context of the outer window.

We could change that to look either for the inner or an outer window for such property - I wouldn't like to add an additional property to the outer window. This may be enough to fix this specific issue, but this depends what obet (or other extensions) intend to do when overlaying the dialog.

[1] https://wiki.mozilla.org/Calendar:Event_in_a_Tab/documentation
You need to log in before you can comment on or make changes to this bug.