Mac OS X Implementing HIView

From Apache OpenOffice Wiki
Revision as of 16:03, 12 March 2007 by Ericb (Talk | contribs)

Jump to: navigation, search

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]

Code sample

Personal tools