From cdc3c40330378692ca9a01c5d6fe30205c53cdb4 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Wed, 20 Jun 2007 16:25:05 +0000 Subject: [PATCH] * src/maemo/modest-msg-edit-window.c: * Now it dims properly the Paste menu option (fixes NB#58809). pmo-trunk-r2343 --- src/maemo/modest-msg-edit-window.c | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/maemo/modest-msg-edit-window.c b/src/maemo/modest-msg-edit-window.c index 42c30cd..1e2d06d 100644 --- a/src/maemo/modest-msg-edit-window.c +++ b/src/maemo/modest-msg-edit-window.c @@ -116,8 +116,12 @@ static void modest_msg_edit_window_show_toolbar (ModestWindow *window, static void modest_msg_edit_window_clipboard_owner_change (GtkClipboard *clipboard, GdkEvent *event, ModestMsgEditWindow *window); +static void modest_msg_edit_window_system_clipboard_owner_change (GtkClipboard *clipboard, + GdkEvent *event, + ModestMsgEditWindow *window); static void update_window_title (ModestMsgEditWindow *window); static void update_dimmed (ModestMsgEditWindow *window); +static void update_paste_dimming (ModestMsgEditWindow *window); /* Find toolbar */ static void modest_msg_edit_window_find_toolbar_search (GtkWidget *widget, @@ -174,6 +178,7 @@ struct _ModestMsgEditWindowPrivate { gdouble zoom_level; gulong clipboard_change_handler_id; + gulong system_clipboard_change_handler_id; TnyMsg *draft_msg; }; @@ -276,6 +281,7 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj) priv->draft_msg = NULL; priv->clipboard_change_handler_id = 0; + priv->system_clipboard_change_handler_id = 0; } @@ -469,6 +475,8 @@ init_window (ModestMsgEditWindow *obj) priv->clipboard_change_handler_id = g_signal_connect (G_OBJECT (gtk_clipboard_get (GDK_SELECTION_PRIMARY)), "owner-change", G_CALLBACK (modest_msg_edit_window_clipboard_owner_change), obj); + priv->system_clipboard_change_handler_id = g_signal_connect (G_OBJECT (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD)), "owner-change", + G_CALLBACK (modest_msg_edit_window_system_clipboard_owner_change), obj); } @@ -483,6 +491,12 @@ modest_msg_edit_window_finalize (GObject *obj) priv->clipboard_change_handler_id = 0; } + if (priv->system_clipboard_change_handler_id > 0) { + g_signal_handler_disconnect (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD), + priv->system_clipboard_change_handler_id); + priv->system_clipboard_change_handler_id = 0; + } + /* This had to stay alive for as long as the combobox that used it: */ modest_pair_list_free (priv->from_field_protos); @@ -955,6 +969,8 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name) MODEST_FILE_FORMAT_FORMATTED_TEXT : MODEST_FILE_FORMAT_PLAIN_TEXT; modest_msg_edit_window_set_file_format (MODEST_MSG_EDIT_WINDOW (obj), file_format); + + update_paste_dimming (MODEST_MSG_EDIT_WINDOW (obj)); return (ModestWindow*) obj; } @@ -1400,6 +1416,7 @@ modest_msg_edit_window_insert_image (ModestMsgEditWindow *window) priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_OPEN); + gtk_window_set_title (GTK_WINDOW (dialog), _("mcen_ia_select_inline_image_title")); response = gtk_dialog_run (GTK_DIALOG (dialog)); switch (response) { @@ -2494,6 +2511,8 @@ modest_msg_edit_window_clipboard_owner_change (GtkClipboard *clipboard, gtk_action_set_sensitive (action, (selection != NULL) && (!MODEST_IS_ATTACHMENTS_VIEW (focused))); action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/EditMenu/CopyMenu"); gtk_action_set_sensitive (action, (selection != NULL) && (!MODEST_IS_ATTACHMENTS_VIEW (focused))); + + update_paste_dimming (window); } static void @@ -2585,3 +2604,25 @@ modest_msg_edit_window_find_toolbar_close (GtkWidget *widget, } +static void +update_paste_dimming (ModestMsgEditWindow *window) +{ + ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (window); + GtkAction *action = NULL; + GtkClipboard *clipboard = NULL; + + clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); + + action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/EditMenu/PasteMenu"); + gtk_action_set_sensitive (action, gtk_clipboard_wait_is_text_available (clipboard)); + +} + +static void +modest_msg_edit_window_system_clipboard_owner_change (GtkClipboard *clipboard, + GdkEvent *event, + ModestMsgEditWindow *window) +{ + update_paste_dimming (window); +} + -- 1.7.9.5