Scaling support - scale by screen height (issue #656)
This commit is contained in:
parent
b2b0119f4d
commit
965a2665b0
6 changed files with 28 additions and 2 deletions
|
@ -246,6 +246,8 @@ void add_entry(char *key, char *value)
|
||||||
/* Background and border */
|
/* Background and border */
|
||||||
if (strcmp(key, "scale_relative_to_dpi") == 0) {
|
if (strcmp(key, "scale_relative_to_dpi") == 0) {
|
||||||
ui_scale_dpi_ref = atof(value);
|
ui_scale_dpi_ref = atof(value);
|
||||||
|
} else if (strcmp(key, "scale_relative_to_screen_height") == 0) {
|
||||||
|
ui_scale_monitor_size_ref = atof(value);
|
||||||
} else if (strcmp(key, "rounded") == 0) {
|
} else if (strcmp(key, "rounded") == 0) {
|
||||||
// 'rounded' is the first parameter => alloc a new background
|
// 'rounded' is the first parameter => alloc a new background
|
||||||
if (backgrounds->len > 0) {
|
if (backgrounds->len > 0) {
|
||||||
|
|
|
@ -80,6 +80,7 @@ GArray *backgrounds;
|
||||||
GArray *gradients;
|
GArray *gradients;
|
||||||
|
|
||||||
double ui_scale_dpi_ref;
|
double ui_scale_dpi_ref;
|
||||||
|
double ui_scale_monitor_size_ref;
|
||||||
|
|
||||||
Imlib_Image default_icon;
|
Imlib_Image default_icon;
|
||||||
char *default_font = NULL;
|
char *default_font = NULL;
|
||||||
|
@ -87,6 +88,7 @@ char *default_font = NULL;
|
||||||
void default_panel()
|
void default_panel()
|
||||||
{
|
{
|
||||||
ui_scale_dpi_ref = 0;
|
ui_scale_dpi_ref = 0;
|
||||||
|
ui_scale_monitor_size_ref = 0;
|
||||||
panels = NULL;
|
panels = NULL;
|
||||||
num_panels = 0;
|
num_panels = 0;
|
||||||
default_icon = NULL;
|
default_icon = NULL;
|
||||||
|
@ -225,6 +227,8 @@ void init_panel()
|
||||||
p->scale = server.monitors[p->monitor].dpi / ui_scale_dpi_ref;
|
p->scale = server.monitors[p->monitor].dpi / ui_scale_dpi_ref;
|
||||||
else
|
else
|
||||||
p->scale = 1;
|
p->scale = 1;
|
||||||
|
if (ui_scale_monitor_size_ref > 0)
|
||||||
|
p->scale *= server.monitors[p->monitor].height / ui_scale_monitor_size_ref;
|
||||||
fprintf(stderr, BLUE "tint2: panel %d uses scale %g " RESET "\n", i + 1, p->scale);
|
fprintf(stderr, BLUE "tint2: panel %d uses scale %g " RESET "\n", i + 1, p->scale);
|
||||||
if (!p->area.bg)
|
if (!p->area.bg)
|
||||||
p->area.bg = &g_array_index(backgrounds, Background, 0);
|
p->area.bg = &g_array_index(backgrounds, Background, 0);
|
||||||
|
|
|
@ -96,6 +96,7 @@ extern double tracing_fps_threshold;
|
||||||
extern gboolean debug_frames;
|
extern gboolean debug_frames;
|
||||||
extern gboolean debug_thumbnails;
|
extern gboolean debug_thumbnails;
|
||||||
extern double ui_scale_dpi_ref;
|
extern double ui_scale_dpi_ref;
|
||||||
|
extern double ui_scale_monitor_size_ref;
|
||||||
|
|
||||||
typedef struct Panel {
|
typedef struct Panel {
|
||||||
Area area;
|
Area area;
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "gradient_gui.h"
|
#include "gradient_gui.h"
|
||||||
#include "strlcat.h"
|
#include "strlcat.h"
|
||||||
|
|
||||||
GtkWidget *scale_relative_to_dpi;
|
GtkWidget *scale_relative_to_dpi, *scale_relative_to_screen_height;
|
||||||
GtkWidget *panel_width, *panel_height, *panel_margin_x, *panel_margin_y, *panel_padding_x, *panel_padding_y,
|
GtkWidget *panel_width, *panel_height, *panel_margin_x, *panel_margin_y, *panel_padding_x, *panel_padding_y,
|
||||||
*panel_spacing;
|
*panel_spacing;
|
||||||
GtkWidget *panel_wm_menu, *panel_dock, *panel_autohide, *panel_autohide_show_time, *panel_autohide_hide_time,
|
GtkWidget *panel_wm_menu, *panel_dock, *panel_autohide, *panel_autohide_show_time, *panel_autohide_hide_time,
|
||||||
|
@ -614,6 +614,19 @@ void create_panel(GtkWidget *parent)
|
||||||
gtk_table_attach(GTK_TABLE(table), scale_relative_to_dpi, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0);
|
gtk_table_attach(GTK_TABLE(table), scale_relative_to_dpi, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0);
|
||||||
col++;
|
col++;
|
||||||
|
|
||||||
|
row++;
|
||||||
|
col = 2;
|
||||||
|
label = gtk_label_new(_("Scale relative to screen height"));
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
|
||||||
|
gtk_widget_show(label);
|
||||||
|
gtk_table_attach(GTK_TABLE(table), label, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0);
|
||||||
|
col++;
|
||||||
|
|
||||||
|
scale_relative_to_screen_height = gtk_spin_button_new_with_range(0, 9000, 1);
|
||||||
|
gtk_widget_show(scale_relative_to_screen_height);
|
||||||
|
gtk_table_attach(GTK_TABLE(table), scale_relative_to_screen_height, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0);
|
||||||
|
col++;
|
||||||
|
|
||||||
change_paragraph(parent);
|
change_paragraph(parent);
|
||||||
|
|
||||||
label = gtk_label_new(_("<b>Appearance</b>"));
|
label = gtk_label_new(_("<b>Appearance</b>"));
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include "../launcher/icon-theme-common.h"
|
#include "../launcher/icon-theme-common.h"
|
||||||
|
|
||||||
// panel
|
// panel
|
||||||
extern GtkWidget *scale_relative_to_dpi;
|
extern GtkWidget *scale_relative_to_dpi, *scale_relative_to_screen_height;
|
||||||
extern GtkWidget *panel_width, *panel_height, *panel_margin_x, *panel_margin_y, *panel_padding_x, *panel_padding_y,
|
extern GtkWidget *panel_width, *panel_height, *panel_margin_x, *panel_margin_y, *panel_padding_x, *panel_padding_y,
|
||||||
*panel_spacing;
|
*panel_spacing;
|
||||||
extern GtkWidget *panel_wm_menu, *panel_dock, *panel_autohide, *panel_autohide_show_time, *panel_autohide_hide_time,
|
extern GtkWidget *panel_wm_menu, *panel_dock, *panel_autohide, *panel_autohide_show_time, *panel_autohide_hide_time,
|
||||||
|
|
|
@ -381,6 +381,9 @@ void config_write_panel(FILE *fp)
|
||||||
fprintf(fp,
|
fprintf(fp,
|
||||||
"scale_relative_to_dpi = %d\n",
|
"scale_relative_to_dpi = %d\n",
|
||||||
(int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(scale_relative_to_dpi)));
|
(int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(scale_relative_to_dpi)));
|
||||||
|
fprintf(fp,
|
||||||
|
"scale_relative_to_screen_height = %d\n",
|
||||||
|
(int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(scale_relative_to_screen_height)));
|
||||||
|
|
||||||
fprintf(fp, "\n");
|
fprintf(fp, "\n");
|
||||||
}
|
}
|
||||||
|
@ -1115,6 +1118,9 @@ void add_entry(char *key, char *value)
|
||||||
if (strcmp(key, "scale_relative_to_dpi") == 0) {
|
if (strcmp(key, "scale_relative_to_dpi") == 0) {
|
||||||
extract_values(value, &value1, &value2, &value3);
|
extract_values(value, &value1, &value2, &value3);
|
||||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(scale_relative_to_dpi), atoi(value1));
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(scale_relative_to_dpi), atoi(value1));
|
||||||
|
} else if (strcmp(key, "scale_relative_to_screen_height") == 0) {
|
||||||
|
extract_values(value, &value1, &value2, &value3);
|
||||||
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(scale_relative_to_screen_height), atoi(value1));
|
||||||
} else if (strcmp(key, "gradient") == 0) {
|
} else if (strcmp(key, "gradient") == 0) {
|
||||||
finalize_gradient();
|
finalize_gradient();
|
||||||
GradientConfigType t;
|
GradientConfigType t;
|
||||||
|
|
Loading…
Reference in a new issue