Forum darktable FR
Taille des fenêtres de mots clés - Version imprimable

+- Forum darktable FR (https://forums.darktable.fr)
+-- Forum : Autour de darktable (https://forums.darktable.fr/forumdisplay.php?fid=95)
+--- Forum : Développement (https://forums.darktable.fr/forumdisplay.php?fid=100)
+--- Sujet : Taille des fenêtres de mots clés (/showthread.php?tid=3943)



Taille des fenêtres de mots clés - jpverrue - 13-09-19

Avec la version 2.7, il est possible de redimensionner les deux fenêtres du module "mots clés" avec un "CTRL+molette de la souris". Ça fonctionnait très bien, mais avec la dernière compilation des sources (2.7.0+1707~g618a8f9b3), le CTRL+molette ne fait qu'agrandir les fenêtres. Impossible de les diminuer. Je m'en suis sorti en les réinitialisant dans darktablerc.
Suis-je le seul à avoir ce problème, ou est-que vous y êtes aussi confrontés ?


RE: Taille des fenêtres de mots clés - jpverrue - 13-09-19

J'ai continué mes investigations.

J'ai fait la compilation de 2.7.0+1707~g618a8f9b3 hier sur deux machines différentes. Sur la machine de bureau j'ai le problème, par contre sur le portable, tout va bien ! Je précise que les deux machines sont animées par la même distrib de Linux : Opensuse Tumbleweed que j'avais mise à jour juste avant de faire les compilations. Les machines sont donc réputées identiques.

Je continue, je fais un test sur la machine où ça m... mais avec un autre compte. Le problème est aussi présent. Ce n'est donc pas lié à la configuration d'un compte, mais bien à la partie logicielle installée sur cette machine.

Je relance la compilation... Le problème persiste. J'ai donc certainement un pb avec GTK, mais où ?


RE: Taille des fenêtres de mots clés - jpverrue - 30-09-19

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 ?