Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 55 additions & 2 deletions gresources/nemo-desktop-overlay.glade
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@
<property name="step_increment">10</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment_label_width">
<property name="lower">50</property>
<property name="upper">200</property>
<property name="value">100</property>
<property name="step-increment">0.10</property>
<property name="page-increment">1</property>
</object>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can_focus">False</property>
Expand Down Expand Up @@ -238,6 +245,52 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_bottom">10</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Icon Label Width Scale</property>
<property name="tooltip-text" translatable="yes">Scales the width of the desktop icon label</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScale" id="label_width_slider">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="adjustment">adjustment_label_width</property>
<property name="restrict_to_fill_level">False</property>
<property name="draw_value">False</property>
<property name="has_origin">False</property>
<signal name="value-changed" handler="on_label_scale_adjust_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
Expand All @@ -251,7 +304,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
<child>
Expand Down Expand Up @@ -656,7 +709,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
<child>
Expand Down
45 changes: 45 additions & 0 deletions libnemo-private/nemo-file.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
#include <unistd.h>
#include <sys/stat.h>
#include <errno.h>
#include <math.h>

#ifdef HAVE_SELINUX
#include <selinux/selinux.h>
Expand Down Expand Up @@ -3949,6 +3950,50 @@ nemo_file_get_desktop_grid_adjusts (NemoFile *file,
}
}

void
nemo_file_set_desktop_label_scale_adjust (NemoFile *file,
const char *key,
double double_a)
{
g_return_if_fail (NEMO_IS_FILE (file));
g_return_if_fail (key != NULL);
g_return_if_fail (key[0] != '\0');

/* double_a is a single decimal point value in the range [50.0, 200.0] */
/* to preserve this value multiple by 10 */
/* then use floorf to get the integer part */
int value = (int)floorf(double_a * 10);

/* 1000 is 100.0 - the default value of no scaling */
nemo_file_set_integer_metadata (file, key, 1000, value);
}

void
nemo_file_get_desktop_label_scale_adjust (NemoFile *file,
const char *key,
double *double_a)
{
char c;
double result;

g_return_if_fail (key != NULL);
g_return_if_fail (key[0] != '\0');

if (file == NULL ||
file->details->metadata == NULL) {
return;
}

g_return_if_fail (NEMO_IS_FILE (file));

/* 1000 is 100.0 - the default value of no scaling */
int value = nemo_file_get_integer_metadata (file, key, 1000);

if (double_a) {
*double_a = value / 10.0;
}
}

gboolean
nemo_file_get_boolean_metadata (NemoFile *file,
const char *key,
Expand Down
6 changes: 6 additions & 0 deletions libnemo-private/nemo-file.h
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,12 @@ void nemo_file_get_desktop_grid_adjusts (NemoFile *file,
const char *key,
int *int_a,
int *int_b);
void nemo_file_set_desktop_label_scale_adjust (NemoFile *file,
const char *key,
double double_a);
void nemo_file_get_desktop_label_scale_adjust (NemoFile *file,
const char *key,
double *double_a);
/* Covers for common data types. */
gboolean nemo_file_get_boolean_metadata (NemoFile *file,
const char *key,
Expand Down
32 changes: 29 additions & 3 deletions libnemo-private/nemo-icon-canvas-item.c
Original file line number Diff line number Diff line change
Expand Up @@ -821,10 +821,22 @@ static void
prepare_pango_layout_width (NemoIconCanvasItem *item,
PangoLayout *layout)
{
NemoIconContainer *container;
int width;

if (nemo_icon_canvas_item_get_max_text_width (item) < 0) {
pango_layout_set_width (layout, -1);
} else {
pango_layout_set_width (layout, floor (nemo_icon_canvas_item_get_max_text_width (item)) * PANGO_SCALE);
width = floor (nemo_icon_canvas_item_get_max_text_width (item));

container = NEMO_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);

/* check if the container is_desktop? */
if (!IS_COMPACT_VIEW (container) && width % 2 != 0) {
width += 1;
}

pango_layout_set_width (layout, width * PANGO_SCALE);
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
}
}
Expand Down Expand Up @@ -970,6 +982,12 @@ measure_label_text (NemoIconCanvasItem *item)
details->text_dx = additional_dx;
}

/* check if the container is_desktop? */
if (!IS_COMPACT_VIEW (container) && details->text_width % 2 != 0) {
details->text_width += 1;
details->text_dx += 1;
}

if (have_additional) {
details->text_height = editable_height + LABEL_LINE_SPACING + additional_height;
details->text_height_for_layout = editable_height_for_layout + LABEL_LINE_SPACING + additional_height;
Expand Down Expand Up @@ -1053,6 +1071,11 @@ draw_label_text (NemoIconCanvasItem *item,

max_text_width = floor (nemo_icon_canvas_item_get_max_text_width (item));

/* check if the container is_desktop? */
if (!IS_COMPACT_VIEW (container) && max_text_width % 2 != 0) {
max_text_width += 1;
}

base_state = gtk_widget_get_state_flags (GTK_WIDGET (container));
base_state &= ~(GTK_STATE_FLAG_SELECTED |
GTK_STATE_FLAG_PRELIGHT);
Expand Down Expand Up @@ -1525,7 +1548,6 @@ nemo_icon_canvas_item_event (EelCanvasItem *item, GdkEvent *event)
icon_item = NEMO_ICON_CANVAS_ITEM (item);
cursor_window = ((GdkEventAny *)event)->window;


if (event->type == GDK_ENTER_NOTIFY) {
nemo_icon_container_update_tooltip_text (NEMO_ICON_CONTAINER (item->canvas), icon_item);
if (!icon_item->details->is_prelit) {
Expand Down Expand Up @@ -2008,7 +2030,11 @@ nemo_icon_canvas_item_get_max_text_width (NemoIconCanvasItem *item)
} else {
/* normal icon view */
if (container->details->is_desktop) {
return nemo_get_desktop_text_width_for_zoom_level (nemo_icon_container_get_zoom_level (container));
return nemo_get_desktop_text_width_for_zoom_level (nemo_icon_container_get_zoom_level (container))
/* apply desktop icon label width scaling */
* (container->details->label_scale_adjust / 100.0)
/* see measure_label_text(): extra to make it look nicer */
- (TEXT_BACK_PADDING_X * 2);
} else {
return nemo_get_icon_text_width_for_zoom_level (nemo_icon_container_get_zoom_level (container));
}
Expand Down
11 changes: 11 additions & 0 deletions libnemo-private/nemo-icon-container.c
Original file line number Diff line number Diff line change
Expand Up @@ -5007,6 +5007,7 @@ nemo_icon_container_init (NemoIconContainer *container)

details->h_adjust = 100;
details->v_adjust = 100;
details->label_scale_adjust = 100;
}

typedef struct {
Expand Down Expand Up @@ -6671,6 +6672,16 @@ nemo_icon_container_set_grid_adjusts (NemoIconContainer *container,
container->details->v_adjust = v_adjust;
}

void
nemo_icon_container_set_label_scale_adjust (NemoIconContainer *container,
double label_scale_adjust)
{
g_return_if_fail (NEMO_IS_ICON_CONTAINER (container));

container->details->label_scale_adjust = label_scale_adjust;

}

gboolean
nemo_icon_container_is_keep_aligned (NemoIconContainer *container)
{
Expand Down
2 changes: 2 additions & 0 deletions libnemo-private/nemo-icon-container.h
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,8 @@ gboolean nemo_icon_container_get_horizontal_layout (NemoIconContainer *
void nemo_icon_container_set_grid_adjusts (NemoIconContainer *container,
gint h_adjust,
gint v_adjust);
void nemo_icon_container_set_label_scale_adjust (NemoIconContainer *container,
double label_scale_adjust);

void nemo_icon_container_set_label_position (NemoIconContainer *container,
NemoIconLabelPosition pos);
Expand Down
1 change: 1 addition & 0 deletions libnemo-private/nemo-icon-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ struct NemoIconContainerDetails {
gboolean horizontal;
gint h_adjust;
gint v_adjust;
double label_scale_adjust;

gboolean show_desktop_tooltips;
gboolean show_icon_view_tooltips;
Expand Down
1 change: 1 addition & 0 deletions libnemo-private/nemo-metadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ static char *used_metadata_names[] = {
(char *)NEMO_METADATA_KEY_PINNED,
(char *)NEMO_METADATA_KEY_FAVORITE,
(char *)NEMO_METADATA_KEY_FAVORITE_AVAILABLE,
(char *)NEMO_METADATA_KEY_DESKTOP_LABEL_SACLE_ADJUST,
NULL
};

Expand Down
1 change: 1 addition & 0 deletions libnemo-private/nemo-metadata.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
#define NEMO_METADATA_KEY_DESKTOP_GRID_HORIZONTAL "desktop-horizontal"
#define NEMO_METADATA_KEY_SHOW_THUMBNAILS "show-thumbnails"
#define NEMO_METADATA_KEY_DESKTOP_GRID_ADJUST "desktop-grid-adjust"
#define NEMO_METADATA_KEY_DESKTOP_LABEL_SACLE_ADJUST "desktop-label-scale-adjust"

#define NEMO_METADATA_KEY_PINNED "pinned-to-top"
#define NEMO_METADATA_KEY_FAVORITE "xapp-favorite"
Expand Down
33 changes: 33 additions & 0 deletions src/nemo-desktop-icon-grid-view.c
Original file line number Diff line number Diff line change
Expand Up @@ -1259,3 +1259,36 @@ nemo_desktop_icon_grid_view_set_grid_adjusts (NemoDesktopIconGridView *view,
nemo_icon_container_store_layout_timestamps_now (get_icon_container (view));

}

void
nemo_desktop_icon_grid_view_set_label_scale_adjust (NemoDesktopIconGridView *view,
double label_scale_adjust)
{
NemoIconContainer *container;
NemoFile *file;

if (view->details->updating_menus) {
return;
}

container = get_icon_container (view);
clear_orphan_states (view);

file = nemo_view_get_directory_as_file (NEMO_VIEW (view));

nemo_icon_container_set_label_scale_adjust (container, label_scale_adjust);

container->details->needs_resort = TRUE;
container->details->auto_layout = TRUE;

nemo_icon_view_set_directory_label_scale_adjust (NEMO_ICON_VIEW (view),
file,
label_scale_adjust);

nemo_icon_container_redo_layout (container);

nemo_view_update_menus (NEMO_VIEW (view));

nemo_icon_container_store_layout_timestamps_now (get_icon_container (view));

}
2 changes: 2 additions & 0 deletions src/nemo-desktop-icon-grid-view.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,7 @@ GtkActionGroup *nemo_desktop_icon_grid_view_get_action_group (NemoDesktopIconGri
void nemo_desktop_icon_grid_view_set_grid_adjusts (NemoDesktopIconGridView *view,
gint h_adjust,
gint v_adjust);
void nemo_desktop_icon_grid_view_set_label_scale_adjust (NemoDesktopIconGridView *view,
double label_scale_adjust);

#endif /* NEMO_DESKTOP_ICON_GRID_VIEW_H */
24 changes: 22 additions & 2 deletions src/nemo-desktop-manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -536,6 +536,18 @@ on_overlay_adjustments_changed (NemoDesktopOverlay *overlay,
v_percent);
}

static void
on_overlay_label_scale_changed (NemoDesktopOverlay *overlay,
NemoWindow *window,
double label_scale,
NemoDesktopManager *manager)
{
g_return_if_fail (NEMO_IS_DESKTOP_WINDOW (window));

nemo_desktop_window_set_label_scale_adjust (NEMO_DESKTOP_WINDOW (window),
label_scale);
}

static void
on_proxy_signal (GDBusProxy *proxy,
gchar *sender,
Expand Down Expand Up @@ -950,7 +962,8 @@ nemo_desktop_manager_get_overlay_info (NemoDesktopManager *manager,
gint monitor,
GtkActionGroup **action_group,
gint *h_adjust,
gint *v_adjust)
gint *v_adjust,
double *label_scale_adjust)
{
GtkWindow *window;

Expand All @@ -959,7 +972,9 @@ nemo_desktop_manager_get_overlay_info (NemoDesktopManager *manager,
if (NEMO_IS_DESKTOP_WINDOW (window) &&
nemo_desktop_window_get_grid_adjusts (NEMO_DESKTOP_WINDOW (window),
h_adjust,
v_adjust)) {
v_adjust) &&
nemo_desktop_window_get_label_scale_adjust (NEMO_DESKTOP_WINDOW (window),
label_scale_adjust)) {

*action_group = nemo_desktop_window_get_action_group (NEMO_DESKTOP_WINDOW (window));
} else {
Expand All @@ -982,6 +997,11 @@ nemo_desktop_manager_show_desktop_overlay (NemoDesktopManager *manager,
"adjusts-changed",
G_CALLBACK (on_overlay_adjustments_changed),
manager);

g_signal_connect (priv->overlay,
"label-scale-changed",
G_CALLBACK (on_overlay_label_scale_changed),
manager);
}

nemo_desktop_overlay_show (priv->overlay, monitor);
Expand Down
3 changes: 2 additions & 1 deletion src/nemo-desktop-manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ void nemo_desktop_manager_get_overlay_info (NemoDesktopManager *man
gint monitor,
GtkActionGroup **action_group,
gint *h_adjust,
gint *v_adjust);
gint *v_adjust,
double *label_scale_adjust);
void nemo_desktop_manager_show_desktop_overlay (NemoDesktopManager *manager,
gint initial_monitor);
gboolean nemo_desktop_manager_get_is_cinnamon (NemoDesktopManager *manager);
Expand Down
Loading