Mercurial > pidgin
changeset 18321:477a6ddd56a0
merge of '02e31783092022387f8f75061f64d72af74c1ceb'
and '86b91f8649e1520dbbff9c55ae3d0f20220a1c5c'
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Wed, 27 Jun 2007 20:51:32 +0000 |
parents | bd137144da3c (current diff) 8aff2d3d6820 (diff) |
children | dd8602271dc5 477dd067bdc1 |
files | |
diffstat | 6 files changed, 43 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/finch/gntblist.c Wed Jun 27 20:51:12 2007 +0000 +++ b/finch/gntblist.c Wed Jun 27 20:51:32 2007 +0000 @@ -1422,9 +1422,10 @@ str = make_sure_text_fits(str); gnt_util_get_text_bound(str->str, &w, &h); - h = MAX(2, h); + h = MAX(1, h); tv = gnt_text_view_new(); gnt_widget_set_size(tv, w + 1, h); + gnt_text_view_set_flag(GNT_TEXT_VIEW(tv), GNT_TEXT_VIEW_NO_SCROLL); gnt_box_add_widget(GNT_BOX(box), tv); gnt_widget_set_position(box, x, y);
--- a/finch/libgnt/gntstyle.c Wed Jun 27 20:51:12 2007 +0000 +++ b/finch/libgnt/gntstyle.c Wed Jun 27 20:51:32 2007 +0000 @@ -45,7 +45,7 @@ return str_styles[style]; } -const char *gnt_style_get_from_name(const char *group, const char *key) +char *gnt_style_get_from_name(const char *group, const char *key) { #if GLIB_CHECK_VERSION(2,6,0) return g_key_file_get_value(gkfile, group, key, NULL);
--- a/finch/libgnt/gntstyle.h Wed Jun 27 20:51:12 2007 +0000 +++ b/finch/libgnt/gntstyle.h Wed Jun 27 20:51:32 2007 +0000 @@ -45,7 +45,7 @@ const char *gnt_style_get(GntStyle style); -const char *gnt_style_get_from_name(const char *group, const char *key); +char *gnt_style_get_from_name(const char *group, const char *key); /** *
--- a/finch/libgnt/gnttextview.c Wed Jun 27 20:51:12 2007 +0000 +++ b/finch/libgnt/gnttextview.c Wed Jun 27 20:51:32 2007 +0000 @@ -65,6 +65,7 @@ int i = 0; GList *lines; int rows, scrcol; + gboolean has_scroll = !(view->flags & GNT_TEXT_VIEW_NO_SCROLL); wbkgd(widget->window, COLOR_PAIR(GNT_COLOR_NORMAL)); werase(widget->window); @@ -111,12 +112,12 @@ *end = back; } wattroff(widget->window, A_UNDERLINE | A_BLINK | A_REVERSE); - whline(widget->window, ' ', widget->priv.width - line->length - 1); + whline(widget->window, ' ', widget->priv.width - line->length - has_scroll); } scrcol = widget->priv.width - 1; rows = widget->priv.height - 2; - if (rows > 0) + if (has_scroll && rows > 0) { int total = g_list_length(g_list_first(view->list)); int showing, position, up, down; @@ -143,11 +144,13 @@ ACS_CKBOARD | COLOR_PAIR(GNT_COLOR_HIGHLIGHT_D), showing); } - mvwaddch(widget->window, 0, scrcol, - (lines ? ACS_UARROW : ' ') | COLOR_PAIR(GNT_COLOR_HIGHLIGHT_D)); - mvwaddch(widget->window, widget->priv.height - 1, scrcol, - ((view->list && view->list->prev) ? ACS_DARROW : ' ') | - COLOR_PAIR(GNT_COLOR_HIGHLIGHT_D)); + if (has_scroll) { + mvwaddch(widget->window, 0, scrcol, + (lines ? ACS_UARROW : ' ') | COLOR_PAIR(GNT_COLOR_HIGHLIGHT_D)); + mvwaddch(widget->window, widget->priv.height - 1, scrcol, + ((view->list && view->list->prev) ? ACS_DARROW : ' ') | + COLOR_PAIR(GNT_COLOR_HIGHLIGHT_D)); + } GNTDEBUG; } @@ -483,6 +486,8 @@ GList *list = view->list; GntTextLine *line; int len; + gboolean has_scroll = !(view->flags & GNT_TEXT_VIEW_NO_SCROLL); + gboolean wrap_word = !(view->flags & GNT_TEXT_VIEW_WRAP_CHAR); if (text == NULL || *text == '\0') return; @@ -519,7 +524,7 @@ } line = view->list->data; - if (line->length == widget->priv.width - 1) { + if (line->length == widget->priv.width - has_scroll) { /* The last added line was exactly the same width as the widget */ line = g_new0(GntTextLine, 1); line->soft = TRUE; @@ -528,15 +533,15 @@ if ((end = strchr(start, '\r')) != NULL || (end = strchr(start, '\n')) != NULL) { - len = gnt_util_onscreen_width(start, end - 1); - if (len >= widget->priv.width - line->length - 1) { + len = gnt_util_onscreen_width(start, end - has_scroll); + if (len >= widget->priv.width - line->length - has_scroll) { end = NULL; } } if (end == NULL) end = gnt_util_onscreen_width_to_pointer(start, - widget->priv.width - line->length - 1, &len); + widget->priv.width - line->length - has_scroll, &len); /* Try to append to the previous segment if possible */ if (line->segments) { @@ -554,7 +559,7 @@ } oldl = line; - if (*end && *end != '\n' && *end != '\r') { + if (wrap_word && *end && *end != '\n' && *end != '\r') { const char *tmp = end; while (end && *end != '\n' && *end != '\r' && !g_ascii_isspace(*end)) { end = g_utf8_find_prev_char(seg->start + view->string->str, end); @@ -783,3 +788,8 @@ g_signal_connect(G_OBJECT(widget), "key_pressed", G_CALLBACK(scroll_tv), view); } +void gnt_text_view_set_flag(GntTextView *view, GntTextViewFlag flag) +{ + view->flags |= flag; +} +
--- a/finch/libgnt/gnttextview.h Wed Jun 27 20:51:12 2007 +0000 +++ b/finch/libgnt/gnttextview.h Wed Jun 27 20:51:32 2007 +0000 @@ -47,6 +47,11 @@ typedef struct _GntTextViewPriv GntTextViewPriv; typedef struct _GntTextViewClass GntTextViewClass; +typedef enum { + GNT_TEXT_VIEW_NO_SCROLL = 1 << 0, + GNT_TEXT_VIEW_WRAP_CHAR = 1 << 1, +} GntTextViewFlag; + struct _GntTextView { GntWidget parent; @@ -55,6 +60,7 @@ GList *list; /* List of GntTextLine */ GList *tags; /* A list of tags */ + GntTextViewFlag flags; }; typedef enum @@ -177,6 +183,14 @@ */ void gnt_text_view_attach_scroll_widget(GntTextView *view, GntWidget *widget); +/** + * Set a GntTextViewFlag for the textview widget. + * + * @param view The textview widget + * @param flag The flag to set + */ +void gnt_text_view_set_flag(GntTextView *view, GntTextViewFlag flag); + G_END_DECLS #endif /* GNT_TEXT_VIEW_H */
--- a/finch/libgnt/wms/irssi.c Wed Jun 27 20:51:12 2007 +0000 +++ b/finch/libgnt/wms/irssi.c Wed Jun 27 20:51:32 2007 +0000 @@ -274,7 +274,7 @@ void gntwm_init(GntWM **wm) { - const char *style = NULL; + char *style = NULL; Irssi *irssi; irssi = g_object_new(TYPE_IRSSI, NULL); @@ -282,9 +282,11 @@ style = gnt_style_get_from_name("irssi", "split-v"); irssi->vert = style ? atoi(style) : 1; + g_free(style); style = gnt_style_get_from_name("irssi", "split-h"); irssi->horiz = style ? atoi(style) : 1; + g_free(style); irssi->vert = MAX(irssi->vert, 1); irssi->horiz = MAX(irssi->horiz, 1);