...
 
Commits (208)
Evolution 3.22.6 2017-03-13
---------------------------
Bug Fixes:
Bug 778642 - Editing a message causes part of it to be lost (Tomas Popela)
Bug 778541 - Prefer Sent/Drafts folder account for non-existent identity (Milan Crha)
Bug 779688 - Category Properties dialogue doesn't active default widget (Milan Crha)
Bug 779738 - [Wayland] Date picker misplaced (missing transient-for) (Milan Crha)
Miscellaneous:
[EWeekdayChooser] Selected days drawn with incorrect color (Milan Crha)
Fix various editor's unit tests (Tomas Popela)
Don't preserve 'Preformatted' format if moving an empty block out of the quoted content (Tomas Popela)
Possible crash while refreshing spellcheck (Tomas Popela)
Print the history stack after removing item from it (Tomas Popela)
History could be saved twice if inserting HTML content (Tomas Popela)
Print current EEditorWebExtension method if CAMEL_DEBUG is active (Tomas Popela)
Translations:
Mandy Wang (zh_CN)
Evolution 3.22.5 2017-02-13
---------------------------
Bug Fixes:
Bug 777373 - Headers in forwarded message credits in opposite order (Milan Crha)
Bug 776391 - Disable WebKit developer mode by default (Milan Crha)
Bug 775656 - Delete key mapping stops working ][ (Milan Crha)
Bug 773038 - Correct unread message indicator for collapsed stores (Milan Crha)
Bug 777766 - Inconsistent activation of "Delete Calendar" in Edit menu (Milan Crha)
Bug 777818 - Moving folder tree between IMAP loosing sub folders (Milan Crha)
Bug 778036 - [bbdb] Auto Contacts give up after EWS GAL lookup failure (Milan Crha)
Bug 778062 - Keep signatures above only when replying (Milan Crha)
Bug 778347 - Signature at top without signature skips first paragraph (Milan Crha)
Miscellaneous:
Previous signatures with images not sent properly (Milan Crha)
Fix few memory leaks (Milan Crha)
e-editor-dom-functions: Do not override variable name from parent block (Milan Crha)
Translations:
Piotr Drąg (pl)
Anders Jonsson (sv)
Gianvito Cavasoli (it)
Balázs Meskó (hu)
Christian Kirbach (de)
Мирослав Николић (sr)
Мирослав Николић (sr@latin)
Rafael Fontenelle (pt_BR)
Aurimas Černius (lt)
Marek Černocký (cs)
Evolution 3.22.4 2017-01-16
---------------------------
Bug Fixes:
Bug 776224 - Workaround crash in WebKit on drag over preview (Milan Crha)
Bug 776584 - Remember last selected file chooser folder (Milan Crha)
Bug 489466 - Right-clicking empty space in an ETable does not show context menu (Milan Crha)
Bug 776813 - Keyboard shortcut for "Paste As Text" (Milan Crha)
Bug 776969 - Huge icons in meeting invites when using SVG icon theme (Milan Crha)
Bug 776958 - Treat categories as multivalue in component editor (Milan Crha)
Bug 776415 - Cancel request, rather than redirect to about:blank, in composer (Milan Crha)
Bug 777071 - Hide Memos Start date in editor when not supported (Milan Crha)
Miscellaneous:
Fix a crash when deleting a meeting without DTEND (Milan Crha)
Fix a use-after-free after editor's WebKitWebProcess crash (Milan Crha)
Attached meeting invitations not shown properly (Milan Crha)
Crash on paste of a vCard into a message composer body (Milan Crha)
"Insert text file" sensitive to HTML-significant characters (Milan Crha)
EWeekView could write out of rows_per_day array (Milan Crha)
Replace deprecated icalproperty_remove_parameter() with icalproperty_remove_parameter_by_kind() (Milan Crha)
Replace deprecated icaltime_from_timet() with icaltime_from_timet_with_zone() (Milan Crha)
Fix few memory leaks (Milan Crha)
Avoid a (rather rare) crash under message-list.c::build_tree() (Milan Crha)
Translations:
Anders Jonsson (sv)
Christian Kirbach (de)
Evolution 3.22.3 2016-12-12
---------------------------
Bug Fixes:
Bug 774180 - Don't use --no-undefined on Darwin (Philip Chimento)
Bug 774156 - [backup-restore] Offer .tar.xz if 'xz' available (Milan Crha)
Bug 774067 - Webkit composer is very slow refresh when typing (Tomas Popela)
Bug 764802 - EPortEntry too large (Milan Crha)
Bug 775042 - Some plaintext emails get messed up when replied to, through plain -> HTML -> plain conversion (Tomas Popela)
Bug 767228 - Use-after-free in MessageList rebuild under clear_tree() (Milan Crha)
Bug 775075 - Save as draft keeps composer dirty (Milan Crha)
Bug 774164 - Unicode colon in localized Re: not handled (Milan Crha)
Bug 774691 - [Attachment reminder] Stop search on inline reply/forward markers (Milan Crha)
Bug 775397 - Freeze / lockup trying to delete a hyperlink in a cited html mail (Tomas Popela)
Bug 774211 - Runtime warning when search for contact photos is enabled (Milan Crha)
Bug 775656 - Delete key mapping stops working (Milan Crha)
Bug 774958 - Don't show a tooltip for the subject line field (Milan Crha)
Bug 775214 - Mnemonic parser broken for Unicode mnemonics (Milan Crha)
Bug 775268 - evolution-alarm-notify Edit button does not work (Milan Crha)
Bug 775370 - Arrow left/right for closing/opening threads (Milan Crha)
Bug 775565 - Pasting long text as citation is incorrectly formatted with line wrapping (Tomas Popela)
Bug 775691 - Paste eats new line marker (Tomas Popela)
Bug 775598 - Calendar view does not follow font DPI settings fully (Milan Crha)
Bug 775704 - Send/Receive should flush Outbox immediately too (Milan Crha)
Miscellaneous:
Message list not always scrolled to the cursor position on folder enter (Milan Crha)
Messages could not be sometimes quoted correctly (Tomas Popela)
Ensure mail_session_get_cache/config/data_dir() return existing directories (Milan Crha)
Process the WebView's context menu actions synchronously (Tomas Popela)
Fix formatting (Tomas Popela)
Fix various issues with clipboard content handling (Tomas Popela)
Fix the EHTMLEditor's update-actions signal (Tomas Popela)
EEditorWebExtension: Use-after-free when restoring the inline images (Tomas Popela)
EEditorDOMFunctions: Critical warning and possible crash when we cannot append the end node for spell checking (Tomas Popela)
Copy action is no available in EWebView's context menu (Tomas Popela)
Add a Confirmation option 'prompt-on-composer-mode-switch' into Preferences (Milan Crha)
Prefer text/plain in plain text mode if using 'Paste Quotation' (Tomas Popela)
Revert "Add a Confirmation option 'prompt-on-composer-mode-switch' into Preferences" (Milan Crha)
Let the Control + C shortcut behave the same way as Control + Shift (Tomas Popela)
Translations:
Marek Cernocky (cs)
Evolution 3.22.2 2016-11-07
---------------------------
Bug Fixes:
Bug 772150 - Can't add or edit email signatures (Milan Crha)
Bug 772803 - Inline images cause busy loop on Reply in WebKitWebProcess (Milan Crha)
Bug 772590 - Hitting Backspace causes mail contents to shrink font size momentarily (Tomas Popela)
Bug 772916 - Composer incorrectly warns about switching from HTML to text when a message snippet is selected (Tomas Popela)
Bug 772918 - Using keyboard shortcuts undo/redo is broken (Tomas Popela)
Bug 773164 - copy pasting paragraphs and then undoing - redoing is broken (Tomas Popela)
Bug 769733 - Meeting invitation cannot change calendar (Milan Crha)
Bug 773033 - Switch from Work Week to Week view on 'Select today', if needed (Milan Crha)
Bug 772858 - Alarm-notify should not open disabled sources (Milan Crha)
Bug 773396 - Pasting with midlde mouse button and Shift pressed doesn’t cite text (Tomas Popela)
Bug 773236 - Memory leak from e-editor-dom-functions.c:save_history_for_input (Tomas Popela)
Bug 771821 - Make magic-spacebar work again with WebKit2 (Milan Crha)
Bug 773494 - Composer doesn't respect dpi settings (Tomas Popela)
Bug 773864 - Flashing format combo value on mouse-wheel scroll (Tomas Popela)
Miscellaneous:
If body contains just the empty block, then nothing is sent (Tomas Popela)
Make the EContentEditor accessible in tests (Tomas Popela)
Consume return value of gtk_clutter_init_with_args()/gtk_init_with_args() (Milan Crha)
Use unique D-Bus service name for WebKit editor and cancel pending calls on dispose (Milan Crha)
Do not steal focus when alarm notify dialog is shown (Milan Crha)
EEditorPage is never freed (Tomas Popela)
Fix e_mail_display_get_selection_plain_text_sync() (Tomas Popela)
The "Reply from preview selection" feature is wrong for multipart messages (Tomas Popela)
Correct the mime type of preview selection string (Tomas Popela)
Tests are expecting the font-family attribute on BODY (Tomas Popela)
Skip the tests that are known to fail (Tomas Popela)
Extra quoted character on the end of the quoted PRE element if it ends with BR element (Tomas Popela)
Renew spell-check only in viewport and not in the whole document (Tomas Popela)
Editor is not marked as changed after some operations (Tomas Popela)
Fix possible crash (use-after-free) under mail_send_receive() (Milan Crha)
Translations:
Fabio Tomat (fur)
Kjartan Maraas (nb)
Peter Mráz (sk)
Tom Tryfonidis (el)
Christian Kirbach (de)
Evolution 3.22.1 2016-10-10
---------------------------
Bug Fixes:
Bug 771347 - Evolution's mail composer underlines my message even when spell checking is disabled (Tomas Popela)
Bug 771493 - Missing '>' in message reply (Tomas Popela)
Bug 771651 - Cannot write certain letters into meeting invitation text area (Tomas Popela)
Bug 771268 - [WK2] Prefer text over image on Paste (Tomas Popela)
Bug 770662 - [WK2] Leading space disappears on paragraph format change (Tomas Popela)
Bug 772015 - Free/Busy information not refreshed in the editor (Milan Crha)
Bug 772171 - Editing quoted replies can break message content (Tomas Popela)
Bug 770067 - [WK2] Misplaced cursor on reply in HTML (Tomas Popela)
Bug 769752 - [WK2] Some CSS styles are missing in the composer (Tomas Popela)
Bug 772233 - White flash on mail area of email reader (Tomas Popela)
Bug 772513 - Extra empty line at the top of a new mail (Tomas Popela)
Miscellaneous:
Missing declaration for DOMGetActiveSignatureUid (Tomas Popela)
Extra new line on the end of mail and after citation end (Tomas Popela)
Introduce new debug domains for WebKit parts (Tomas Popela)
Cannot switch the list type when it has just one level (Tomas Popela)
Simplify a bit how the selection is saved (Tomas Popela)
Only update the composer colors when the web extension is ready (Tomas Popela)
Correct external editor plugin to work again (Milan Crha)
Optimise how a quote element is created (Tomas Popela)
Optimize various DOM operations when searching elements (Tomas Popela)
Some text could be skipped when converting the HTML to plain text (Tomas Popela)
Pressing the Backspace key to decrease indentation level is wrong for content that was not written in Evolution (Tomas Popela)
Correctly process a WebKitDOMHTMLCollection objects (Tomas Popela)
When creating a plain text version of a message process the nodes in right order (Tomas Popela)
Correctly process and remove the BODY attributes (Tomas Popela)
Deleting a quoted content could leave paragraph that cannot be focused (Tomas Popela)
Correct possible uninitialized variable usage (Milan Crha)
Translations:
Piotr Drąg (pl)
Daniel Korostil (uk)
Gianvito Cavasoli (it)
Cédric Valmary (oc)
gogo (hr)
Fabio Tomat (fur)
Alexandre Franke (fr)
Evolution 3.22.0 2016-09-19
---------------------------
......
......@@ -5108,9 +5108,6 @@ e_contact_editor_init (EContactEditor *e_contact_editor)
gtk_window_set_icon_name (
GTK_WINDOW (e_contact_editor->priv->app), "contact-editor");
/* show window */
gtk_widget_show (e_contact_editor->priv->app);
gtk_application_add_window (
GTK_APPLICATION (shell),
GTK_WINDOW (e_contact_editor->priv->app));
......
......@@ -2,7 +2,6 @@
<!--*- mode: xml -*-->
<interface>
<object class="GtkDialog" id="dialog">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="title" translatable="yes">Contact List Editor</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
......
......@@ -1219,13 +1219,20 @@ contact_editor_fudge_new (EBookClient *book_client,
gboolean is_new,
gboolean editable)
{
EABEditor *editor;
EShell *shell = e_shell_get_default ();
GtkWindow *parent;
/* XXX Putting this function signature in libedataserverui
* was a terrible idea. Now we're stuck with it. */
return e_contact_editor_new (
shell, book_client, contact, is_new, editable);
editor = e_contact_editor_new (shell, book_client, contact, is_new, editable);
parent = e_shell_get_active_window (shell);
if (parent)
gtk_window_set_transient_for (eab_editor_get_window (editor), parent);
eab_editor_show (editor);
return editor;
}
static gpointer
......@@ -1234,13 +1241,20 @@ contact_list_editor_fudge_new (EBookClient *book_client,
gboolean is_new,
gboolean editable)
{
EABEditor *editor;
EShell *shell = e_shell_get_default ();
GtkWindow *parent;
/* XXX Putting this function signature in libedataserverui
* was a terrible idea. Now we're stuck with it. */
return e_contact_list_editor_new (
shell, book_client, contact, is_new, editable);
editor = e_contact_list_editor_new (shell, book_client, contact, is_new, editable);
parent = e_shell_get_active_window (shell);
if (parent)
gtk_window_set_transient_for (eab_editor_get_window (editor), parent);
eab_editor_show (editor);
return editor;
}
static void
......@@ -1493,7 +1507,7 @@ contact_list_editor_constructed (GObject *object)
editor, "notify::editable",
G_CALLBACK (contact_list_editor_notify_cb), NULL);
gtk_widget_show_all (WIDGET (DIALOG));
gtk_widget_show_all (gtk_dialog_get_content_area (GTK_DIALOG (WIDGET (DIALOG))));
setup_custom_widgets (editor);
......
......@@ -263,7 +263,7 @@ render_table_row (GString *buffer,
value = (gchar *) str;
if (icon && icon_available (icon)) {
icon_html = g_strdup_printf ("<img src=\"gtk-stock://%s\" width=\"16\" height=\"16\" />", icon);
icon_html = g_strdup_printf ("<img src=\"gtk-stock://%s\" width=\"16px\" height=\"16px\" />", icon);
} else {
icon_html = "";
}
......@@ -561,7 +561,7 @@ render_title_block (EABContactFormatter *formatter,
e_contact_photo_free (photo);
if (e_contact_get (contact, E_CONTACT_IS_LIST)) {
g_string_append_printf (buffer, "<img src=\"gtk-stock://%s\">", CONTACT_LIST_ICON);
g_string_append_printf (buffer, "<img src=\"gtk-stock://%s\" width=\"16px\" height=\"16px\">", CONTACT_LIST_ICON);
}
g_string_append_printf (
......@@ -610,7 +610,7 @@ render_contact_list_row (EABContactFormatter *formatter,
g_string_append_printf (
buffer,
"<td width=" IMAGE_COL_WIDTH " valign=\"top\" align=\"left\">"
"<img src=\"evo-file://%s/minus.png\" "
"<img src=\"evo-file://%s/minus.png\" width=\"16px\" height=\"16px\" "
"id=\"%s\" "
"class=\"navigable _evo_collapse_button\">"
"</td><td width=\"100%%\" align=\"left\">%s",
......@@ -1069,7 +1069,7 @@ render_compact (EABContactFormatter *formatter,
#endif
g_string_append_printf (
buffer,
"<img id=\"__evo-contact-photo\" width=\"%d\" height=\"%d\" src=\"%s%s\">",
"<img id=\"__evo-contact-photo\" width=\"%dpx\" height=\"%dpx\" src=\"%s%s\">",
calced_width, calced_height,
is_local ? "evo-" : "", uri);
#if !(WEBKIT_MAJOR_VERSION == 2 && WEBKIT_MINOR_VERSION == 2)
......@@ -1084,7 +1084,7 @@ render_compact (EABContactFormatter *formatter,
g_string_append_printf (
buffer,
"<img id=\"__evo-contact-photo\" border=\"1\" src=\"data:%s;base64,%s\" "
"width=\"%d\" height=\"%d\">",
"width=\"%dpx\" height=\"%dpx\">",
photo->data.inlined.mime_type,
photo_data,
calced_width, calced_height);
......
......@@ -150,6 +150,14 @@ alarm_notify_activate (GApplication *application)
an->priv->registry, "source-added",
G_CALLBACK (alarm_notify_add_calendar), an);
g_signal_connect_swapped (
an->priv->registry, "source-enabled",
G_CALLBACK (alarm_notify_add_calendar), an);
g_signal_connect_swapped (
an->priv->registry, "source-disabled",
G_CALLBACK (alarm_notify_remove_calendar), an);
g_signal_connect_swapped (
an->priv->registry, "source-removed",
G_CALLBACK (alarm_notify_remove_calendar), an);
......@@ -287,6 +295,13 @@ alarm_notify_add_calendar (AlarmNotify *an,
return;
}
/* Skip disabled sources. */
if (!e_source_registry_check_enabled (an->priv->registry, source)) {
debug (("Skipping disabled source '%s' (%s)", e_source_get_display_name (source), e_source_get_uid (source)));
g_mutex_unlock (&an->priv->mutex);
return;
}
/* Check if this is an ESource we're interested in. */
if (e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR))
source_type = E_CAL_CLIENT_SOURCE_TYPE_EVENTS;
......@@ -310,22 +325,47 @@ alarm_notify_add_calendar (AlarmNotify *an,
}
}
debug (("Opening '%s' (%s)", e_source_get_display_name (source), e_source_get_uid (source)));
debug (("Opening '%s' (%s) as %s client", e_source_get_display_name (source), e_source_get_uid (source),
source_type == E_CAL_CLIENT_SOURCE_TYPE_TASKS ? "tasks" :
source_type == E_CAL_CLIENT_SOURCE_TYPE_MEMOS ? "memos" :
source_type == E_CAL_CLIENT_SOURCE_TYPE_EVENTS ? "events" : "???"));
e_cal_client_connect (source, source_type, 30, NULL, client_connect_cb, an);
g_mutex_unlock (&an->priv->mutex);
}
static gboolean
remove_that_or_collection_children_sources_cb (gpointer key,
gpointer value,
gpointer user_data)
{
ESource *stored_source = key;
ECalClient *cal_client = value;
ESource *removing_source = user_data;
gboolean remove;
remove = stored_source == removing_source ||
e_source_equal (stored_source, removing_source) ||
(!e_source_get_enabled (removing_source) && e_source_has_extension (removing_source, E_SOURCE_EXTENSION_COLLECTION) &&
g_strcmp0 (e_source_get_uid (removing_source), e_source_get_parent (stored_source)) == 0);
if (remove)
alarm_queue_remove_client (cal_client, FALSE);
return remove;
}
void
alarm_notify_remove_calendar (AlarmNotify *an,
ESource *source)
{
ECalClient *cal_client;
g_return_if_fail (IS_ALARM_NOTIFY (an));
g_return_if_fail (E_IS_SOURCE (source));
cal_client = g_hash_table_lookup (an->priv->clients, source);
if (cal_client != NULL) {
alarm_queue_remove_client (cal_client, FALSE);
g_hash_table_remove (an->priv->clients, source);
}
g_object_ref (source);
g_hash_table_foreach_remove (an->priv->clients, remove_that_or_collection_children_sources_cb, source);
g_object_unref (source);
}
......@@ -22,6 +22,8 @@
<property name="border_width">5</property>
<property name="title" translatable="yes">Appointments</property>
<property name="type_hint">dialog</property>
<property name="focus-on-map">False</property>
<property name="urgency-hint">True</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
......
......@@ -1332,7 +1332,7 @@ cal_comp_util_update_tzid_parameter (icalproperty *prop,
icalproperty_add_parameter (prop, param);
}
} else if (param) {
icalproperty_remove_parameter (prop, ICAL_TZID_PARAMETER);
icalproperty_remove_parameter_by_kind (prop, ICAL_TZID_PARAMETER);
}
}
......
......@@ -46,9 +46,16 @@ is_past_event (ECalComponent *comp)
ECalComponentDateTime end_date;
gboolean res;
if (!comp) return TRUE;
if (!comp)
return TRUE;
end_date.value = NULL;
e_cal_component_get_dtend (comp, &end_date);
if (!end_date.value)
return FALSE;
res = icaltime_compare_date_only (
*end_date.value,
icaltime_current_time_with_zone (
......
......@@ -55,12 +55,11 @@ static gboolean e_cal_list_view_get_visible_time_range (ECalendarView *cal_view
static gboolean e_cal_list_view_popup_menu (GtkWidget *widget);
static void e_cal_list_view_show_popup_menu (ECalListView *cal_list_view, gint row,
GdkEvent *event);
static gboolean e_cal_list_view_on_table_double_click (GtkWidget *table, gint row, gint col,
GdkEvent *event, gpointer data);
static gboolean e_cal_list_view_on_table_right_click (GtkWidget *table, gint row, gint col,
GdkEvent *event, gpointer data);
static gboolean e_cal_list_view_on_table_white_space_event (ETable *table, GdkEvent *event, gpointer data);
static void e_cal_list_view_cursor_change_cb (ETable *etable, gint row, gpointer data);
G_DEFINE_TYPE (ECalListView, e_cal_list_view, E_TYPE_CALENDAR_VIEW)
......@@ -306,6 +305,10 @@ setup_e_table (ECalListView *cal_list_view)
cal_list_view->table, "right-click",
G_CALLBACK (e_cal_list_view_on_table_right_click),
cal_list_view);
g_signal_connect (
cal_list_view->table, "white-space-event",
G_CALLBACK (e_cal_list_view_on_table_white_space_event),
cal_list_view);
g_signal_connect_after (
cal_list_view->table, "cursor_change",
G_CALLBACK (e_cal_list_view_cursor_change_cb),
......@@ -362,7 +365,6 @@ e_cal_list_view_dispose (GObject *object)
static void
e_cal_list_view_show_popup_menu (ECalListView *cal_list_view,
gint row,
GdkEvent *event)
{
e_calendar_view_popup_event (E_CALENDAR_VIEW (cal_list_view), event);
......@@ -373,7 +375,7 @@ e_cal_list_view_popup_menu (GtkWidget *widget)
{
ECalListView *cal_list_view = E_CAL_LIST_VIEW (widget);
e_cal_list_view_show_popup_menu (cal_list_view, -1, NULL);
e_cal_list_view_show_popup_menu (cal_list_view, NULL);
return TRUE;
}
......@@ -402,11 +404,40 @@ e_cal_list_view_on_table_right_click (GtkWidget *table,
{
ECalListView *cal_list_view = E_CAL_LIST_VIEW (data);
e_cal_list_view_show_popup_menu (cal_list_view, row, event);
e_cal_list_view_show_popup_menu (cal_list_view, event);
return TRUE;
}
static gboolean
e_cal_list_view_on_table_white_space_event (ETable *table,
GdkEvent *event,
gpointer user_data)
{
ECalListView *cal_list_view = user_data;
guint event_button = 0;
g_return_val_if_fail (E_IS_CAL_LIST_VIEW (cal_list_view), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
if (event->type == GDK_BUTTON_PRESS &&
gdk_event_get_button (event, &event_button) &&
event_button == 3) {
GtkWidget *table_canvas;
table_canvas = GTK_WIDGET (table->table_canvas);
if (!gtk_widget_has_focus (table_canvas))
gtk_widget_grab_focus (table_canvas);
e_cal_list_view_show_popup_menu (cal_list_view, event);
return TRUE;
}
return FALSE;
}
static void
e_cal_list_view_cursor_change_cb (ETable *etable,
gint row,
......
......@@ -2694,7 +2694,7 @@ e_cal_model_update_comp_time (ECalModel *model,
if (tzid && strcmp (tzid, "UTC")) {
icalparameter_set_tzid (param, (gchar *) tzid);
} else {
icalproperty_remove_parameter (prop, ICAL_TZID_PARAMETER);
icalproperty_remove_parameter_by_kind (prop, ICAL_TZID_PARAMETER);
}
}
}
......
......@@ -33,6 +33,7 @@
#include "e-comp-editor-memo.h"
struct _ECompEditorMemoPrivate {
ECompEditorPropertyPart *dtstart;
ECompEditorPropertyPart *categories;
gpointer insensitive_info_alert;
......@@ -40,6 +41,27 @@ struct _ECompEditorMemoPrivate {
G_DEFINE_TYPE (ECompEditorMemo, e_comp_editor_memo, E_TYPE_COMP_EDITOR)
static void
ece_memo_notify_target_client_cb (GObject *object,
GParamSpec *param,
gpointer user_data)
{
ECompEditorMemo *memo_editor;
ECompEditor *comp_editor;
ECalClient *cal_client;
gboolean supports_date;
g_return_if_fail (E_IS_COMP_EDITOR_MEMO (object));
memo_editor = E_COMP_EDITOR_MEMO (object);
comp_editor = E_COMP_EDITOR (memo_editor);
cal_client = e_comp_editor_get_target_client (comp_editor);
supports_date = !cal_client || !e_client_check_capability (E_CLIENT (cal_client), CAL_STATIC_CAPABILITY_NO_MEMO_START_DATE);
e_comp_editor_property_part_set_visible (memo_editor->priv->dtstart, supports_date);
}
static void
ece_memo_sensitize_widgets (ECompEditor *comp_editor,
gboolean force_insensitive)
......@@ -174,6 +196,7 @@ e_comp_editor_memo_constructed (GObject *object)
part = e_comp_editor_property_part_dtstart_new (C_("ECompEditor", "Sta_rt date:"), TRUE, TRUE);
e_comp_editor_page_add_property_part (page, part, 0, 3, 2, 1);
memo_editor->priv->dtstart = part;
part = e_comp_editor_property_part_classification_new ();
e_comp_editor_page_add_property_part (page, part, 0, 4, 2, 1);
......@@ -199,6 +222,9 @@ e_comp_editor_memo_constructed (GObject *object)
edit_widget = e_comp_editor_property_part_get_edit_widget (summary);
e_binding_bind_property (edit_widget, "text", comp_editor, "title-suffix", 0);
gtk_widget_grab_focus (edit_widget);
g_signal_connect (comp_editor, "notify::target-client",
G_CALLBACK (ece_memo_notify_target_client_cb), NULL);
}
static void
......
......@@ -982,7 +982,7 @@ ecep_general_fill_component (ECompEditorPage *page,
icalparameter_set_cn (param, organizer_name);
}
} else if (param) {
icalproperty_remove_parameter (prop, ICAL_CN_PARAMETER);
icalproperty_remove_parameter_by_kind (prop, ICAL_CN_PARAMETER);
}
param = icalproperty_get_first_parameter (prop, ICAL_SENTBY_PARAMETER);
......@@ -1002,12 +1002,12 @@ ecep_general_fill_component (ECompEditorPage *page,
icalparameter_set_sentby (param, sentby);
}
} else if (param) {
icalproperty_remove_parameter (prop, ICAL_SENTBY_PARAMETER);
icalproperty_remove_parameter_by_kind (prop, ICAL_SENTBY_PARAMETER);
}
g_free (sentby);
} else if (param) {
icalproperty_remove_parameter (prop, ICAL_SENTBY_PARAMETER);
icalproperty_remove_parameter_by_kind (prop, ICAL_SENTBY_PARAMETER);
}
}
......
......@@ -155,6 +155,24 @@ ecep_schedule_editor_times_changed_cb (ECompEditor *comp_editor,
e_comp_editor_page_set_updating (E_COMP_EDITOR_PAGE (page_schedule), FALSE);
}
static void
ecep_schedule_editor_target_client_notify_cb (GObject *comp_editor,
GParamSpec *param,
gpointer user_data)
{
ECompEditorPageSchedule *page_schedule = user_data;
ECalClient *target_client;
g_return_if_fail (E_IS_COMP_EDITOR (comp_editor));
g_return_if_fail (E_IS_COMP_EDITOR_PAGE_SCHEDULE (page_schedule));
g_return_if_fail (page_schedule->priv->store != NULL);
g_return_if_fail (page_schedule->priv->selector != NULL);
target_client = e_comp_editor_get_target_client (E_COMP_EDITOR (comp_editor));
e_meeting_store_set_client (page_schedule->priv->store, target_client);
e_meeting_time_selector_refresh_free_busy (page_schedule->priv->selector, -1, TRUE);
}
static void
ecep_schedule_set_time_to_editor (ECompEditorPageSchedule *page_schedule)
{
......@@ -506,6 +524,9 @@ e_comp_editor_page_schedule_constructed (GObject *object)
if (comp_editor) {
g_signal_connect (comp_editor, "times-changed",
G_CALLBACK (ecep_schedule_editor_times_changed_cb), page_schedule);
g_signal_connect (comp_editor, "notify::target-client",
G_CALLBACK (ecep_schedule_editor_target_client_notify_cb), page_schedule);
}
g_clear_object (&comp_editor);
......
......@@ -317,7 +317,7 @@ e_comp_editor_property_part_emit_changed (ECompEditorPropertyPart *property_part
/* ************************************************************************* */
struct _ECompEditorPropertyPartStringPrivate {
gint dummy;
gboolean is_multivalue;
};
G_DEFINE_ABSTRACT_TYPE (ECompEditorPropertyPartString, e_comp_editor_property_part_string, E_TYPE_COMP_EDITOR_PROPERTY_PART)
......@@ -393,6 +393,7 @@ ecepp_string_fill_widget (ECompEditorPropertyPart *property_part,
{
ECompEditorPropertyPartStringClass *klass;
GtkWidget *edit_widget;
GString *multivalue = NULL;
icalproperty *prop;
const gchar *value = NULL;
......@@ -407,9 +408,32 @@ ecepp_string_fill_widget (ECompEditorPropertyPart *property_part,
g_return_if_fail (klass->ical_prop_kind != ICAL_NO_PROPERTY);
g_return_if_fail (klass->ical_get_func != NULL);
prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
if (prop)
value = klass->ical_get_func (prop);
if (e_comp_editor_property_part_string_is_multivalue (E_COMP_EDITOR_PROPERTY_PART_STRING (property_part))) {
for (prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
prop;
prop = icalcomponent_get_next_property (component, klass->ical_prop_kind)) {
value = klass->ical_get_func (prop);
if (!value || !*value)
continue;
if (!multivalue)
multivalue = g_string_new ("");
else if (multivalue->len)
g_string_append_c (multivalue, ',');
g_string_append (multivalue, value);
}
if (multivalue)
value = multivalue->str;
else
value = NULL;
} else {
prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
if (prop)
value = klass->ical_get_func (prop);
}
if (!value)
value = "";
......@@ -424,6 +448,9 @@ ecepp_string_fill_widget (ECompEditorPropertyPart *property_part,
}
e_widget_undo_reset (edit_widget);
if (multivalue)
g_string_free (multivalue, TRUE);
}
static void
......@@ -459,6 +486,14 @@ ecepp_string_fill_component (ECompEditorPropertyPart *property_part,
value = gtk_text_buffer_get_text (buffer, &text_iter_start, &text_iter_end, FALSE);
}
if (e_comp_editor_property_part_string_is_multivalue (E_COMP_EDITOR_PROPERTY_PART_STRING (property_part))) {
/* Clear all multivalues first */
while (prop = icalcomponent_get_first_property (component, klass->ical_prop_kind), prop) {
icalcomponent_remove_property (component, prop);
icalproperty_free (prop);
}
}
prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
if (value && *value) {
......@@ -482,6 +517,7 @@ e_comp_editor_property_part_string_init (ECompEditorPropertyPartString *part_str
part_string->priv = G_TYPE_INSTANCE_GET_PRIVATE (part_string,
E_TYPE_COMP_EDITOR_PROPERTY_PART_STRING,
ECompEditorPropertyPartStringPrivate);
part_string->priv->is_multivalue = FALSE;
}
static void
......@@ -522,6 +558,23 @@ e_comp_editor_property_part_string_attach_focus_tracker (ECompEditorPropertyPart
e_widget_undo_attach (edit_widget, focus_tracker);
}
void
e_comp_editor_property_part_string_set_is_multivalue (ECompEditorPropertyPartString *part_string,
gboolean is_multivalue)
{
g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_STRING (part_string));
part_string->priv->is_multivalue = is_multivalue;
}
gboolean
e_comp_editor_property_part_string_is_multivalue (ECompEditorPropertyPartString *part_string)
{
g_return_val_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_STRING (part_string), FALSE);
return part_string->priv->is_multivalue;
}
/* ************************************************************************* */
struct _ECompEditorPropertyPartDatetimePrivate {
......
......@@ -224,6 +224,11 @@ GType e_comp_editor_property_part_string_get_type (void) G_GNUC_CONST;
void e_comp_editor_property_part_string_attach_focus_tracker
(ECompEditorPropertyPartString *part_string,
EFocusTracker *focus_tracker);
void e_comp_editor_property_part_string_set_is_multivalue
(ECompEditorPropertyPartString *part_string,
gboolean is_multivalue);
gboolean e_comp_editor_property_part_string_is_multivalue
(ECompEditorPropertyPartString *part_string);
/* ************************************************************************* */
......
......@@ -473,6 +473,8 @@ ecepp_categories_create_widgets (ECompEditorPropertyPart *property_part,
static void
e_comp_editor_property_part_categories_init (ECompEditorPropertyPartCategories *part_categories)
{
e_comp_editor_property_part_string_set_is_multivalue (
E_COMP_EDITOR_PROPERTY_PART_STRING (part_categories), TRUE);
}
static void
......
......@@ -518,7 +518,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
gdk_cairo_set_source_color (cr, &mb_color);
else
gdk_cairo_set_source_rgba (cr, &fg);
layout = pango_cairo_create_layout (cr);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (day_view), NULL);
pango_layout_set_text (layout, buffer, -1);
pango_layout_get_pixel_size (layout, &minute_width, NULL);
cairo_translate (
......@@ -559,7 +559,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
gdk_cairo_set_source_color (cr, &mb_color);
else
gdk_cairo_set_source_rgba (cr, &fg);
layout = pango_cairo_create_layout (cr);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (day_view), NULL);
pango_layout_set_text (layout, buffer, -1);
pango_layout_set_font_description (
layout, day_view->large_font_desc);
......@@ -607,7 +607,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
gdk_cairo_set_source_color (cr, &mb_color);
else
gdk_cairo_set_source_rgba (cr, &fg);
layout = pango_cairo_create_layout (cr);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (day_view), NULL);
pango_layout_set_text (layout, buffer, -1);
pango_layout_set_font_description (
layout, day_view->small_font_desc);
......
......@@ -7556,8 +7556,8 @@ e_day_view_event_move (ECalendarView *cal_view,
return TRUE;
start_dt = e_day_view_convert_grid_position_to_time (day_view, day, resize_start_row);
end_dt = e_day_view_convert_grid_position_to_time (day_view, day, resize_end_row + 1);
start_time = icaltime_from_timet (start_dt, 0);
end_time = icaltime_from_timet (end_dt, 0);
start_time = icaltime_from_timet_with_zone (start_dt, 0, NULL);
end_time = icaltime_from_timet_with_zone (end_dt, 0, NULL);
icaltime_adjust (&start_time ,-1,0,0,0);
icaltime_adjust (&end_time ,-1,0,0,0);
start_dt = icaltime_as_timet (start_time);
......@@ -7568,8 +7568,8 @@ e_day_view_event_move (ECalendarView *cal_view,
return TRUE;
start_dt = e_day_view_convert_grid_position_to_time (day_view, day, resize_start_row);
end_dt = e_day_view_convert_grid_position_to_time (day_view, day, resize_end_row + 1);
start_time = icaltime_from_timet (start_dt, 0);
end_time = icaltime_from_timet (end_dt, 0);
start_time = icaltime_from_timet_with_zone (start_dt, 0, NULL);
end_time = icaltime_from_timet_with_zone (end_dt, 0, NULL);
icaltime_adjust (&start_time ,1,0,0,0);
icaltime_adjust (&end_time ,1,0,0,0);
start_dt = icaltime_as_timet (start_time);
......
......@@ -679,6 +679,33 @@ memo_table_right_click (ETable *table,
return TRUE;
}
static gboolean
memo_table_white_space_event (ETable *table,
GdkEvent *event)
{
guint event_button = 0;
g_return_val_if_fail (E_IS_MEMO_TABLE (table), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
if (event->type == GDK_BUTTON_PRESS &&
gdk_event_get_button (event, &event_button) &&
event_button == 3) {
GtkWidget *table_canvas;
table_canvas = GTK_WIDGET (table->table_canvas);
if (!gtk_widget_has_focus (table_canvas))
gtk_widget_grab_focus (table_canvas);
memo_table_emit_popup_event (E_MEMO_TABLE (table), event);
return TRUE;
}
return FALSE;
}
static void
memo_table_update_actions (ESelectable *selectable,
EFocusTracker *focus_tracker,
......@@ -970,6 +997,7 @@ e_memo_table_class_init (EMemoTableClass *class)
table_class = E_TABLE_CLASS (class);
table_class->double_click = memo_table_double_click;
table_class->right_click = memo_table_right_click;
table_class->white_space_event = memo_table_white_space_event;
/* Inherited from ESelectableInterface */
g_object_class_override_property (
......
......@@ -116,9 +116,7 @@ static void
task_table_emit_popup_event (ETaskTable *task_table,
GdkEvent *event)
{
guint signal_id = signals[POPUP_EVENT];
g_signal_emit (task_table, signal_id, 0, event);
g_signal_emit (task_table, signals[POPUP_EVENT], 0, event);
}
static gint
......@@ -989,6 +987,33 @@ task_table_right_click (ETable *table,
return TRUE;
}
static gboolean
task_table_white_space_event (ETable *table,
GdkEvent *event)
{
guint event_button = 0;
g_return_val_if_fail (E_IS_TASK_TABLE (table), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
if (event->type == GDK_BUTTON_PRESS &&
gdk_event_get_button (event, &event_button) &&
event_button == 3) {
GtkWidget *table_canvas;
table_canvas = GTK_WIDGET (table->table_canvas);
if (!gtk_widget_has_focus (table_canvas))
gtk_widget_grab_focus (table_canvas);
task_table_emit_popup_event (E_TASK_TABLE (table), event);
return TRUE;
}
return FALSE;
}
static void
task_table_update_actions (ESelectable *selectable,
EFocusTracker *focus_tracker,
......@@ -1354,6 +1379,7 @@ e_task_table_class_init (ETaskTableClass *class)
table_class = E_TABLE_CLASS (class);
table_class->double_click = task_table_double_click;
table_class->right_click = task_table_right_click;
table_class->white_space_event = task_table_white_space_event;
/* Inherited from ESelectableInterface */
g_object_class_override_property (
......
......@@ -251,18 +251,14 @@ week_view_main_item_draw_day (EWeekViewMainItem *main_item,
g_date_strftime (
buffer, sizeof (buffer),
format_string ? format_string : "<b>%d</b>", date);
pango_cairo_update_context (cr, pango_context);
layout = pango_cairo_create_layout (cr);
pango_layout_set_font_description (layout, font_desc);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (week_view), NULL);
pango_layout_set_text (layout, buffer, -1);
pango_layout_set_markup (layout, buffer, strlen (buffer));
} else {
g_date_strftime (
buffer, sizeof (buffer),
format_string ? format_string : "%d", date);
pango_cairo_update_context (cr, pango_context);
layout = pango_cairo_create_layout (cr);
pango_layout_set_font_description (layout, font_desc);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (week_view), NULL);
pango_layout_set_text (layout, buffer, -1);
}
......
......@@ -217,7 +217,7 @@ struct _EWeekView {
gint rows_per_compressed_cell;
/* The number of rows we have used for each day (i.e. each cell) */
gint rows_per_day[E_WEEK_VIEW_MAX_WEEKS * 7];
gint rows_per_day[E_WEEK_VIEW_MAX_WEEKS * 7 + 1];
/* If the small font is used for displaying the minutes. */
gboolean use_small_font;
......
......@@ -466,6 +466,8 @@ itip_get_comp_attendee (ESourceRegistry *registry,
g_free (address);
g_list_free_full (list, g_object_unref);
return user_email;
}
......@@ -483,13 +485,15 @@ itip_get_comp_attendee (ESourceRegistry *registry,
g_free (address);
g_list_free_full (list, g_object_unref);
return user_email;
}
g_free (address);
}
g_list_free_full (list, (GDestroyNotify) g_object_unref);
g_list_free_full (list, g_object_unref);
/* We could not find the attendee in the component, so just give
* the default account address if the email address is not set in
......
......@@ -236,10 +236,7 @@ encode_timet_to_julian (time_t t,
if (!t)
return 0;
if (zone)
tt = icaltime_from_timet_with_zone (t, is_date, zone);
else
tt = icaltime_from_timet (t, is_date);
tt = icaltime_from_timet_with_zone (t, is_date, zone);
if (!icaltime_is_valid_time (tt) || icaltime_is_null_time (tt))
return 0;
......
......@@ -237,11 +237,14 @@ action_save_as_cb (GtkAction *action,
gtk_window_set_icon_name (
GTK_WINDOW (dialog), "mail-message-new");
e_util_load_file_chooser_folder (GTK_FILE_CHOOSER (dialog));
response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response != GTK_RESPONSE_OK)
goto exit;
e_util_save_file_chooser_folder (GTK_FILE_CHOOSER (dialog));
editor = e_msg_composer_get_editor (composer);
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
e_html_editor_set_filename (editor, filename);
......
......@@ -861,6 +861,8 @@ composer_header_table_constructed (GObject *object)
header = e_composer_spell_header_new_label (registry, _("S_ubject:"));
composer_header_table_bind_header ("subject", "changed", header);
e_composer_header_set_title_has_tooltip (header, FALSE);
e_composer_header_set_input_has_tooltip (header, FALSE);
table->priv->headers[E_COMPOSER_HEADER_SUBJECT] = header;
widget = e_mail_signature_combo_box_new (registry);
......
......@@ -427,3 +427,37 @@ e_composer_header_set_input_tooltip (EComposerHeader *header,
gtk_widget_set_tooltip_text (header->input_widget, tooltip);
}
gboolean
e_composer_header_get_title_has_tooltip (EComposerHeader *header)
{
g_return_val_if_fail (E_IS_COMPOSER_HEADER (header), FALSE);
return gtk_widget_get_has_tooltip (header->title_widget);
}
void
e_composer_header_set_title_has_tooltip (EComposerHeader *header,
gboolean has_tooltip)
{
g_return_if_fail (E_IS_COMPOSER_HEADER (header));
gtk_widget_set_has_tooltip (header->title_widget, has_tooltip);
}
gboolean
e_composer_header_get_input_has_tooltip (EComposerHeader *header)
{
g_return_val_if_fail (E_IS_COMPOSER_HEADER (header), FALSE);
return gtk_widget_get_has_tooltip (header->input_widget);
}
void
e_composer_header_set_input_has_tooltip (EComposerHeader *header,
gboolean has_tooltip)
{
g_return_if_fail (E_IS_COMPOSER_HEADER (header));
gtk_widget_set_has_tooltip (header->input_widget, has_tooltip);
}
......@@ -76,6 +76,16 @@ void e_composer_header_set_title_tooltip
void e_composer_header_set_input_tooltip
(EComposerHeader *header,
const gchar *tooltip);
gboolean e_composer_header_get_title_has_tooltip
(EComposerHeader *header);
void e_composer_header_set_title_has_tooltip
(EComposerHeader *header,
gboolean has_tooltip);
gboolean e_composer_header_get_input_has_tooltip
(EComposerHeader *header);
void e_composer_header_set_input_has_tooltip
(EComposerHeader *header,
gboolean has_tooltip);
G_END_DECLS
......
......@@ -59,13 +59,16 @@ contact_editor_fudge_new (EBookClient *book_client,
gboolean is_new,
gboolean editable)
{
EABEditor *editor;
EShell *shell = e_shell_get_default ();
/* XXX Putting this function signature in libedataserverui
* was a terrible idea. Now we're stuck with it. */
return e_contact_editor_new (
shell, book_client, contact, is_new, editable);
editor = e_contact_editor_new (shell, book_client, contact, is_new, editable);
eab_editor_show (editor);
return editor;
}
static gpointer
......@@ -74,13 +77,16 @@ contact_list_editor_fudge_new (EBookClient *book_client,
gboolean is_new,
gboolean editable)
{
EABEditor *editor;
EShell *shell = e_shell_get_default ();
/* XXX Putting this function signature in libedataserverui
* was a terrible idea. Now we're stuck with it. */
return e_contact_list_editor_new (
shell, book_client, contact, is_new, editable);
editor = e_contact_list_editor_new (shell, book_client, contact, is_new, editable);
eab_editor_show (editor);
return editor;
}
static void
......
......@@ -1720,14 +1720,6 @@ msg_composer_paste_clipboard_targets_cb (GtkClipboard *clipboard,
if (targets == NULL || n_targets < 0)
return;
/* Order is important here to ensure common use cases are
* handled correctly. See GNOME bug #603715 for details. */
if (gtk_targets_include_uri (targets, n_targets)) {
e_composer_paste_uris (composer, clipboard);
return;
}
editor = e_msg_composer_get_editor (composer);
cnt_editor = e_html_editor_get_content_editor (editor);
......@@ -1737,6 +1729,22 @@ msg_composer_paste_clipboard_targets_cb (GtkClipboard *clipboard,
return;
}
if (gtk_targets_include_uri (targets, n_targets)) {
e_composer_paste_uris (composer, clipboard);
return;
}
/* Order is important here to ensure common use cases are
* handled correctly. See GNOME bug #603715 for details. */
if (gtk_targets_include_text (targets, n_targets) ||
e_targets_include_html (targets, n_targets)) {
if (composer->priv->last_signal_was_paste_primary) {
e_content_editor_paste_primary (cnt_editor);
} else
e_content_editor_paste (cnt_editor);
return;
}
if (composer->priv->last_signal_was_paste_primary) {
e_content_editor_paste_primary (cnt_editor);
} else
......
dnl Evolution Versions
m4_define([evo_major_version], [3])
m4_define([evo_minor_version], [22])
m4_define([evo_micro_version], [0])
m4_define([evo_micro_version], [7])
m4_define([evo_version],
[evo_major_version.evo_minor_version.evo_micro_version])
m4_define([evo_stable_version],
......@@ -135,8 +135,8 @@ AC_DEFINE_UNQUOTED(VERSION_COMMENT, "", [Define if you want a comment appended t
dnl This must stay after AC_CANONICAL_HOST, which defines $host.
case "$host" in
*openbsd*|*freebsd*)
dnl Do not set '-Wl,--no-undefined' on freebsd/openbsd
*openbsd*|*freebsd*|*darwin*)
dnl Do not set '-Wl,--no-undefined' on freebsd/openbsd/darwin
;;
*)
LDFLAGS="$LDFLAGS -Wl,--no-undefined"
......
......@@ -105,6 +105,11 @@
<_summary>Default sidebar width</_summary>
<_description>The default width for the sidebar, in pixels.</_description>
</key>
<key name="webkit-developer-mode" type="b">
<default>false</default>
<_summary>Enable special WebKit developer features</_summary>
<_description>Any change of this option requires restart of Evolution.</_description>
</key>
<child name="window" schema="org.gnome.evolution.window"/>
</schema>
</schemalist>
......@@ -725,6 +725,8 @@ e_attachment_store_run_load_dialog (EAttachmentStore *store,
gtk_file_chooser_set_extra_widget (file_chooser, extra_box_widget);
gtk_widget_show_all (extra_box_widget);
e_util_load_file_chooser_folder (file_chooser);
response = gtk_dialog_run (GTK_DIALOG (dialog));
#ifdef HAVE_AUTOAR
......@@ -734,6 +736,8 @@ e_attachment_store_run_load_dialog (EAttachmentStore *store,
#endif
goto exit;
e_util_save_file_chooser_folder (file_chooser);
files = gtk_file_chooser_get_files (file_chooser);
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (option_display));
disposition = active ? "inline" : "attachment";
......@@ -897,6 +901,8 @@ e_attachment_store_run_save_dialog (EAttachmentStore *store,
g_clear_object (&file_info);
}
e_util_load_file_chooser_folder (file_chooser);
response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response == GTK_RESPONSE_OK) {
......@@ -904,6 +910,7 @@ e_attachment_store_run_save_dialog (EAttachmentStore *store,
gboolean save_self, save_extracted;
#endif
e_util_save_file_chooser_folder (file_chooser);
destination = gtk_file_chooser_get_file (file_chooser);
#ifdef HAVE_AUTOAR
......
......@@ -1572,7 +1572,7 @@ e_calendar_item_draw_day_numbers (ECalendarItem *calitem,
+ E_CALENDAR_ITEM_MIN_CELL_XPAD;
min_cell_height = char_height + E_CALENDAR_ITEM_MIN_CELL_YPAD;
layout = pango_cairo_create_layout (cr);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (widget), NULL);
/* Calculate the number of days in the previous, current, and next
* months. */
......
......@@ -109,7 +109,18 @@ static void
new_button_clicked_cb (GtkButton *button,
ECategoriesEditor *editor)
{
ECategoryEditor *cat_editor = e_category_editor_new ();
GtkWidget *toplevel, *parent;
ECategoryEditor *cat_editor;
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (editor));
if (GTK_IS_WINDOW (toplevel))
parent = toplevel;
else
parent = NULL;
cat_editor = g_object_new (E_TYPE_CATEGORY_EDITOR,
"transient-for", parent,
NULL);
e_category_editor_create_category (cat_editor);
......@@ -120,9 +131,20 @@ static void
edit_button_clicked_cb (GtkButton *button,
ECategoriesEditor *editor)
{
ECategoryEditor *cat_editor = e_category_editor_new ();
GtkWidget *toplevel, *parent;
ECategoryEditor *cat_editor;
gchar *category;
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (editor));
if (GTK_IS_WINDOW (toplevel))
parent = toplevel;
else
parent = NULL;
cat_editor = g_object_new (E_TYPE_CATEGORY_EDITOR,
"transient-for", parent,
NULL);
category = e_categories_selector_get_selected (
editor->priv->categories_list);
......
......@@ -176,6 +176,7 @@ e_category_editor_init (ECategoryEditor *editor)
gtk_grid_attach (grid_category_properties, label_name, 0, 0, 1, 1);
category_name = gtk_entry_new ();
gtk_entry_set_activates_default (GTK_ENTRY (category_name), TRUE);
gtk_widget_set_hexpand (category_name, TRUE);
gtk_widget_set_halign (category_name, GTK_ALIGN_FILL);
gtk_label_set_mnemonic_widget (GTK_LABEL (label_name), category_name);
......
......@@ -3552,8 +3552,8 @@ e_content_editor_emit_paste_primary_clipboard (EContentEditor *editor)
gboolean
e_content_editor_emit_context_menu_requested (EContentEditor *editor,
EContentEditorNodeFlags flags,
GdkEvent *event)
EContentEditorNodeFlags flags,
GdkEvent *event)
{
gboolean handled = FALSE;
......@@ -3566,7 +3566,7 @@ e_content_editor_emit_context_menu_requested (EContentEditor *editor,
void
e_content_editor_emit_find_done (EContentEditor *editor,
guint match_count)
guint match_count)
{
g_return_if_fail (E_IS_CONTENT_EDITOR (editor));
......@@ -3575,7 +3575,7 @@ e_content_editor_emit_find_done (EContentEditor *editor,
void
e_content_editor_emit_replace_all_done (EContentEditor *editor,
guint replaced_count)
guint replaced_count)
{
g_return_if_fail (E_IS_CONTENT_EDITOR (editor));
......
......@@ -1408,6 +1408,7 @@ e_date_edit_show_date_popup (EDateEdit *dedit,