Mercurial > pidgin
comparison src/gtkimhtml.c @ 7740:ddc450689c05
[gaim-migrate @ 8385]
Font sizes wysiwyg. Which is cool.
Now we just need to make POINT_SIZE center around the GTK+ theme font size.
Also, it would be cool if we could handle the ol' point size/font size problem
here.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Thu, 04 Dec 2003 07:53:42 +0000 |
parents | 662a33ce4343 |
children | 6cd69aa58253 |
comparison
equal
deleted
inserted
replaced
7739:2850079ad35f | 7740:ddc450689c05 |
---|---|
521 imhtml->edit.italic = NULL; | 521 imhtml->edit.italic = NULL; |
522 imhtml->edit.underline = NULL; | 522 imhtml->edit.underline = NULL; |
523 imhtml->edit.forecolor = NULL; | 523 imhtml->edit.forecolor = NULL; |
524 imhtml->edit.backcolor = NULL; | 524 imhtml->edit.backcolor = NULL; |
525 imhtml->edit.fontface = NULL; | 525 imhtml->edit.fontface = NULL; |
526 imhtml->edit.sizespan = NULL; | |
527 imhtml->edit.fontsize = 3; | |
526 | 528 |
527 imhtml->format_spans = NULL; | 529 imhtml->format_spans = NULL; |
528 | 530 |
529 imhtml->scalables = NULL; | 531 imhtml->scalables = NULL; |
530 #if GTK_CHECK_VERSION(2,2,0) | 532 #if GTK_CHECK_VERSION(2,2,0) |
1638 imhtml->edit.italic = NULL; | 1640 imhtml->edit.italic = NULL; |
1639 imhtml->edit.underline = NULL; | 1641 imhtml->edit.underline = NULL; |
1640 imhtml->edit.fontface = NULL; | 1642 imhtml->edit.fontface = NULL; |
1641 imhtml->edit.forecolor = NULL; | 1643 imhtml->edit.forecolor = NULL; |
1642 imhtml->edit.backcolor = NULL; | 1644 imhtml->edit.backcolor = NULL; |
1645 imhtml->edit.sizespan = NULL; | |
1646 imhtml->edit.fontsize = 3; | |
1643 } | 1647 } |
1644 | 1648 |
1645 void gtk_imhtml_page_up (GtkIMHtml *imhtml) | 1649 void gtk_imhtml_page_up (GtkIMHtml *imhtml) |
1646 { | 1650 { |
1647 GdkRectangle rect; | 1651 GdkRectangle rect; |
2010 | 2014 |
2011 if ((span = imhtml->edit.fontface)) { | 2015 if ((span = imhtml->edit.fontface)) { |
2012 GtkTextIter face; | 2016 GtkTextIter face; |
2013 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &face, span->start); | 2017 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &face, span->start); |
2014 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &face, iter); | 2018 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &face, iter); |
2019 } | |
2020 | |
2021 if ((span = imhtml->edit.sizespan)) { | |
2022 GtkTextIter size; | |
2023 /* We create the tags here so that one can grow font or shrink font several times | |
2024 * in a row without creating unnecessary tags */ | |
2025 if (span->tag == NULL) { | |
2026 span->tag = gtk_text_buffer_create_tag | |
2027 (imhtml->text_buffer, NULL, "size-points", (double)_point_sizes [imhtml->edit.fontsize-1], NULL); | |
2028 span->start_tag = g_strdup_printf("<font size='%d'>", imhtml->edit.fontsize); | |
2029 span->end_tag = g_strdup("</font>"); | |
2030 } | |
2031 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &size, span->start); | |
2032 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &size, iter); | |
2015 } | 2033 } |
2016 } | 2034 } |
2017 | 2035 |
2018 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable) | 2036 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable) |
2019 { | 2037 { |
2095 span = imhtml->edit.underline; | 2113 span = imhtml->edit.underline; |
2096 span->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | 2114 span->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); |
2097 imhtml->edit.underline = NULL; | 2115 imhtml->edit.underline = NULL; |
2098 } | 2116 } |
2099 return imhtml->edit.underline != NULL; | 2117 return imhtml->edit.underline != NULL; |
2118 } | |
2119 | |
2120 void gtk_imhtml_font_shrink(GtkIMHtml *imhtml) | |
2121 { | |
2122 GtkIMHtmlFormatSpan *span; | |
2123 GtkTextMark *ins = gtk_text_buffer_get_insert(imhtml->text_buffer); | |
2124 GtkTextIter iter; | |
2125 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, ins); | |
2126 if (imhtml->edit.fontsize == 1) | |
2127 return; | |
2128 | |
2129 imhtml->edit.fontsize--; | |
2130 | |
2131 if (imhtml->edit.sizespan) { | |
2132 GtkTextIter iter2; | |
2133 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter2, imhtml->edit.sizespan->start); | |
2134 if (gtk_text_iter_equal(&iter2, &iter)) | |
2135 return; | |
2136 span = imhtml->edit.sizespan; | |
2137 span->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | |
2138 } | |
2139 | |
2140 span = g_malloc(sizeof(GtkIMHtmlFormatSpan)); | |
2141 span->start = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | |
2142 span->end = NULL; | |
2143 span->buffer = imhtml->text_buffer; | |
2144 span->tag = NULL; | |
2145 imhtml->edit.sizespan = span; | |
2146 imhtml->format_spans = g_list_append(imhtml->format_spans, span); | |
2147 } | |
2148 | |
2149 void gtk_imhtml_font_grow(GtkIMHtml *imhtml) | |
2150 { | |
2151 GtkIMHtmlFormatSpan *span; | |
2152 GtkTextMark *ins = gtk_text_buffer_get_insert(imhtml->text_buffer); | |
2153 GtkTextIter iter; | |
2154 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, ins); | |
2155 if (imhtml->edit.fontsize == MAX_FONT_SIZE) | |
2156 return; | |
2157 | |
2158 imhtml->edit.fontsize++; | |
2159 | |
2160 if (imhtml->edit.sizespan) { | |
2161 GtkTextIter iter2; | |
2162 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter2, imhtml->edit.sizespan->start); | |
2163 if (gtk_text_iter_equal(&iter2, &iter)) | |
2164 return; | |
2165 span = imhtml->edit.sizespan; | |
2166 span->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | |
2167 } | |
2168 | |
2169 span = g_malloc(sizeof(GtkIMHtmlFormatSpan)); | |
2170 span->start = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | |
2171 span->end = NULL; | |
2172 span->tag = NULL; | |
2173 span->buffer = imhtml->text_buffer; | |
2174 imhtml->edit.sizespan = span; | |
2175 imhtml->format_spans = g_list_append(imhtml->format_spans, span); | |
2100 } | 2176 } |
2101 | 2177 |
2102 gboolean gtk_imhtml_toggle_forecolor(GtkIMHtml *imhtml, const char *color) | 2178 gboolean gtk_imhtml_toggle_forecolor(GtkIMHtml *imhtml, const char *color) |
2103 { | 2179 { |
2104 GtkIMHtmlFormatSpan *span; | 2180 GtkIMHtmlFormatSpan *span; |