|
|
214acd |
diff -up evolution-3.28.5/src/calendar/gui/e-comp-editor.c.crash-empty-attendee evolution-3.28.5/src/calendar/gui/e-comp-editor.c
|
|
|
214acd |
--- evolution-3.28.5/src/calendar/gui/e-comp-editor.c.crash-empty-attendee 2018-07-30 15:37:05.000000000 +0200
|
|
|
214acd |
+++ evolution-3.28.5/src/calendar/gui/e-comp-editor.c 2019-06-28 11:36:27.645365528 +0200
|
|
|
214acd |
@@ -2610,6 +2610,7 @@ e_comp_editor_fill_component (ECompEdito
|
|
|
214acd |
icalcomponent *component)
|
|
|
214acd |
{
|
|
|
214acd |
ECompEditorClass *comp_editor_class;
|
|
|
214acd |
+ GtkWidget *focused_widget;
|
|
|
214acd |
gboolean is_valid;
|
|
|
214acd |
|
|
|
214acd |
g_return_val_if_fail (E_IS_COMP_EDITOR (comp_editor), FALSE);
|
|
|
214acd |
@@ -2619,8 +2620,30 @@ e_comp_editor_fill_component (ECompEdito
|
|
|
214acd |
g_return_val_if_fail (comp_editor_class != NULL, FALSE);
|
|
|
214acd |
g_return_val_if_fail (comp_editor_class->fill_component != NULL, FALSE);
|
|
|
214acd |
|
|
|
214acd |
+ focused_widget = gtk_window_get_focus (GTK_WINDOW (comp_editor));
|
|
|
214acd |
+ if (focused_widget) {
|
|
|
214acd |
+ GtkWidget *parent, *ce_widget = GTK_WIDGET (comp_editor);
|
|
|
214acd |
+
|
|
|
214acd |
+ /* When a cell-renderer is focused and editing the cell content,
|
|
|
214acd |
+ then unfocus it may mean to free the currently focused widget,
|
|
|
214acd |
+ thus get the GtkTreeView in such cases. */
|
|
|
214acd |
+ parent = focused_widget;
|
|
|
214acd |
+ while (parent = gtk_widget_get_parent (parent), parent && parent != ce_widget) {
|
|
|
214acd |
+ if (GTK_IS_TREE_VIEW (parent)) {
|
|
|
214acd |
+ focused_widget = parent;
|
|
|
214acd |
+ break;
|
|
|
214acd |
+ }
|
|
|
214acd |
+ }
|
|
|
214acd |
+
|
|
|
214acd |
+ /* Save any pending changes */
|
|
|
214acd |
+ gtk_window_set_focus (GTK_WINDOW (comp_editor), NULL);
|
|
|
214acd |
+ }
|
|
|
214acd |
+
|
|
|
214acd |
is_valid = comp_editor_class->fill_component (comp_editor, component);
|
|
|
214acd |
|
|
|
214acd |
+ if (focused_widget)
|
|
|
214acd |
+ gtk_window_set_focus (GTK_WINDOW (comp_editor), focused_widget);
|
|
|
214acd |
+
|
|
|
214acd |
if (is_valid && comp_editor->priv->validation_alert) {
|
|
|
214acd |
e_alert_response (comp_editor->priv->validation_alert, GTK_RESPONSE_CLOSE);
|
|
|
214acd |
g_clear_object (&comp_editor->priv->validation_alert);
|
|
|
214acd |
diff -up evolution-3.28.5/src/modules/calendar/e-cal-shell-content.c.crash-empty-attendee evolution-3.28.5/src/modules/calendar/e-cal-shell-content.c
|
|
|
214acd |
--- evolution-3.28.5/src/modules/calendar/e-cal-shell-content.c.crash-empty-attendee 2018-07-30 15:37:05.000000000 +0200
|
|
|
214acd |
+++ evolution-3.28.5/src/modules/calendar/e-cal-shell-content.c 2019-06-28 11:36:27.645365528 +0200
|
|
|
214acd |
@@ -847,9 +847,9 @@ cal_shell_content_get_attendee_prop (ica
|
|
|
214acd |
while (prop != NULL) {
|
|
|
214acd |
const gchar *attendee;
|
|
|
214acd |
|
|
|
214acd |
- attendee = icalproperty_get_attendee (prop);
|
|
|
214acd |
+ attendee = itip_strip_mailto (icalproperty_get_attendee (prop));
|
|
|
214acd |
|
|
|
214acd |
- if (g_str_equal (itip_strip_mailto (attendee), address))
|
|
|
214acd |
+ if (attendee && g_ascii_strcasecmp (attendee, address) == 0)
|
|
|
214acd |
return prop;
|
|
|
214acd |
|
|
|
214acd |
prop = icalcomponent_get_next_property (
|