{ "/MenuBar/EditMenu/SelectAllMenu", G_CALLBACK (modest_ui_dimming_rules_on_select_all) },
{ "/MenuBar/EditMenu/UndoMenu", G_CALLBACK (modest_ui_dimming_rules_on_undo) },
{ "/MenuBar/EditMenu/RedoMenu", G_CALLBACK (modest_ui_dimming_rules_on_redo) },
+ { "/MenuBar/EditMenu/PasteMenu", G_CALLBACK (modest_ui_dimming_rules_on_editor_paste) },
{ "/MenuBar/AttachmentsMenu/RemoveAttachmentsMenu", G_CALLBACK (modest_ui_dimming_rules_on_editor_remove_attachment) },
};
gboolean can_undo, can_redo;
gulong clipboard_change_handler_id;
gulong default_clipboard_change_handler_id;
+ gchar *clipboard_text;
TnyMsg *draft_msg;
TnyMsg *outbox_msg;
priv->can_redo = FALSE;
priv->clipboard_change_handler_id = 0;
priv->default_clipboard_change_handler_id = 0;
+ priv->clipboard_text = NULL;
priv->sent = FALSE;
priv->last_vadj_upper = 0;
/* Sanity check: shouldn't be needed, the window mgr should
call this function before */
modest_msg_edit_window_disconnect_signals (MODEST_WINDOW (obj));
+
+ if (priv->clipboard_text != NULL) {
+ g_free (priv->clipboard_text);
+ priv->clipboard_text = NULL;
+ }
if (priv->draft_msg != NULL) {
TnyHeader *header = tny_msg_get_header (priv->draft_msg);
modest_msg_edit_window_offer_attach_file (window);
}
+const gchar *
+modest_msg_edit_window_get_clipboard_text (ModestMsgEditWindow *win)
+{
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (win);
+
+ return priv->clipboard_text;
+}
+
static void
modest_msg_edit_window_clipboard_owner_change (GtkClipboard *clipboard,
GdkEvent *event,
ModestMsgEditWindow *window)
{
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+ GtkClipboard *selection_clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
if (!GTK_WIDGET_VISIBLE (window))
return;
+ if (priv->clipboard_text != NULL) {
+ g_free (priv->clipboard_text);
+ }
+
+ priv->clipboard_text = gtk_clipboard_wait_for_text (selection_clipboard);
+
modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules");
}
static void
return NULL;
}
}
+
}
if (!dimmed) {
- GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+ dimmed = GTK_IS_TOGGLE_BUTTON (focused);
+ }
+
+ if (!dimmed) {
ModestEmailClipboard *e_clipboard = modest_runtime_get_email_clipboard ();
dimmed = modest_email_clipboard_cleared (e_clipboard) &&
- !gtk_clipboard_wait_is_text_available (clipboard);
+ (modest_msg_edit_window_get_clipboard_text(MODEST_MSG_EDIT_WINDOW (win)) != NULL);
}
return dimmed;
gboolean modest_ui_dimming_rules_on_send (ModestWindow *win, gpointer user_data);
gboolean modest_ui_dimming_rules_on_editor_remove_attachment (ModestWindow *win, gpointer user_data);
gboolean modest_ui_dimming_rules_on_editor_paste (ModestWindow *win, gpointer user_data);
+gboolean modest_ui_dimming_rules_on_editor_paste_show_menu (ModestWindow *win, gpointer user_data);
G_END_DECLS
#endif
modest_msg_edit_window_get_child_widget (ModestMsgEditWindow *win,
ModestMsgEditWindowWidgetType widget_type);
+/**
+ * modest_msg_edit_window_get_clipboard_text:
+ * @win: a #ModestMsgEditWindow
+ *
+ * Obtains the currently selected text in selection clipboard
+ *
+ * Returns: a string
+ */
+const gchar *
+modest_msg_edit_window_get_clipboard_text (ModestMsgEditWindow *win);
+
G_END_DECLS
#endif /* __MODEST_MSG_EDIT_WINDOW_H__ */