J'ai trouvé !
C'est lié à mon écran. j'ai la chance (?) de disposer d'un écran qui, s'il n'est pas 4K, a néanmoins un pitch assez élevé, supérieur à la référence de darktable qui est de 96dpi. Mon écran 27" affiche en effet 2560x1440 pxl (WQHD) soit un pitch de 106dpi environ.
Dans le code, deux fonctions gèrent le redimensionnement des fenêtres
src/libs/tagging.c --> static gboolean mouse_scroll_attached()
et
src/libs/tagging.c --> static gboolean mouse_scroll_dictionary()
Dans chaque fonction, le code qui calcule et applique la nouvelle taille des fenêtres est
Code :
height = height + (10.0 * event->delta_y);
height = (height < 100.0) ? 100.0 : (height > 500.0) ? 500.0 : height;
gtk_widget_set_size_request(GTK_WIDGET(d->attached_window), -1, DT_PIXEL_APPLY_DPI((gint)height));
C'est le même code pour les deux fonctions, sauf le nom de la fenêtre et la valeur des constantes qui changent
Le problème vient de l'application de la macro DT_PIXEL_APPLY_DPI() sur la valeur calculée. Dans mon cas, comme le multiplicateur de la macro est supérieur à la valeur par défaut, la valeur calculée est toujours augmentée et jamais diminuée.
En fait la macro devrait être appliquée aux constantes, pas à la valeur calculée, ce qui correspond strictement à la logique de cette macro. Voici le code que j'ai rédigé pour modifier ces fonctions :
Code :
static gboolean mouse_scroll_attached(GtkWidget *treeview, GdkEventScroll *event, dt_lib_module_t *self)
{
dt_lib_tagging_t *d = (dt_lib_tagging_t *)self->data;
if (event->state & GDK_CONTROL_MASK)
{
gint width, height;
gint increment = DT_PIXEL_APPLY_DPI(10.0);
gint min_height = DT_PIXEL_APPLY_DPI(100.0);
gint max_height = DT_PIXEL_APPLY_DPI(500.0);
gtk_widget_get_size_request(GTK_WIDGET(d->attached_window), &width, &height);
height = height + increment * event->delta_y;
height = (height < min_height) ? min_height : (height > max_height) ? max_height : height;
gtk_widget_set_size_request(GTK_WIDGET(d->attached_window), -1, height);
dt_conf_set_int("plugins/lighttable/tagging/heightattachedwindow", (gint)height);
return TRUE;
}
return FALSE;
}
La seconde fonction est strictement identique sauf la constante max, le nom de la fenêtre et la clé pour darktablerc
Avec ce code, tout fonctionne ! J'ai testé sur mon écran WQHD bien sûr, mais aussi sur un écran HD pour lequel il n'y avait pas de problème de toute façon.
Reste à porter cette correction dans les sources. Des conseils pour cela ?