Mac OS X Implementing HIView
From Apache OpenOffice Wiki
Contributors
Eric Bachard[ericb]
Sébastien Plisson [plipli]
Introduction
This page is part of [Native Controls Implementation] and the objective is to use HIView for HIComboboxes or other HI* controls.
Current code implementation
Events
Two sorts of events are needed:
- for objects (ClasskEventClassHIObject ) :
kEventHIObjectConstruct kEventHIObjectInitialize kEventHIObjectDestruct
- for controls themselves ( Class kEventClassControl ) :
kEventControlDraw kEventControlInitialize kEventControlHitTest kEventControlGetPartRegion kEventControlBoundsChanged
Current implementation : see vcl/aqua/aquavclevents.hxx for more informations about the syntax.
Handlers
The Handler is OSStatus type, and is used when events are detected.
e.g. : we created HandleHIViewEvent()
using GetEventParameter, itself using the parameters described in Apple documentation.
Code sample :
OSStatus HandleHIViewEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData) { ImplSalYieldMutexAcquire(); OSStatus status = noErr; CGContextRef mrContext; HIRect bounds; // 1 status = GetEventParameter (inEvent, kEventParamCGContextRef, typeCGContextRef, NULL, sizeof (CGContextRef), NULL, &mrContext); //require_noerr(status, CantGetGraphicsContext); // 2 HIViewGetBounds ((HIViewRef) inUserData, &bounds); //require_noerr(status, CantGetBoundingRectangle); ImplSalYieldMutexRelease(); return status; }
Controls
[FIXME]
Usefull Links
Reference
HIVIew : [reference]
or : [same in .pdf format]