summaryrefslogtreecommitdiff
path: root/libcaja-private
diff options
context:
space:
mode:
authorColomban Wendling <[email protected]>2019-06-25 15:56:04 +0200
committerraveit65 <[email protected]>2019-06-30 14:49:04 +0200
commit18e4fbd005bd561e4a12ed388d4d9a8c93f0b15b (patch)
tree9f494f1e8d15cec70b62ad7f01c0505683e800a4 /libcaja-private
parent567b142e830071eec5d230aedd2ad07b9a1495f8 (diff)
downloadcaja-18e4fbd005bd561e4a12ed388d4d9a8c93f0b15b.tar.bz2
caja-18e4fbd005bd561e4a12ed388d4d9a8c93f0b15b.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.
Diffstat (limited to 'libcaja-private')
-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 394e43c4..7ba5f0ac 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;
}