diff options
Diffstat (limited to 'plugins/gtkui/ddblistview.c')
-rw-r--r-- | plugins/gtkui/ddblistview.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/plugins/gtkui/ddblistview.c b/plugins/gtkui/ddblistview.c index 6312a103..66be0fcc 100644 --- a/plugins/gtkui/ddblistview.c +++ b/plugins/gtkui/ddblistview.c @@ -288,9 +288,9 @@ static void ddb_listview_init(DdbListview *listview) { // init instance - create all subwidgets, and insert into table - draw_init_font (gtk_widget_get_style (GTK_WIDGET(listview))); - - listview->rowheight = draw_get_listview_rowheight (); + drawctx_init (&listview->listctx); + drawctx_init (&listview->hdrctx); + listview->rowheight = -1; listview->col_movepos = -1; listview->drag_motion_y = -1; @@ -355,7 +355,6 @@ ddb_listview_init(DdbListview *listview) listview->header = gtk_drawing_area_new (); gtk_widget_show (listview->header); gtk_box_pack_start (GTK_BOX (vbox), listview->header, FALSE, TRUE, 0); - gtk_widget_set_size_request (listview->header, -1, draw_get_listview_rowheight ()); gtk_widget_set_events (listview->header, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); listview->list = gtk_drawing_area_new (); @@ -490,6 +489,8 @@ ddb_listview_destroy(GObject *object) gdk_cursor_unref (listview->cursor_drag); listview->cursor_drag = NULL; } + draw_free (&listview->listctx); + draw_free (&listview->hdrctx); } void @@ -533,8 +534,8 @@ ddb_listview_list_configure_event (GtkWidget *widget, { DdbListview *ps = DDB_LISTVIEW (g_object_get_data (G_OBJECT (widget), "owner")); - draw_init_font (gtk_widget_get_style (widget)); - int height = draw_get_listview_rowheight (); + draw_init_font (&ps->listctx, gtk_widget_get_style (widget)); + int height = draw_get_listview_rowheight (&ps->listctx); if (height != ps->rowheight) { ps->rowheight = height; ddb_listview_build_groups (ps); @@ -643,7 +644,7 @@ ddb_listview_list_render (DdbListview *listview, cairo_t *cr, int x, int y, int grp = grp->next; } - draw_begin (cr); + draw_begin (&listview->listctx, cr); int ii = 0; while (grp && grp_y < y + h + listview->scrollpos) { @@ -735,7 +736,7 @@ ddb_listview_list_render (DdbListview *listview, cairo_t *cr, int x, int y, int } } deadbeef->pl_unlock (); - draw_end (); + draw_end (&listview->listctx); } static void @@ -1310,12 +1311,12 @@ ddb_listview_list_render_row_foreground (DdbListview *ps, cairo_t *cr, DdbListvi if (it && ps->binding->is_selected (it)) { GdkColor *clr = >k_widget_get_style (theme_treeview)->fg[GTK_STATE_SELECTED]; float rgb[3] = { clr->red/65535.f, clr->green/65535.f, clr->blue/65535.f }; - draw_set_fg_color (rgb); + draw_set_fg_color (&ps->listctx, rgb); } else { GdkColor *clr = >k_widget_get_style (theme_treeview)->fg[GTK_STATE_NORMAL]; float rgb[3] = { clr->red/65535.f, clr->green/65535.f, clr->blue/65535.f }; - draw_set_fg_color (rgb); + draw_set_fg_color (&ps->listctx, rgb); } DdbListviewColumn *c; int cidx = 0; @@ -2158,7 +2159,7 @@ ddb_listview_header_render (DdbListview *ps, cairo_t *cr) { cairo_line_to (cr, a.width, a.height-1); cairo_stroke (cr); #endif - draw_begin (cr); + draw_begin (&ps->hdrctx, cr); x = -ps->hscrollpos; DdbListviewColumn *c; int need_draw_moving = 0; @@ -2205,7 +2206,7 @@ ddb_listview_header_render (DdbListview *ps, cairo_t *cr) { #endif GdkColor *gdkfg = >k_widget_get_style (theme_button)->fg[0]; float fg[3] = {(float)gdkfg->red/0xffff, (float)gdkfg->green/0xffff, (float)gdkfg->blue/0xffff}; - draw_set_fg_color (fg); + draw_set_fg_color (&ps->hdrctx, fg); int ww = w-10; if (sort) { ww -= arrow_sz; @@ -2213,7 +2214,7 @@ ddb_listview_header_render (DdbListview *ps, cairo_t *cr) { ww = 0; } } - draw_text (xx + 5, 3, ww, 0, c->title); + draw_text (&ps->hdrctx, xx + 5, 3, ww, 0, c->title); } if (sort) { int dir = sort == 1 ? GTK_ARROW_DOWN : GTK_ARROW_UP; @@ -2265,15 +2266,15 @@ ddb_listview_header_render (DdbListview *ps, cairo_t *cr) { #endif GdkColor *gdkfg = >k_widget_get_style (theme_button)->fg[GTK_STATE_SELECTED]; float fg[3] = {(float)gdkfg->red/0xffff, (float)gdkfg->green/0xffff, (float)gdkfg->blue/0xffff}; - draw_set_fg_color (fg); - draw_text (x + 5, 3, c->width-10, 0, c->title); + draw_set_fg_color (&ps->hdrctx, fg); + draw_text (&ps->hdrctx, x + 5, 3, c->width-10, 0, c->title); } break; } x += w; } } - draw_end (); + draw_end (&ps->hdrctx); } gboolean @@ -2312,8 +2313,8 @@ ddb_listview_header_configure_event (GtkWidget *widget, gpointer user_data) { DdbListview *ps = DDB_LISTVIEW (g_object_get_data (G_OBJECT (widget), "owner")); - draw_init_font (gtk_widget_get_style (widget)); - int height = draw_get_listview_rowheight (); + draw_init_font (&ps->hdrctx, gtk_widget_get_style (widget)); + int height = draw_get_listview_rowheight (&ps->hdrctx); GtkAllocation a; gtk_widget_get_allocation (widget, &a); if (height != a.height) { @@ -2342,7 +2343,7 @@ ddb_listview_header_realize (GtkWidget *widget, { // create cursor for sizing headers DdbListview *listview = DDB_LISTVIEW (g_object_get_data (G_OBJECT (widget), "owner")); - int h = draw_get_font_size (); + int h = draw_get_font_size (&listview->hdrctx); gtk_widget_set_size_request (widget, -1, h + 10); listview->cursor_sz = gdk_cursor_new (GDK_SB_H_DOUBLE_ARROW); listview->cursor_drag = gdk_cursor_new (GDK_FLEUR); |