2009-09-07 7 views
0

J'écris un navigateur Web minimal utilisant Cocoa. J'ai lutté dans ma tentative de créer une barre d'adresse (essentiellement un NSComboBox dans lequel le menu déroulant contient des URLs précédemment visitées).Barre d'adresses dans le navigateur Web basé sur le cacao

Le problème principal est que l'attribut backForwardList de mon objet WebView est mis à jour à des moments imprévisibles. Par exemple, si je sélectionne une URL à partir de la liste déroulante (la source de données pour laquelle backForwardList est), lancez une demande de chargement, au moment où la liste déroulante met à jour l'élément sélectionné, backForwardList a été modifié et l'index de l'élément selected est obsolète, donc l'adresse incorrecte est affichée. Quelle est une bonne ligne d'attaque pour faire face à des problèmes de synchronisation comme celui-ci?

Répondre

0

Copiez la liste avant l'ouverture de la fenêtre contextuelle. Utilisez uniquement cette copie jusqu'à ce que la zone de liste déroulante démissionne du premier répondeur.

+0

Merci pour le tuyau à propos du premier répondant. Résout en fait plus que juste ce problème pour moi. – awt

Questions connexes