# HG changeset patch # User Tomasz Mon # Date 1183231249 -7200 # Node ID 3c66c8d03c534692d1606ed3ed79634e227f7bd2 # Parent a8f2c99727eb8d05fa97e4b1b7471b136c0f7eec make what ui_skinned_textbox_resize_relative did in a better way diff -r a8f2c99727eb -r 3c66c8d03c53 src/audacious/ui_playlist.c --- a/src/audacious/ui_playlist.c Sat Jun 30 19:46:21 2007 +0200 +++ b/src/audacious/ui_playlist.c Sat Jun 30 21:20:49 2007 +0200 @@ -665,7 +665,7 @@ widget_move_relative(WIDGET(playlistwin_slider), dx, 0); widget_resize_relative(WIDGET(playlistwin_slider), 0, dy); - ui_skinned_textbox_resize_relative(playlistwin_sinfo, dx, 0); + UI_SKINNED_TEXTBOX(playlistwin_sinfo)->weight += dx; playlistwin_update_sinfo(playlist_get_active()); ui_skinned_button_move_relative(playlistwin_shade, dx, 0); diff -r a8f2c99727eb -r 3c66c8d03c53 src/audacious/ui_skinned_textbox.c --- a/src/audacious/ui_skinned_textbox.c Sat Jun 30 19:46:21 2007 +0200 +++ b/src/audacious/ui_skinned_textbox.c Sat Jun 30 21:20:49 2007 +0200 @@ -48,7 +48,6 @@ struct _UiSkinnedTextboxPrivate { GtkWidget *image; GdkGC *gc; - gint w; SkinPixmapId skin_index; GtkWidget *fixed; gboolean double_size; @@ -269,7 +268,7 @@ textbox->x = x; textbox->y = y; priv->gc = gc; - priv->w = w; + textbox->weight = w; priv->scroll_allowed = allow_scroll; priv->scroll_enabled = TRUE; priv->skin_index = si; @@ -280,7 +279,7 @@ priv->fixed = fixed; priv->double_size = FALSE; - gtk_widget_set_size_request(widget, priv->w, textbox->height); + gtk_widget_set_size_request(widget, textbox->weight, textbox->height); gtk_fixed_put(GTK_FIXED(priv->fixed), widget, textbox->x, textbox->y); } @@ -306,12 +305,12 @@ textbox->x = widget->allocation.x/(priv->double_size ? 2 : 1); textbox->y = widget->allocation.y/(priv->double_size ? 2 : 1); - if (priv->w != widget->allocation.width) { - priv->w = widget->allocation.width; + if (textbox->weight != widget->allocation.width) { + textbox->weight = widget->allocation.width; if (priv->pixmap_text) g_free(priv->pixmap_text); priv->pixmap_text = NULL; priv->offset = 0; - ui_skinned_textbox_redraw(textbox); + textbox->redraw = TRUE; } } @@ -324,7 +323,7 @@ if (event->button == 1) { if (priv->scroll_allowed) { - if ((priv->pixmap_width > priv->w) && priv->is_scrollable) { + if ((priv->pixmap_width > textbox->weight) && priv->is_scrollable) { priv->is_dragging = TRUE; textbox->redraw = TRUE; priv->drag_off = priv->offset; @@ -361,16 +360,17 @@ if (priv->is_dragging) { if (priv->scroll_allowed && - priv->pixmap_width > priv->w) { + priv->pixmap_width > textbox->weight) { priv->offset = priv->drag_off - (event->x - priv->drag_x); while (priv->offset < 0) priv->offset = 0; - while (priv->offset > (priv->pixmap_width - priv->w)) - priv->offset = (priv->pixmap_width - priv->w); + while (priv->offset > (priv->pixmap_width - textbox->weight)) + priv->offset = (priv->pixmap_width - textbox->weight); - ui_skinned_textbox_redraw(textbox); + textbox->redraw = TRUE; + ui_skinned_textbox_paint(textbox); } } @@ -386,7 +386,7 @@ UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE (textbox); priv->double_size = !priv->double_size; - gtk_widget_set_size_request(widget, priv->w*(1+priv->double_size), textbox->height*(1+priv->double_size)); + gtk_widget_set_size_request(widget, textbox->weight*(1+priv->double_size), textbox->height*(1+priv->double_size)); gtk_widget_set_uposition(widget, textbox->x*(1+priv->double_size), textbox->y*(1+priv->double_size)); textbox->redraw = TRUE; @@ -410,21 +410,21 @@ priv->skin_id = skin_get_id(); textbox_generate_pixmap(textbox); } - obj = gdk_pixmap_new(NULL, priv->w, textbox->height, gdk_rgb_get_visual()->depth); + obj = gdk_pixmap_new(NULL, textbox->weight, textbox->height, gdk_rgb_get_visual()->depth); src = priv->pixmap; cw = priv->pixmap_width - priv->offset; - if (cw > priv->w) - cw = priv->w; + if (cw > textbox->weight) + cw = textbox->weight; gdk_draw_drawable(obj, priv->gc, src, priv->offset, 0, 0, 0, cw, textbox->height); - if (cw < priv->w) + if (cw < textbox->weight) gdk_draw_drawable(obj, priv->gc, src, 0, 0, textbox->x + cw, textbox->y, - priv->w - cw, textbox->height); + textbox->weight - cw, textbox->height); if (priv->double_size) { GdkImage *img, *img2x; - img = gdk_drawable_get_image(obj, 0, 0, priv->w, textbox->height); + img = gdk_drawable_get_image(obj, 0, 0, textbox->weight, textbox->height); img2x = create_dblsize_image(img); gtk_image_set(GTK_IMAGE(priv->image), img2x, NULL); g_object_unref(img2x); @@ -440,6 +440,11 @@ static void ui_skinned_textbox_redraw(UiSkinnedTextbox *textbox) { textbox->redraw = TRUE; + gint w, h; + UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE (textbox); + gtk_widget_get_size_request(GTK_WIDGET(textbox), &w, &h); + if (w != textbox->weight || h != textbox->height) + gtk_widget_set_size_request(GTK_WIDGET(textbox), textbox->weight, textbox->height); ui_skinned_textbox_paint(textbox); } @@ -452,13 +457,13 @@ gint width; text_get_extents(priv->fontname, textbox->text, &width, NULL, NULL, NULL); - if (width <= priv->w) + if (width <= textbox->weight) return FALSE; else return TRUE; } - if (g_utf8_strlen(textbox->text, -1) * bmp_active_skin->properties.textbox_bitmap_font_width > priv->w) + if (g_utf8_strlen(textbox->text, -1) * bmp_active_skin->properties.textbox_bitmap_font_width > textbox->weight) return TRUE; return FALSE; @@ -540,7 +545,7 @@ text_get_extents(priv->fontname, pixmaptext, &width, NULL, NULL, NULL); - priv->pixmap_width = MAX(width, priv->w); + priv->pixmap_width = MAX(width, textbox->weight); priv->pixmap = gdk_pixmap_new(mainwin->window, priv->pixmap_width, textbox->height, gdk_rgb_get_visual()->depth); @@ -588,7 +593,7 @@ if (priv->scroll_back) priv->offset -= 1; else priv->offset += 1; - if (priv->offset >= (priv->pixmap_width - priv->w)) { + if (priv->offset >= (priv->pixmap_width - textbox->weight)) { priv->scroll_back = TRUE; /* There are 1 million microseconds per second */ //g_usleep(1000000); @@ -632,8 +637,8 @@ * wl is the number of (partial) letters visible. Only makes * sense when using skinned font. */ - wl = priv->w / 5; - if (wl * 5 != priv->w) + wl = textbox->weight / 5; + if (wl * 5 != textbox->weight) wl++; length = g_utf8_strlen(textbox->text, -1); @@ -845,9 +850,3 @@ UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE (widget); gtk_fixed_move(GTK_FIXED(priv->fixed), widget, t->x+x, t->y+y); } - -void ui_skinned_textbox_resize_relative(GtkWidget *widget, gint w, gint h) { - UiSkinnedTextbox *t = UI_SKINNED_TEXTBOX(widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE (widget); - gtk_widget_set_size_request(widget, priv->w+w, t->height+h); -} diff -r a8f2c99727eb -r 3c66c8d03c53 src/audacious/ui_skinned_textbox.h --- a/src/audacious/ui_skinned_textbox.h Sat Jun 30 19:46:21 2007 +0200 +++ b/src/audacious/ui_skinned_textbox.h Sat Jun 30 21:20:49 2007 +0200 @@ -40,7 +40,7 @@ struct _UiSkinnedTextbox { GtkBin bin; GdkWindow *event_window; - gint x, y, height; + gint x, y, weight, height; gboolean redraw; gchar *text; }; @@ -61,6 +61,5 @@ void ui_skinned_textbox_set_xfont(GtkWidget *widget, gboolean use_xfont, const gchar *fontname); void ui_skinned_textbox_set_scroll(GtkWidget *widget, gboolean scroll); void ui_skinned_textbox_move_relative(GtkWidget *widget, gint x, gint y); -void ui_skinned_textbox_resize_relative(GtkWidget *widget, gint w, gint h); #endif