Added a style_set() function so that word lengths get recomputed on style

Tue Feb  9 15:35:13 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtklabel.c (gtk_label_style_set): Added
	  a style_set() function so that word lengths get
	  recomputed on style change.
This commit is contained in:
Owen Taylor
1999-02-09 20:50:47 +00:00
committed by Owen Taylor
parent b43de0cbda
commit 0bb249746f
8 changed files with 86 additions and 11 deletions

View File

@ -1,3 +1,9 @@
Tue Feb 9 15:35:13 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_style_set): Added
a style_set() function so that word lengths get
recomputed on style change.
Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org> Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64 * gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64

View File

@ -1,3 +1,9 @@
Tue Feb 9 15:35:13 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_style_set): Added
a style_set() function so that word lengths get
recomputed on style change.
Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org> Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64 * gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64

View File

@ -1,3 +1,9 @@
Tue Feb 9 15:35:13 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_style_set): Added
a style_set() function so that word lengths get
recomputed on style change.
Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org> Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64 * gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64

View File

@ -1,3 +1,9 @@
Tue Feb 9 15:35:13 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_style_set): Added
a style_set() function so that word lengths get
recomputed on style change.
Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org> Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64 * gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64

View File

@ -1,3 +1,9 @@
Tue Feb 9 15:35:13 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_style_set): Added
a style_set() function so that word lengths get
recomputed on style change.
Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org> Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64 * gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64

View File

@ -1,3 +1,9 @@
Tue Feb 9 15:35:13 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_style_set): Added
a style_set() function so that word lengths get
recomputed on style change.
Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org> Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64 * gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64

View File

@ -1,3 +1,9 @@
Tue Feb 9 15:35:13 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_style_set): Added
a style_set() function so that word lengths get
recomputed on style change.
Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org> Mon Feb 8 21:00:20 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64 * gtk/gtkclist.c (CLIST_OPTIMUM_SIZE): changed to 64

View File

@ -68,6 +68,8 @@ static void gtk_label_get_arg (GtkObject *object,
static void gtk_label_finalize (GtkObject *object); static void gtk_label_finalize (GtkObject *object);
static void gtk_label_size_request (GtkWidget *widget, static void gtk_label_size_request (GtkWidget *widget,
GtkRequisition *requisition); GtkRequisition *requisition);
static void gtk_label_style_set (GtkWidget *widget,
GtkStyle *previous_style);
static gint gtk_label_expose (GtkWidget *widget, static gint gtk_label_expose (GtkWidget *widget,
GdkEventExpose *event); GdkEventExpose *event);
@ -133,6 +135,7 @@ gtk_label_class_init (GtkLabelClass *class)
object_class->finalize = gtk_label_finalize; object_class->finalize = gtk_label_finalize;
widget_class->size_request = gtk_label_size_request; widget_class->size_request = gtk_label_size_request;
widget_class->style_set = gtk_label_style_set;
widget_class->expose_event = gtk_label_expose; widget_class->expose_event = gtk_label_expose;
} }
@ -261,9 +264,13 @@ gtk_label_set_text (GtkLabel *label,
len = strlen (str); len = strlen (str);
str_wc = g_new (GdkWChar, len + 1); str_wc = g_new (GdkWChar, len + 1);
wc_len = gdk_mbstowcs (str_wc, str, len + 1); wc_len = gdk_mbstowcs (str_wc, str, len + 1);
str_wc[wc_len] = '\0'; if (wc_len >= 0)
{
gtk_label_set_text_internal (label, g_strdup (str), str_wc); str_wc[wc_len] = '\0';
gtk_label_set_text_internal (label, g_strdup (str), str_wc);
}
else
g_free (str_wc);
} }
} }
@ -873,6 +880,24 @@ gtk_label_size_request (GtkWidget *widget,
*requisition = widget->requisition; *requisition = widget->requisition;
} }
static void
gtk_label_style_set (GtkWidget *widget,
GtkStyle *previous_style)
{
GtkLabel *label;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_LABEL (widget));
label = GTK_LABEL (widget);
if (previous_style && label->words)
/* Clear the list of words so that they are recomputed on
* size_request
*/
gtk_label_free_words (label);
}
static void static void
gtk_label_paint_word (GtkLabel *label, gtk_label_paint_word (GtkLabel *label,
gint x, gint x,
@ -885,20 +910,21 @@ gtk_label_paint_word (GtkLabel *label,
gchar *tmp_str; gchar *tmp_str;
tmp_str = gdk_wcstombs (word->beginning); tmp_str = gdk_wcstombs (word->beginning);
gtk_paint_string (widget->style, widget->window, widget->state, if (tmp_str)
area, widget, "label", {
x + word->x, gtk_paint_string (widget->style, widget->window, widget->state,
y + word->y, area, widget, "label",
tmp_str); x + word->x,
g_free (tmp_str); y + word->y,
tmp_str);
g_free (tmp_str);
}
for (uline = word->uline; uline; uline = uline->next) for (uline = word->uline; uline; uline = uline->next)
gtk_paint_hline (widget->style, widget->window, gtk_paint_hline (widget->style, widget->window,
widget->state, area, widget->state, area,
widget, "label", widget, "label",
x + uline->x1, x + uline->x2, y + uline->y); x + uline->x1, x + uline->x2, y + uline->y);
} }
static gint static gint
@ -969,6 +995,12 @@ gtk_label_parse_uline (GtkLabel *label,
length = strlen (string); length = strlen (string);
string_wc = g_new (GdkWChar, length + 1); string_wc = g_new (GdkWChar, length + 1);
wc_length = gdk_mbstowcs (string_wc, string, length + 1); wc_length = gdk_mbstowcs (string_wc, string, length + 1);
if (wc_length < 0)
{
g_free (string_wc);
return GDK_VoidSymbol;
}
string_wc[wc_length] = '\0'; string_wc[wc_length] = '\0';
pattern = g_new (gchar, length+1); pattern = g_new (gchar, length+1);
@ -1016,3 +1048,4 @@ gtk_label_parse_uline (GtkLabel *label,
return accel_key; return accel_key;
} }