Mercurial > pidgin
comparison src/gtkimhtml.c @ 8177:4e68644a47f6
[gaim-migrate @ 8891]
-Add a visible caret to gtkimhtml windows so non-mouse using people
can select text
-Made shift and the arrow keys valid keys for the conversation
backlog so text can be highlighted without focus going to the
text input box
-Removed a bunch of // styles comments from gtkimhtml
-Layed the smack down
-Didn't do my homework
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 28 Jan 2004 06:08:04 +0000 |
parents | eb2a420060f8 |
children | b248c1f4efbd |
comparison
equal
deleted
inserted
replaced
8176:c733bb72b002 | 8177:4e68644a47f6 |
---|---|
775 if(gaim_str_has_prefix(link, "http://") || | 775 if(gaim_str_has_prefix(link, "http://") || |
776 gaim_str_has_prefix(link, "https://") || | 776 gaim_str_has_prefix(link, "https://") || |
777 gaim_str_has_prefix(link, "ftp://")){ | 777 gaim_str_has_prefix(link, "ftp://")){ |
778 gtk_imhtml_insert_link(imhtml, link, link); | 778 gtk_imhtml_insert_link(imhtml, link, link); |
779 } else if (link=='\0') { | 779 } else if (link=='\0') { |
780 //Ignore blank lines | 780 /* Ignore blank lines */ |
781 } else { | 781 } else { |
782 //Special reasons, aka images being put in via other tag, etc. | 782 /* Special reasons, aka images being put in via other tag, etc. */ |
783 } | 783 } |
784 } | 784 } |
785 | 785 |
786 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); | 786 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
787 } else { | 787 } else { |
1184 gint len; | 1184 gint len; |
1185 gchar *c; | 1185 gchar *c; |
1186 GString *ret; | 1186 GString *ret; |
1187 | 1187 |
1188 while (g_ascii_strncasecmp (t, opt, strlen (opt))) { | 1188 while (g_ascii_strncasecmp (t, opt, strlen (opt))) { |
1189 // gboolean quote = FALSE; | 1189 /* gboolean quote = FALSE; */ |
1190 if (*t == '\0') break; | 1190 if (*t == '\0') break; |
1191 while (*t && !((*t == ' ') /*&& !quote*/)) { | 1191 while (*t && !((*t == ' ') /*&& !quote*/)) { |
1192 /* if (*t == '\"') | 1192 /* if (*t == '\"') |
1193 quote = ! quote;*/ | 1193 quote = ! quote; */ |
1194 t++; | 1194 t++; |
1195 } | 1195 } |
1196 while (*t && (*t == ' ')) t++; | 1196 while (*t && (*t == ' ')) t++; |
1197 } | 1197 } |
1198 | 1198 |
1386 if (underline == 0) | 1386 if (underline == 0) |
1387 gtk_imhtml_toggle_underline(imhtml); | 1387 gtk_imhtml_toggle_underline(imhtml); |
1388 break; | 1388 break; |
1389 case 13: /* S */ | 1389 case 13: /* S */ |
1390 case 14: /* STRIKE */ | 1390 case 14: /* STRIKE */ |
1391 //NEW_BIT (NEW_TEXT_BIT); | 1391 /* NEW_BIT (NEW_TEXT_BIT); */ |
1392 strike++; | 1392 strike++; |
1393 break; | 1393 break; |
1394 case 15: /* /S */ | 1394 case 15: /* /S */ |
1395 case 16: /* /STRIKE */ | 1395 case 16: /* /STRIKE */ |
1396 //NEW_BIT (NEW_TEXT_BIT); | 1396 /* NEW_BIT (NEW_TEXT_BIT); */ |
1397 if (strike) | 1397 if (strike) |
1398 strike--; | 1398 strike--; |
1399 break; | 1399 break; |
1400 case 17: /* SUB */ | 1400 case 17: /* SUB */ |
1401 //NEW_BIT (NEW_TEXT_BIT); | 1401 /* NEW_BIT (NEW_TEXT_BIT); */ |
1402 sub++; | 1402 sub++; |
1403 break; | 1403 break; |
1404 case 18: /* /SUB */ | 1404 case 18: /* /SUB */ |
1405 //NEW_BIT (NEW_TEXT_BIT); | 1405 /* NEW_BIT (NEW_TEXT_BIT); */ |
1406 if (sub) | 1406 if (sub) |
1407 sub--; | 1407 sub--; |
1408 break; | 1408 break; |
1409 case 19: /* SUP */ | 1409 case 19: /* SUP */ |
1410 //NEW_BIT (NEW_TEXT_BIT); | 1410 /* NEW_BIT (NEW_TEXT_BIT); */ |
1411 sup++; | 1411 sup++; |
1412 break; | 1412 break; |
1413 case 20: /* /SUP */ | 1413 case 20: /* /SUP */ |
1414 //NEW_BIT (NEW_TEXT_BIT); | 1414 /* NEW_BIT (NEW_TEXT_BIT); */ |
1415 if (sup) | 1415 if (sup) |
1416 sup--; | 1416 sup--; |
1417 break; | 1417 break; |
1418 case 21: /* PRE */ | 1418 case 21: /* PRE */ |
1419 //NEW_BIT (NEW_TEXT_BIT); | 1419 /* NEW_BIT (NEW_TEXT_BIT); */ |
1420 pre++; | 1420 pre++; |
1421 break; | 1421 break; |
1422 case 22: /* /PRE */ | 1422 case 22: /* /PRE */ |
1423 //NEW_BIT (NEW_TEXT_BIT); | 1423 /* NEW_BIT (NEW_TEXT_BIT); */ |
1424 if (pre) | 1424 if (pre) |
1425 pre--; | 1425 pre--; |
1426 break; | 1426 break; |
1427 case 23: /* TITLE */ | 1427 case 23: /* TITLE */ |
1428 //NEW_BIT (NEW_TEXT_BIT); | 1428 /* NEW_BIT (NEW_TEXT_BIT); */ |
1429 title++; | 1429 title++; |
1430 break; | 1430 break; |
1431 case 24: /* /TITLE */ | 1431 case 24: /* /TITLE */ |
1432 if (title) { | 1432 if (title) { |
1433 if (options & GTK_IMHTML_NO_TITLE) { | 1433 if (options & GTK_IMHTML_NO_TITLE) { |
1440 case 25: /* BR */ | 1440 case 25: /* BR */ |
1441 case 58: /* BR/ */ | 1441 case 58: /* BR/ */ |
1442 case 61: /* BR (opt) */ | 1442 case 61: /* BR (opt) */ |
1443 ws[wpos] = '\n'; | 1443 ws[wpos] = '\n'; |
1444 wpos++; | 1444 wpos++; |
1445 //NEW_BIT (NEW_TEXT_BIT); | 1445 /* NEW_BIT (NEW_TEXT_BIT); */ |
1446 break; | 1446 break; |
1447 case 26: /* HR */ | 1447 case 26: /* HR */ |
1448 case 42: /* HR (opt) */ | 1448 case 42: /* HR (opt) */ |
1449 ws[wpos++] = '\n'; | 1449 ws[wpos++] = '\n'; |
1450 if (url) | 1450 if (url) |
1466 if (url) | 1466 if (url) |
1467 gtk_imhtml_insert_link(imhtml, url, ws); | 1467 gtk_imhtml_insert_link(imhtml, url, ws); |
1468 else | 1468 else |
1469 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); | 1469 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); |
1470 ws[0] = '\0'; wpos = 0; | 1470 ws[0] = '\0'; wpos = 0; |
1471 //NEW_BIT (NEW_TEXT_BIT); | 1471 /* NEW_BIT (NEW_TEXT_BIT); */ |
1472 fonts = g_slist_remove (fonts, font); | 1472 fonts = g_slist_remove (fonts, font); |
1473 if (font->face) { | 1473 if (font->face) { |
1474 gtk_imhtml_toggle_fontface(imhtml, NULL); | 1474 gtk_imhtml_toggle_fontface(imhtml, NULL); |
1475 g_free (font->face); | 1475 g_free (font->face); |
1476 } | 1476 } |
1572 } | 1572 } |
1573 if (font->size > 100) | 1573 if (font->size > 100) |
1574 font->size = 100; | 1574 font->size = 100; |
1575 } else if (oldfont) | 1575 } else if (oldfont) |
1576 font->size = oldfont->size; | 1576 font->size = oldfont->size; |
1577 // gtk_imhtml_font_set_size(imhtml, font->size); | 1577 /* gtk_imhtml_font_set_size(imhtml, font->size); */ |
1578 g_free(size); | 1578 g_free(size); |
1579 fonts = g_slist_prepend (fonts, font); | 1579 fonts = g_slist_prepend (fonts, font); |
1580 } | 1580 } |
1581 break; | 1581 break; |
1582 case 44: /* BODY (opt) */ | 1582 case 44: /* BODY (opt) */ |
1586 if (url) | 1586 if (url) |
1587 gtk_imhtml_insert_link(imhtml, url, ws); | 1587 gtk_imhtml_insert_link(imhtml, url, ws); |
1588 else | 1588 else |
1589 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); | 1589 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); |
1590 ws[0] = '\0'; wpos = 0; | 1590 ws[0] = '\0'; wpos = 0; |
1591 // NEW_BIT(NEW_TEXT_BIT); | 1591 /* NEW_BIT(NEW_TEXT_BIT); */ |
1592 if (bg) | 1592 if (bg) |
1593 g_free(bg); | 1593 g_free(bg); |
1594 bg = bgcolor; | 1594 bg = bgcolor; |
1595 gtk_imhtml_toggle_backcolor(imhtml, bg); | 1595 gtk_imhtml_toggle_backcolor(imhtml, bg); |
1596 } | 1596 } |
1626 GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_BUTTON, | 1626 GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_BUTTON, |
1627 "gtkimhtml-missing-image"); | 1627 "gtkimhtml-missing-image"); |
1628 } | 1628 } |
1629 | 1629 |
1630 scalable = gtk_imhtml_image_new(img, filename); | 1630 scalable = gtk_imhtml_image_new(img, filename); |
1631 //NEW_BIT(NEW_SCALABLE_BIT); | 1631 /* NEW_BIT(NEW_SCALABLE_BIT); */ |
1632 g_object_unref(G_OBJECT(img)); | 1632 g_object_unref(G_OBJECT(img)); |
1633 } | 1633 } |
1634 case 47: /* P (opt) */ | 1634 case 47: /* P (opt) */ |
1635 case 48: /* H3 (opt) */ | 1635 case 48: /* H3 (opt) */ |
1636 case 49: /* HTML (opt) */ | 1636 case 49: /* HTML (opt) */ |
1663 if (url) | 1663 if (url) |
1664 gtk_imhtml_insert_link(imhtml, url, ws); | 1664 gtk_imhtml_insert_link(imhtml, url, ws); |
1665 else | 1665 else |
1666 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); | 1666 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); |
1667 ws[0] = '\0'; wpos = 0; | 1667 ws[0] = '\0'; wpos = 0; |
1668 //NEW_BIT (NEW_TEXT_BIT); | 1668 /* NEW_BIT (NEW_TEXT_BIT); */ |
1669 | 1669 |
1670 font = g_new0 (GtkIMHtmlFontDetail, 1); | 1670 font = g_new0 (GtkIMHtmlFontDetail, 1); |
1671 if (fonts) | 1671 if (fonts) |
1672 oldfont = fonts->data; | 1672 oldfont = fonts->data; |
1673 | 1673 |
1719 if (url) | 1719 if (url) |
1720 gtk_imhtml_insert_link(imhtml, url, ws); | 1720 gtk_imhtml_insert_link(imhtml, url, ws); |
1721 else | 1721 else |
1722 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); | 1722 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); |
1723 ws[0] = '\0'; wpos = 0; | 1723 ws[0] = '\0'; wpos = 0; |
1724 //NEW_BIT (NEW_TEXT_BIT); | 1724 /* NEW_BIT (NEW_TEXT_BIT); */ |
1725 fonts = g_slist_remove (fonts, font); | 1725 fonts = g_slist_remove (fonts, font); |
1726 if (font->face) | 1726 if (font->face) |
1727 g_free (font->face); | 1727 g_free (font->face); |
1728 if (font->fore) | 1728 if (font->fore) |
1729 g_free (font->fore); | 1729 g_free (font->fore); |
1735 } | 1735 } |
1736 break; | 1736 break; |
1737 case 60: /* SPAN */ | 1737 case 60: /* SPAN */ |
1738 break; | 1738 break; |
1739 case 62: /* comment */ | 1739 case 62: /* comment */ |
1740 //NEW_BIT (NEW_TEXT_BIT); | 1740 /* NEW_BIT (NEW_TEXT_BIT); */ |
1741 if (imhtml->show_comments) | 1741 if (imhtml->show_comments) |
1742 wpos = g_snprintf (ws, len, "%s", tag); | 1742 wpos = g_snprintf (ws, len, "%s", tag); |
1743 // NEW_BIT (NEW_COMMENT_BIT); | 1743 /* NEW_BIT (NEW_COMMENT_BIT); */ |
1744 break; | 1744 break; |
1745 default: | 1745 default: |
1746 break; | 1746 break; |
1747 } | 1747 } |
1748 c += tlen; | 1748 c += tlen; |
1763 gtk_imhtml_insert_link(imhtml, url, ws); | 1763 gtk_imhtml_insert_link(imhtml, url, ws); |
1764 else | 1764 else |
1765 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); | 1765 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); |
1766 ws[0] = '\0'; | 1766 ws[0] = '\0'; |
1767 wpos = 0; | 1767 wpos = 0; |
1768 //NEW_BIT (NEW_TEXT_BIT); | 1768 /* NEW_BIT (NEW_TEXT_BIT); */ |
1769 } | 1769 } |
1770 c++; | 1770 c++; |
1771 pos++; | 1771 pos++; |
1772 } else if (imhtml->show_smileys && (gtk_imhtml_is_smiley (imhtml, fonts, c, &smilelen) || gtk_imhtml_is_smiley(imhtml, NULL, c, &smilelen))) { | 1772 } else if (imhtml->show_smileys && (gtk_imhtml_is_smiley (imhtml, fonts, c, &smilelen) || gtk_imhtml_is_smiley(imhtml, NULL, c, &smilelen))) { |
1773 GtkIMHtmlFontDetail *fd; | 1773 GtkIMHtmlFontDetail *fd; |
1804 gtk_imhtml_insert_link(imhtml, url, ws); | 1804 gtk_imhtml_insert_link(imhtml, url, ws); |
1805 else | 1805 else |
1806 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); | 1806 gtk_text_buffer_insert(imhtml->text_buffer, &iter, ws, wpos); |
1807 ws[0] = '\0'; wpos = 0; | 1807 ws[0] = '\0'; wpos = 0; |
1808 | 1808 |
1809 //NEW_BIT(NEW_TEXT_BIT); | 1809 /* NEW_BIT(NEW_TEXT_BIT); */ |
1810 if (url) { | 1810 if (url) { |
1811 g_free (url); | 1811 g_free (url); |
1812 if (str) | 1812 if (str) |
1813 str = g_string_append (str, "</A>"); | 1813 str = g_string_append (str, "</A>"); |
1814 } | 1814 } |
2323 } | 2323 } |
2324 | 2324 |
2325 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable) | 2325 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable) |
2326 { | 2326 { |
2327 gtk_text_view_set_editable(GTK_TEXT_VIEW(imhtml), editable); | 2327 gtk_text_view_set_editable(GTK_TEXT_VIEW(imhtml), editable); |
2328 gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(imhtml), editable); | 2328 /* |
2329 * We need a visible caret for accessibility, so mouseless | |
2330 * people can highlight stuff. | |
2331 */ | |
2332 /* gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(imhtml), editable); */ | |
2329 imhtml->editable = editable; | 2333 imhtml->editable = editable; |
2330 } | 2334 } |
2331 | 2335 |
2332 gboolean gtk_imhtml_get_editable(GtkIMHtml *imhtml) | 2336 gboolean gtk_imhtml_get_editable(GtkIMHtml *imhtml) |
2333 { | 2337 { |