commit 1a9ec36b0a3a29b6ad2397d2741fcb080d51fba3
parent 156003b4bd1b6d638d726dec42af60bda6046e1c
Author: Michael Rasmussen <mir@datanom.net>
Date: Sat, 25 Dec 2021 22:44:38 +0100
Warn when user tries to paste more text into compose window than the defined max size in commons/utils.h
Signed-off-by: Michael Rasmussen <mir@datanom.net>
Diffstat:
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/src/compose.c b/src/compose.c
@@ -10868,6 +10868,20 @@ static void entry_copy_clipboard(GtkWidget *entry)
gtk_clipboard_get(GDK_SELECTION_CLIPBOARD));
}
+static void text_to_big_alert(Compose *compose, glong size) {
+ GtkDialogFlags flags = GTK_DIALOG_DESTROY_WITH_PARENT;
+ GtkMessageDialog* dialog = gtk_message_dialog_new(
+ GTK_WINDOW(compose->window),
+ flags,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+ _("Number of pages '%d' exceeds limit '%d' for paste. Attach as file instead"),
+ (size / 1800),
+ (MAX_ALLOCA_MEM_SIZE / 1800));
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
static void entry_paste_clipboard(Compose *compose, GtkWidget *entry,
gboolean wrap, GdkAtom clip, GtkTextIter *insert_place)
{
@@ -10880,7 +10894,12 @@ static void entry_paste_clipboard(Compose *compose, GtkWidget *entry,
if (contents == NULL)
return;
-
+
+ glong len = g_utf8_strlen(contents, -1);
+ if (len > MAX_ALLOCA_MEM_SIZE) {
+ text_to_big_alert(compose, len);
+ return;
+ }
/* we shouldn't delete the selection when middle-click-pasting, or we
* can't mid-click-paste our own selection */
if (clip != GDK_SELECTION_PRIMARY) {