CONVERTIR COORDONNEES et fenêtre feuille sur macOS

Juste une remarque : J’essaie d’utiliser cette commande dans un contexte particulier d’une fenêtre feuille incluse dans une autre fenêtre sur macOS, j’ai l’impression que dans ce contexte les coordonnées ne sont pas totalement correctes.

Je demande de positionner ma fenêtre en bas de mon champ et le résultat n’est pas juste, la fenêtre s’ouvre en haut (ou presque), je pense qu’il manque la prise en compte de la hauteur de la barre de titre de la fenêtre dans laquelle est ouverte la fenêtre feuille.

N.B. : En rajoutant 20 pixels aux coordonnées du bas j’obtiens un résultat cohérent.

Tu me fais penser que je n’ai pas le souvenir d’une commande 4D permettant de lire la taille des éléments “contenants” d’une fenêtre, plus particulièrement la hauteur de sa barre de titre. Même topo avec les barres de défilement (ascenseurs). À chaque fois que j’en ai eu besoin, j’ai dû coder “en dur” et l’exemple de LISTE FENETRES ne fait pas mieux :

$vlTop:=80 ` Laissons de la place à la barre d'outils

Sans aller jusqu’à prétendre que ça servirait h24, je me demande souvent pourquoi ces outils sont inexistants.

On a 2 choses:
Hauteur barre outils
et
Hauteur barre de menus

Mais, effectivement, pas la hauteur de la barre de titre de fenêtre (à voir ce que cela va donner en plus maintenant avec ce qu’il nous propose sous macOS 11 avec une pseudo barre d’outil mélangée à la barre de titre des fenêtres… :sweat_smile:)

Mais, pour mon problème initial, j’ai plus l’impression d’un bug, non ? Il pense que la fenêtre feuille n’a pas de barre de titre alors que si, il a la barre de la fenêtre dans laquelle elle est incluse…

There is also the annoying exceptional case where it is not possible to add a sheet window to the parent window (maybe it is already modal) in which case “sheet” instruction is ignored and a different window type is used. :thinking:

Peut-être, je ne sais pas si le titre de fenêtre parente doit compter dans une fenêtre feuille, ton observation semble dire que oui. Par contre, quand on la déplace avec ctrl+cmde+clic+glisser, on obtient une fenêtre sans barre de titre.

Alors, curieusement, même si je m’amuse à déplacer cette fenêtre feuille avec ton raccourci que je n’aurais pas pensé à utiliser dans ce contexte :upside_down_face:, mon code fonctionne toujours de la même façon mais il reste toujours une différence dans la coordonnée hauteur qui se positionne (semble-t’il) à la hauteur de la barre de titre près ?! les coordonnées ne sont pas celles de la partie basse de mon champ la fenêtre vient recouvrir le champ alors qu’elle devrait se positionner en dessous. Donc obligé de corrigé la hauteur de 20 pixels ?

Pour info, voici le bout de code que j’utilise:

	C_ENTIER LONG($left;$top;$right;$bottom)
	OBJET LIRE COORDONNÉES($5->;$left;$top;$right;$bottom)
	CONVERTIR COORDONNÉES($left;$bottom;XY Formulaire courant;XY Ecran)
	$refFen:=Créer fenêtre formulaire([Interface];$4;Form fenêtre palette;$left;$bottom+20)

Alors, nouveau constat que je viens de faire, cela se produit également dans le cas d’une fenêtre normale seule ? du coup j’ai un doute ?

en changeant mon code ainsi

CONVERTIR COORDONNÉES($left;$bottom;XY Fenêtre courante;XY Ecran)

cela ne change rien…

Bon, suite de l’étude, sur PC, la hauteur est juste sans correction. Je vais donc signaler un incident TAOW…

Dans la coordonnée horizontale, il y a également une mini correction à faire de -1 pixel sur PC et -2 sur Mac pour être réellement à la même hauteur que le champ. Et pour le décalage vertical, on peut être pile-poil avec 18 pixels (et non pas 20).