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 {