jun7 / rox-filer

ROX file manager
24 stars 6 forks source link

Incomplete filenames in icon view #162

Closed tryxan closed 6 years ago

tryxan commented 6 years ago

HI, I am getting incomplete filenames in icon view - only in icon view not anywhere else - whenever a non-letter character is present. Everything is fine with the original ROX that I have been using happily for years :) I made a screenshot to illustrate : shot-2018-01-02_21-52-48 I don't think it is related, but I compiled with gcc 4.7 and glib 2.32 - only had to replace g_str_to_ascii() in xtypes.c

jun7 commented 6 years ago

I've changed draw_string in 834db25 because gdk_draw_layout is deprecated. So changing gdk_draw_layout to pango_cairo_show_layout is most suspected point I think. To make verification of it, can you add a line view->name_width = 0; to before if (view->name_width == 0) at line 712 of view_collection.c? If name_width was correct but characters not present, we can not do anything in the code because that means we set correct data at least correct string.

tryxan commented 6 years ago

I added the line but it is still the same. 'name_width' must be correct because if I select one file the highlighted box seem to be the right size for the correct text, just the text is not visible. More confusing: if I make a new file named RSTU.V.W it shows as RSTU.V then Rstu.v.w shows as Rstu.v and RSTu.v.w as RST but any lower/upper combination of ABCD.E.F is OK !

jun7 commented 6 years ago

Could you update pango and cairo? Have tried Changing font-size and font?

tryxan commented 6 years ago

I am still under debian wheezy so cannot update pango because of glib, though I updated cairo to 1.14.8 and freetype to 2.6.5 and recompiled pango 1.30 but to no avail. Changing font does have an impact as FreeSans or Monospace makes ROX show correct filenames ! The thing is, details view is always correct, can't collection use the same functions to display text ?

jun7 commented 6 years ago

Add widget and item to the args of the draw_string and

and replace the

cairo_move_to(cr, area->x, area->y);
pango_cairo_show_layout(cr, layout);

to

static GdkGC    *type_gc = NULL;
if (!type_gc)   type_gc = gdk_gc_new(widget->window);

gdk_gc_set_foreground(type_gc, type_get_colour(item,
                    &widget->style->text[GTK_STATE_NORMAL]));

gdk_draw_layout(widget->window, type_gc, area->x, area->y, layout);

maybe

tryxan commented 6 years ago

YES ! that's it. Well done !

jun7 commented 6 years ago

Since gdk_draw_layout is deprecated, those code are not merged to master though, thank you for reporting. It was interesting.