comparison src/gtkimhtml.c @ 8786:f3d063680a45

[gaim-migrate @ 9548] Tim "marv" Ringenbach brazenly busted Gtk2.0 compatability, but then he amicably fixed it. That's the kind of crazy patch-writing we like to see. Only maybe next time it can be before release, and not after. ;-) committer: Tailor Script <tailor@pidgin.im>
author Ethan Blanton <elb@pidgin.im>
date Sat, 24 Apr 2004 00:45:58 +0000
parents 5a2b5e4abf3a
children 262f81346c0a
comparison
equal deleted inserted replaced
8785:a871dec1c9d6 8786:f3d063680a45
63 #ifndef GTK_WRAP_WORD_CHAR 63 #ifndef GTK_WRAP_WORD_CHAR
64 #define GTK_WRAP_WORD_CHAR GTK_WRAP_WORD 64 #define GTK_WRAP_WORD_CHAR GTK_WRAP_WORD
65 #endif 65 #endif
66 66
67 #define TOOLTIP_TIMEOUT 500 67 #define TOOLTIP_TIMEOUT 500
68
69 /* GTK+ 2.0 hack */
70 #if (!GTK_CHECK_VERSION(2,2,0))
71 #define gtk_widget_get_clipboard(x, y) gtk_clipboard_get(y)
72 #endif
68 73
69 static void preinsert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml); 74 static void preinsert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml);
70 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml); 75 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml);
71 static gboolean gtk_imhtml_is_amp_escape (const gchar *string, gchar **replace, gint *length); 76 static gboolean gtk_imhtml_is_amp_escape (const gchar *string, gchar **replace, gint *length);
72 void gtk_imhtml_close_tags(GtkIMHtml *imhtml, GtkTextIter *iter); 77 void gtk_imhtml_close_tags(GtkIMHtml *imhtml, GtkTextIter *iter);
534 return TRUE; 539 return TRUE;
535 } 540 }
536 return FALSE; 541 return FALSE;
537 } 542 }
538 543
539 #if GTK_CHECK_VERSION(2,2,0)
540 static void gtk_imhtml_clipboard_get(GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info, GtkIMHtml *imhtml) { 544 static void gtk_imhtml_clipboard_get(GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info, GtkIMHtml *imhtml) {
541 char *text; 545 char *text;
542 gboolean primary; 546 gboolean primary;
543 GtkTextIter start, end; 547 GtkTextIter start, end;
544 GtkTextMark *sel = gtk_text_buffer_get_selection_bound(imhtml->text_buffer); 548 GtkTextMark *sel = gtk_text_buffer_get_selection_bound(imhtml->text_buffer);
804 static void imhtml_destroy_add_primary(GtkIMHtml *imhtml, gpointer unused) 808 static void imhtml_destroy_add_primary(GtkIMHtml *imhtml, gpointer unused)
805 { 809 {
806 gtk_text_buffer_add_selection_clipboard(GTK_IMHTML(imhtml)->text_buffer, 810 gtk_text_buffer_add_selection_clipboard(GTK_IMHTML(imhtml)->text_buffer,
807 gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_PRIMARY)); 811 gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_PRIMARY));
808 } 812 }
809 #endif
810 813
811 static void mark_set_so_update_selection_cb(GtkTextBuffer *buffer, GtkTextIter *arg1, GtkTextMark *mark, GtkIMHtml *imhtml) 814 static void mark_set_so_update_selection_cb(GtkTextBuffer *buffer, GtkTextIter *arg1, GtkTextMark *mark, GtkIMHtml *imhtml)
812 { 815 {
813 if (gtk_text_buffer_get_selection_bounds(buffer, NULL, NULL)) { 816 if (gtk_text_buffer_get_selection_bounds(buffer, NULL, NULL)) {
814 gtk_clipboard_set_with_owner(gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_PRIMARY), 817 gtk_clipboard_set_with_owner(gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_PRIMARY),
987 gtk_drag_dest_set(GTK_WIDGET(imhtml), 0, 990 gtk_drag_dest_set(GTK_WIDGET(imhtml), 0,
988 link_drag_drop_targets, sizeof(link_drag_drop_targets) / sizeof(GtkTargetEntry), 991 link_drag_drop_targets, sizeof(link_drag_drop_targets) / sizeof(GtkTargetEntry),
989 GDK_ACTION_COPY); 992 GDK_ACTION_COPY);
990 g_signal_connect(G_OBJECT(imhtml), "drag_data_received", G_CALLBACK(gtk_imhtml_link_drag_rcv_cb), imhtml); 993 g_signal_connect(G_OBJECT(imhtml), "drag_data_received", G_CALLBACK(gtk_imhtml_link_drag_rcv_cb), imhtml);
991 994
992 #if GTK_CHECK_VERSION(2,2,0)
993 g_signal_connect(G_OBJECT(imhtml), "copy-clipboard", G_CALLBACK(copy_clipboard_cb), NULL); 995 g_signal_connect(G_OBJECT(imhtml), "copy-clipboard", G_CALLBACK(copy_clipboard_cb), NULL);
994 g_signal_connect(G_OBJECT(imhtml), "cut-clipboard", G_CALLBACK(cut_clipboard_cb), NULL); 996 g_signal_connect(G_OBJECT(imhtml), "cut-clipboard", G_CALLBACK(cut_clipboard_cb), NULL);
995 g_signal_connect(G_OBJECT(imhtml), "paste-clipboard", G_CALLBACK(paste_clipboard_cb), NULL); 997 g_signal_connect(G_OBJECT(imhtml), "paste-clipboard", G_CALLBACK(paste_clipboard_cb), NULL);
996 //g_signal_connect_after(G_OBJECT(imhtml), "button-release-event", G_CALLBACK(button_release_cb), imhtml); 998 //g_signal_connect_after(G_OBJECT(imhtml), "button-release-event", G_CALLBACK(button_release_cb), imhtml);
997 g_signal_connect_after(G_OBJECT(imhtml), "realize", G_CALLBACK(imhtml_realized_remove_primary), NULL); 999 g_signal_connect_after(G_OBJECT(imhtml), "realize", G_CALLBACK(imhtml_realized_remove_primary), NULL);
998 g_signal_connect(G_OBJECT(imhtml), "unrealize", G_CALLBACK(imhtml_destroy_add_primary), NULL); 1000 g_signal_connect(G_OBJECT(imhtml), "unrealize", G_CALLBACK(imhtml_destroy_add_primary), NULL);
999 #endif
1000 1001
1001 g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set", 1002 g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set",
1002 G_CALLBACK(mark_set_so_update_selection_cb), imhtml); 1003 G_CALLBACK(mark_set_so_update_selection_cb), imhtml);
1003 1004
1004 gtk_widget_add_events(GTK_WIDGET(imhtml), GDK_LEAVE_NOTIFY_MASK); 1005 gtk_widget_add_events(GTK_WIDGET(imhtml), GDK_LEAVE_NOTIFY_MASK);