Re: Safari-4-like Pulldown List
Re: Safari-4-like Pulldown List
- Subject: Re: Safari-4-like Pulldown List
- From: Sean Murphy <email@hidden>
- Date: Tue, 16 Jun 2009 10:08:49 -0400
On Jun 14, 2009, at 5:01 AM, Dong Feng wrote:
I want to implement a pulldown list like what FireFox does with its
address bar (or its Google search bar). I think it involves to open a
borderless window and draw items through Cocoa drawing APIs.
But when I saw Safari 4, its pulldown list's appearance just like a
context-menu, I began thinking if implement a Safari-4-like pulldown
list can save drawing the whole borderless window by writing code
myself. Does Safari 4 rely on Cocoa API of menu to implement its
pulldown list, or does it still implement a borderless window itself
whose appearance happen to simulate a context menu?
Hi Dong,
As for Safari, it's the latter approach you mentioned. Using F-Script
Anywhere, what Safari is doing is displaying a CompletionsWindow,
probably as a child window of the browser window, and then using a
RoundedRect view to simulate the context menu appearance. The
completion list is a subclass of NSTableView.
In Camino, we're currently working on a more Mac-like autocompletion
bar that actually has an appearance similar to Safari's
coincidentally. Our project is open source, so you can feel free to
take a look at the code we're using. This would server as a better
example than having to reverse engineer Safari's implementation to
learn from. This is our Google Summer of Code project for this year.
Check out <http://wiki.caminobrowser.org/
Development:Summer_of_Code_2009>, and you can view the current patch
(still a work in progress, but it is working) implementing this at <https://bugzilla.mozilla.org/show_bug.cgi?id=495496
>.
Hope that helps,
Sean.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden