summaryrefslogtreecommitdiff
path: root/plugins/gtkui/ddblistview.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gtkui/ddblistview.c')
-rw-r--r--plugins/gtkui/ddblistview.c39
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 = &gtk_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 = &gtk_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 = &gtk_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 = &gtk_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);