summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColomban Wendling <[email protected]>2019-06-25 15:56:04 +0200
committerraveit65 <[email protected]>2022-07-20 00:15:00 +0200
commit1cbfcb0a610a9dec544544a3c6046a42fe4bf18c (patch)
tree04b6096e4f2bb1a6b612408f77fb013f03c7a051
parent1bf652822597c02f9c4e5daf154d49aa4e84eb47 (diff)
downloadcaja-1cbfcb0a610a9dec544544a3c6046a42fe4bf18c.tar.bz2
caja-1cbfcb0a610a9dec544544a3c6046a42fe4bf18c.tar.xz
desktop: Always draw the items label frame
Draw the frame under the items label even when not selected and not in prelight state, so that it is possible to theme it in the other states. However we still don't draw it when editing, because there is the editing widget frame already and drawing the label's one might slightly overflow the editing widget's borders and lead to slightly ugly results. Being able to draw a background is especially useful for accessibility purposes (e.g. a high contrast theme would typically make sure there is a background with enough contrast), but might be useful to all as desktop backgrounds are often not uniform at all. By default this is drawn transparent on the non-selected and non-prelight states (no change in default appearance then), but allows the user to customize it with a background if need be. Unfortunately for the moment this cannot be altered by theme, so the user will have to modify the GTK custom user CSS directly, but it still is better than nothing and can hopefully be solved better later.
-rw-r--r--libcaja-private/caja-icon-canvas-item.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/libcaja-private/caja-icon-canvas-item.c b/libcaja-private/caja-icon-canvas-item.c
index 76443362..0e8e5fc5 100644
--- a/libcaja-private/caja-icon-canvas-item.c
+++ b/libcaja-private/caja-icon-canvas-item.c
@@ -1291,24 +1291,28 @@ draw_label_text (CajaIconCanvasItem *item,
"activate_prelight_icon_label", &prelight_label,
NULL);
- /* if the icon is highlighted, do some set-up */
- if (needs_highlight &&
- !details->is_renaming) {
- state |= GTK_STATE_FLAG_SELECTED;
-
- frame_x = is_rtl_label_beside ? text_rect.x0 + item->details->text_dx : text_rect.x0;
- frame_y = text_rect.y0;
- frame_w = is_rtl_label_beside ? text_rect.x1 - text_rect.x0 - item->details->text_dx : text_rect.x1 - text_rect.x0;
- frame_h = text_rect.y1 - text_rect.y0;
- } else if (!needs_highlight && have_editable &&
- details->text_width > 0 && details->text_height > 0 &&
- prelight_label && item->details->is_prelit) {
+ /* if the icon needs a background, do some set-up */
+ if (!needs_highlight && have_editable &&
+ details->text_width > 0 && details->text_height > 0 &&
+ prelight_label && item->details->is_prelit) {
state |= GTK_STATE_FLAG_PRELIGHT;
frame_x = text_rect.x0;
frame_y = text_rect.y0;
frame_w = text_rect.x1 - text_rect.x0;
frame_h = text_rect.y1 - text_rect.y0;
+ } else if (!details->is_renaming) {
+ /* always draw a background but when renaming where the editing
+ * area is on top already. The default background will be transparent,
+ * but drawing it already allows the theme to change that. */
+
+ if (needs_highlight)
+ state |= GTK_STATE_FLAG_SELECTED;
+
+ frame_x = is_rtl_label_beside ? text_rect.x0 + item->details->text_dx : text_rect.x0;
+ frame_y = text_rect.y0;
+ frame_w = is_rtl_label_beside ? text_rect.x1 - text_rect.x0 - item->details->text_dx : text_rect.x1 - text_rect.x0;
+ frame_h = text_rect.y1 - text_rect.y0;
} else {
draw_frame = FALSE;
}