Mercurial > pidgin.yaz
view console/libgnt/gntline.c @ 14278:f71894e1700d
[gaim-migrate @ 16963]
Fix a crazy bug that we found at meebo. I'm not sure it
affects gtk Gaim in quite the same way, but what was
happeing is that the conversation sequence number should
be incremented by 1 each time a new conversation is
created (whether created by someone else or created by
you). However, in one place in Gaim conv_seq was being
incremented BEFORE it was used and in another it was
being incremented AFTER it was used. This can lead to
a sequence number being used twice.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 21 Aug 2006 22:50:58 +0000 |
parents | 7573bd40a190 |
children | 3ac156db9cb6 |
line wrap: on
line source
#include "gntline.h" enum { SIGS = 1, }; static GntWidgetClass *parent_class = NULL; static guint signals[SIGS] = { 0 }; static void gnt_line_draw(GntWidget *widget) { GntLine *line = GNT_LINE(widget); if (line->vertical) mvwvline(widget->window, 1, 0, ACS_VLINE | COLOR_PAIR(GNT_COLOR_NORMAL), widget->priv.height - 2); else mvwhline(widget->window, 0, 1, ACS_HLINE | COLOR_PAIR(GNT_COLOR_NORMAL), widget->priv.width - 2); } static void gnt_line_size_request(GntWidget *widget) { if (GNT_LINE(widget)->vertical) { widget->priv.width = 1; widget->priv.height = 5; } else { widget->priv.width = 5; widget->priv.height = 1; } } static void gnt_line_map(GntWidget *widget) { if (widget->priv.width == 0 || widget->priv.height == 0) gnt_widget_size_request(widget); DEBUG; } static void gnt_line_class_init(GntLineClass *klass) { parent_class = GNT_WIDGET_CLASS(klass); parent_class->draw = gnt_line_draw; parent_class->map = gnt_line_map; parent_class->size_request = gnt_line_size_request; DEBUG; } static void gnt_line_init(GTypeInstance *instance, gpointer class) { GntWidget *widget = GNT_WIDGET(instance); GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER); widget->priv.minw = 1; widget->priv.minh = 1; DEBUG; } /****************************************************************************** * GntLine API *****************************************************************************/ GType gnt_line_get_gtype(void) { static GType type = 0; if(type == 0) { static const GTypeInfo info = { sizeof(GntLineClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc)gnt_line_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GntLine), 0, /* n_preallocs */ gnt_line_init, /* instance_init */ }; type = g_type_register_static(GNT_TYPE_WIDGET, "GntLine", &info, 0); } return type; } GntWidget *gnt_line_new(gboolean vertical) { GntWidget *widget = g_object_new(GNT_TYPE_LINE, NULL); GntLine *line = GNT_LINE(widget); line->vertical = vertical; if (vertical) { GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_Y); } else { GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X); } return widget; }