pidgin/gtkimhtml.c

changeset 29909
3b74346e22d5
parent 29855
234f74a60570
child 30033
391b14824468
equal deleted inserted replaced
29908:82e7c84d57a2 29909:3b74346e22d5
150 CLEAR_FORMAT, 150 CLEAR_FORMAT,
151 UPDATE_FORMAT, 151 UPDATE_FORMAT,
152 MESSAGE_SEND, 152 MESSAGE_SEND,
153 UNDO, 153 UNDO,
154 REDO, 154 REDO,
155 PASTE,
155 LAST_SIGNAL 156 LAST_SIGNAL
156 }; 157 };
157 static guint signals [LAST_SIGNAL] = { 0 }; 158 static guint signals [LAST_SIGNAL] = { 0 };
158 159
159 static char *html_clipboard = NULL; 160 static char *html_clipboard = NULL;
1339 } 1340 }
1340 1341
1341 static gboolean imhtml_message_send(GtkIMHtml *imhtml) 1342 static gboolean imhtml_message_send(GtkIMHtml *imhtml)
1342 { 1343 {
1343 return FALSE; 1344 return FALSE;
1345 }
1346
1347 static void
1348 imhtml_paste_cb(GtkIMHtml *imhtml, const char *str)
1349 {
1350 if (!str || !*str || !strcmp(str, "html"))
1351 g_signal_emit_by_name(imhtml, "paste_clipboard");
1352 else if (!strcmp(str, "text"))
1353 paste_unformatted_cb(NULL, imhtml);
1344 } 1354 }
1345 1355
1346 static void imhtml_toggle_format(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons) 1356 static void imhtml_toggle_format(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons)
1347 { 1357 {
1348 /* since this function is the handler for the formatting keystrokes, 1358 /* since this function is the handler for the formatting keystrokes,
1511 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 1521 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
1512 G_STRUCT_OFFSET(GtkIMHtmlClass, message_send), 1522 G_STRUCT_OFFSET(GtkIMHtmlClass, message_send),
1513 NULL, 1523 NULL,
1514 0, g_cclosure_marshal_VOID__VOID, 1524 0, g_cclosure_marshal_VOID__VOID,
1515 G_TYPE_NONE, 0); 1525 G_TYPE_NONE, 0);
1516 signals [UNDO] = g_signal_new ("undo", 1526 signals[PASTE] = g_signal_new("paste",
1517 G_TYPE_FROM_CLASS (klass), 1527 G_TYPE_FROM_CLASS(gobject_class),
1518 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 1528 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
1519 G_STRUCT_OFFSET (GtkIMHtmlClass, undo), 1529 0,
1520 NULL, 1530 NULL,
1521 NULL, 1531 0, g_cclosure_marshal_VOID__STRING,
1522 gtksourceview_marshal_VOID__VOID, 1532 G_TYPE_NONE, 1, G_TYPE_STRING);
1523 G_TYPE_NONE, 1533 signals [UNDO] = g_signal_new ("undo",
1524 0); 1534 G_TYPE_FROM_CLASS (klass),
1525 signals [REDO] = g_signal_new ("redo", 1535 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
1526 G_TYPE_FROM_CLASS (klass), 1536 G_STRUCT_OFFSET (GtkIMHtmlClass, undo),
1527 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 1537 NULL,
1528 G_STRUCT_OFFSET (GtkIMHtmlClass, redo), 1538 NULL,
1529 NULL, 1539 gtksourceview_marshal_VOID__VOID,
1530 NULL, 1540 G_TYPE_NONE,
1531 gtksourceview_marshal_VOID__VOID, 1541 0);
1532 G_TYPE_NONE, 1542 signals [REDO] = g_signal_new ("redo",
1533 0); 1543 G_TYPE_FROM_CLASS (klass),
1544 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
1545 G_STRUCT_OFFSET (GtkIMHtmlClass, redo),
1546 NULL,
1547 NULL,
1548 gtksourceview_marshal_VOID__VOID,
1549 G_TYPE_NONE,
1550 0);
1534 1551
1535 1552
1536 1553
1537 klass->toggle_format = imhtml_toggle_format; 1554 klass->toggle_format = imhtml_toggle_format;
1538 klass->message_send = imhtml_message_send; 1555 klass->message_send = imhtml_message_send;
1613 gtk_binding_entry_add_signal (binding_set, GDK_minus, GDK_CONTROL_MASK, "format_function_toggle", 1, G_TYPE_INT, GTK_IMHTML_SHRINK); 1630 gtk_binding_entry_add_signal (binding_set, GDK_minus, GDK_CONTROL_MASK, "format_function_toggle", 1, G_TYPE_INT, GTK_IMHTML_SHRINK);
1614 binding_set = gtk_binding_set_by_class(klass); 1631 binding_set = gtk_binding_set_by_class(klass);
1615 gtk_binding_entry_add_signal (binding_set, GDK_r, GDK_CONTROL_MASK, "format_function_clear", 0); 1632 gtk_binding_entry_add_signal (binding_set, GDK_r, GDK_CONTROL_MASK, "format_function_clear", 0);
1616 gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0, "message_send", 0); 1633 gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0, "message_send", 0);
1617 gtk_binding_entry_add_signal (binding_set, GDK_Return, 0, "message_send", 0); 1634 gtk_binding_entry_add_signal (binding_set, GDK_Return, 0, "message_send", 0);
1618 gtk_binding_entry_add_signal (binding_set, GDK_z, GDK_CONTROL_MASK, "undo", 0); 1635 gtk_binding_entry_add_signal (binding_set, GDK_z, GDK_CONTROL_MASK, "undo", 0);
1619 gtk_binding_entry_add_signal (binding_set, GDK_z, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "redo", 0); 1636 gtk_binding_entry_add_signal (binding_set, GDK_z, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "redo", 0);
1620 gtk_binding_entry_add_signal (binding_set, GDK_F14, 0, "undo", 0); 1637 gtk_binding_entry_add_signal (binding_set, GDK_F14, 0, "undo", 0);
1621 1638 gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "paste", 1, G_TYPE_STRING, "text");
1622 } 1639 }
1623 1640
1624 static void gtk_imhtml_init (GtkIMHtml *imhtml) 1641 static void gtk_imhtml_init (GtkIMHtml *imhtml)
1625 { 1642 {
1626 imhtml->text_buffer = gtk_text_buffer_new(NULL); 1643 imhtml->text_buffer = gtk_text_buffer_new(NULL);
1687 g_signal_connect(G_OBJECT(imhtml), "copy-clipboard", G_CALLBACK(copy_clipboard_cb), NULL); 1704 g_signal_connect(G_OBJECT(imhtml), "copy-clipboard", G_CALLBACK(copy_clipboard_cb), NULL);
1688 g_signal_connect(G_OBJECT(imhtml), "cut-clipboard", G_CALLBACK(cut_clipboard_cb), NULL); 1705 g_signal_connect(G_OBJECT(imhtml), "cut-clipboard", G_CALLBACK(cut_clipboard_cb), NULL);
1689 g_signal_connect(G_OBJECT(imhtml), "paste-clipboard", G_CALLBACK(paste_clipboard_cb), NULL); 1706 g_signal_connect(G_OBJECT(imhtml), "paste-clipboard", G_CALLBACK(paste_clipboard_cb), NULL);
1690 g_signal_connect_after(G_OBJECT(imhtml), "realize", G_CALLBACK(imhtml_realized_remove_primary), NULL); 1707 g_signal_connect_after(G_OBJECT(imhtml), "realize", G_CALLBACK(imhtml_realized_remove_primary), NULL);
1691 g_signal_connect(G_OBJECT(imhtml), "unrealize", G_CALLBACK(imhtml_destroy_add_primary), NULL); 1708 g_signal_connect(G_OBJECT(imhtml), "unrealize", G_CALLBACK(imhtml_destroy_add_primary), NULL);
1709 g_signal_connect(G_OBJECT(imhtml), "paste", G_CALLBACK(imhtml_paste_cb), NULL);
1692 1710
1693 #ifndef _WIN32 1711 #ifndef _WIN32
1694 g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set", 1712 g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set",
1695 G_CALLBACK(mark_set_so_update_selection_cb), imhtml); 1713 G_CALLBACK(mark_set_so_update_selection_cb), imhtml);
1696 #endif 1714 #endif

mercurial