Détecter la présence du Dock à  l'écran

ClicCoolClicCool Membre
04:13 modifié dans API AppKit #1
Bonjour,

Y a-t-il un moyen de détecter si le Dock est actuellement à  l'écran ou masqué et de quel côté ?

NSSreen offre la méthode visibleFrame sensée nous donner la frame utile de l'écran c'est à  dire en excluant la barre de menu et le dock.
Mais il semble que, chez moi du moins, visibleFrame exclus systématiquement la zone potentiellement réservée au dock sur les 3 côtés.
Ce que je souhaiterais c'est plutôt de savoir où EST le dock et pas où il POURRAIT être si on change les réglages.
D'autant qu'on change pas la position du Dock toutes les 5 minutes alors s'il est à  gauche je souhaites respecter son emplacement à  gauche mais utiliser l'écran jusqu'au bord à  droite.

J'ai loupé un truc ?  ???
Faut-il que j'aille lire les prefs utilisateur du dock ?

Réponses

  • mars 2005 modifié #2
    J'aurais tendance à  dire d'aller chercher les prefs du dock. Pour voir s'il est visible, le mieux est de tourner le problème autrement: si l'auto-hide est activé, tu le considères comme toujours invisible.

    Sinon pour ce qui est des changements de taille, de côté,... il y a une notification distribuée qui est envoyée (com.apple.dock.prefchanged, pas de userInfo).
  • ClicCoolClicCool Membre
    04:13 modifié #3
    dans 1111781874:

    J'aurais tendance à  dire d'aller chercher les prefs du dock. Pour voir s'il est visible, le mieux est de tourner le problème autrement: si l'auto-hide est activé, tu le considères comme toujours invisible.

    C'est bien ce que je comptais faire en effet.

    dans 1111781874:
    Sinon pour ce qui est des changements de taille, de côté,... il y a une notification distribuée qui est envoyée (com.apple.dock.prefchanged, pas de userInfo).

    Génial, ça pourrait limitter les appels aux prefs du dock en effet et surtout voilà  une occasion de me frotter un peu au distributed Notifications que d'autres applis que les miennes émettent :)

    Merci Renaud :)
  • muqaddarmuqaddar Administrateur
    04:13 modifié #4
    Sauf qu'apparemment, on sait juste que les prefs du dock ont changé mais on ne sait pas quoi (masquage, côté...etc).
  • ClicCoolClicCool Membre
    04:13 modifié #5
    dans 1111828198:

    Sauf qu'apparemment, on sait juste que les prefs du dock ont changé mais on ne sait pas quoi (masquage, côté...etc).


    Oui en effet il n'y a pas de user-info :(
    Mais on sait alors qu'il faut ré-interroger les prefs du dock pour mettre à  jour notre affichage
  • muqaddarmuqaddar Administrateur
    04:13 modifié #6
    dans 1111828454:

    dans 1111828198:

    Sauf qu'apparemment, on sait juste que les prefs du dock ont changé mais on ne sait pas quoi (masquage, côté...etc).


    Oui en effet il n'y a pas de user-info :(
    Mais on sait alors qu'il faut ré-interroger les prefs du dock pour mettre à  jour notre affichage


    Tout à  fait, et c'est déjà  pas mal. ;)
  • ClicCoolClicCool Membre
    04:13 modifié #7
    Bon,

    ça a été bien rigolo ça d'aller lire les prefs du dock :)

    Mais j'ai pas eu le temps d'instaurer une surveillance des notifications distribuées avant de me rendre compte de mon erreur initiale.

    En fait j'ai été une brêle sur ce coup là  !!!
    visibleFrame renvoie bel et bien un frame adapté :)

    C'est moi qui n'ai pas su interpréter ce visibleFrame ...
    ... en tirant partie non seulement de la taille mais aussi de l'origine  >:)

    désolé  :-\\ :)beta:
  • 04:13 modifié #8
    Même si visible frame tiens compte des préférences du dock, je pense qu'il est important de connaà®tre quand les préférences du dock pour par exemple déplacer la fenêtre quand l'utilisateur change la taille du dock.
  • ClicCoolClicCool Membre
    04:13 modifié #9
    dans 1111833535:

    Même si visible frame tiens compte des préférences du dock, je pense qu'il est important de connaà®tre quand les préférences du dock pour par exemple déplacer la fenêtre quand l'utilisateur change la taille du dock.


    Oui ça peut être utile mais:
    -1 je connais pas d'appli qui se donne cette peine
    -2 mon appli repositionne sa fenêtre toutes les 5 secondes de toutes façons ;)

    Je garde l'idée pour un autre projet ;)
  • maconnectmaconnect Membre
    04:13 modifié #10
    essaie comme ça:

    - Tu prend la taille de l'écran
    float h=NSHeight([[NSScreen mainScreen] frame]);

    - Tu prend la taille visible de l'écran
    float v=NSHeight([[NSScreen mainScreen] visibleFrame]);

    - Tu soustrait à  h la taille de la barre des menus. Disons 25 pixels. Et tu compare v et h:
    h-=25.0;
    if (h > v)
    //le dock est là 
    else
    //il est pas là 

    A essayer. Enfin, c'est juste pour donner l'idée, après faut adapter
Connectez-vous ou Inscrivez-vous pour répondre.