Modifier le frame d'une sheet

UniXUniX Membre
02:56 modifié dans API AppKit #1
Salut les cocoaculteurs,

J'ai un problème avec une sheet. Lorsque je l'affiche, sa hauteur peut varier. Dans le code précédant la demande d'affichage de la sheet, j'ai :
[fenetreOptions setFrame:NSMakeRect(cadreSheet.origin.x,cadreSheet.origin.y,cadreSheet.size.width,196) display:YES];

avec quoi je spécifie sa hauteur (ici 196).

Après cette ligne de code, j'ai l'affichage de la sheet.

Or, cette petite maline ne s'affiche pas avec la bonne hauteur... ??? Elle a la hauteur comme si je l'affichait en fenêtre normale, pas en sheet, cad il manque la hauteur de la barre de titre.

Et si je la referme, et que je la réouvre, là  elle a la bonne hauteur...

Une idée ?

Réponses

  • octobre 2006 modifié #2
    Le problème vient du fait qu'au premier chargement de la sheet, la fenêtre a encore sa barre de titre (donc le 196 s'applique à  la fenêtre+ sa barre de titre) et ce n'est qu'au moment où la sheet est "affichée" que la barre de titre est supprimée. Au second chargement, la sheet n'a plus sa barre de titre et c'est donc bon. Donc au lieu de 196, il faudrait que tu mettes [tt]196 + ([window styleMask] & NSTitleWindowMask) ? 22.0 : .0[/tt]
  • UniXUniX Membre
    02:56 modifié #3
    Ouais Renaud, je progresse.
    C'est maintenant bon lors de la première ouverture, mais plus lors des suivantes, car styleMask & NSTitledWindowMask renvoie toujours YES. A priori, c'est pas ce paramètre qui évolue ...
  • 02:56 modifié #4
    Essaie [window isSheet] ? .0 : 22.0
  • UniXUniX Membre
    02:56 modifié #5
    Ouaip, impec avec isSheet 

    Elle est détectée comme n'étant pas une sheet lors du premier affichage, puis comme étant une sheet lors des affichages suivants.

    Merci Renaud.
Connectez-vous ou Inscrivez-vous pour répondre.