Forcer la réactualisation de l'ombre d'un texte ?

ClicCoolClicCool Membre
22:32 modifié dans API AppKit #1
Bonjour,

Comment peut-on forcer la mise à  jour de l'ombre d'un texte d'une NSTextView transparente dans une fenêtre sans fond (mais barre de titre apparente) ?

En effet au changement du texte affiché il reste l'ancienne ombre portée avec l'empreinte blanche de l'ancien texte. Cela est particulièrement disgracieux si le nouveau texte est nettement plus court et on peut alors lire en blanc sur l'ancienne ombre le reste du texte précédent.
J'ai essayé de virer l'ombre, retracer la fenetre puis remettre l'ombre mais si cela résout le pb de l'ombre cela est aussi fort disgrcieux car on voit alors nettement la fenêtre tressauter à  chaque modification de son texte.

Réponses

  • ClicCoolClicCool Membre
    22:32 modifié #2
    Désolé pour le dérangement, je me réponds à  moi même:

    [window invalidateShadow];

    Va forcer le recalcul de l'ombre de la fenêtre ET de son contenu.

    J'ignorais l'existance de cette méthode, je pensait que ça se faisait tout seul ???
  • ClicCoolClicCool Membre
    22:32 modifié #3
    Ah ben non c'est pas top quand même  :-\\

    Je suis finalement oobligé d'écrire un display avant et après:
    <br />	[txtView display];<br />	[window invalidateShadow];<br />	[txtView display];
    


    Avec un seul display après ça marche pas ???
    Avec un setNeedsDisplay on voit encore apparaà®tre une fraction de seconde l'empreinte blanche du texte précédent

    Et encore comme ça on voit toujours apparaà®tre une fraction de fraction de seconde l'empreinte blanche du texte précédent !

    Y'a pas mieux ?
    J'ai loupé un truc ?
  • mpergandmpergand Membre
    22:32 modifié #4
    Salut ClicCool,

    Juste une idée en passant  ;)

    textView superview] setNeedsDisplayInRect:[textView frame;
  • ClicCoolClicCool Membre
    22:32 modifié #5
    dans 1110448512:

    Salut ClicCool,

    Juste une idée en passant  ;)

    textView superview] setNeedsDisplayInRect:[textView frame;


    Merci mpergand  :)

    J'ai bien cru que ton idée allait tout résoudre simplement ...
    ... Mais pas vraiment  :(
    Ceci dit elle donne les meilleurs résultats, mais Je suis quand même contraindre d'écrire:
    [[txtView superview] displayRect:[txtView frame]];<br />	[window invalidateShadow];<br />	[[txtView superview] setNeedsDisplayInRect:[txtView frame]];
    


    ??? Je comprend pas ce binz ! ?
  • 22:32 modifié #6
    Tu appliques l'ombre comment?

    C'est un attribut du texte, ou l'ombre de la fenêtre?
  • ClicCoolClicCool Membre
    22:32 modifié #7
    dans 1110504927:

    Tu appliques l'ombre comment?

    C'est un attribut du texte, ou l'ombre de la fenêtre?


    C'est l'ombre de la fenêtre (et de son texte) mais pas le style "texte ombré", en effet j'ai peut-être manqué de clarté en oubliant la confusion possible avec un texte "ombré"
  • 22:32 modifié #8
    Essaie le texte ombré alors ;)
  • ClicCoolClicCool Membre
    22:32 modifié #9
    Ben ça aura pas le même effet qu'un texte dans une fenetre transparente et portant son ombre sur les fenêtres (ou bureau) en dessous non ?
  • 22:32 modifié #10
    C'est malin, en me posant une question directe, tu m'empêches de faire durer mon 500 post...

    En fait, je ne sais pas, je n'ai jamais eu l'occasion de voir ce que donnait du texte ombré dans une fenêtre transparente, c'était juste une suggestion comme ça, car en général OS X est bien foutu sur ce plan là .
Connectez-vous ou Inscrivez-vous pour répondre.