Difference between revisions of "Mac OS X Implementing HIView"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Handlers)
(Handlers)
Line 37: Line 37:
 
Current implementation : see vcl/aqua/aquavclevents.hxx for more informations about the syntax.
 
Current implementation : see vcl/aqua/aquavclevents.hxx for more informations about the syntax.
  
=== Handlers ===
+
=== The HI* Event Handler ===
  
 
The Handler is OSStatus type, and is used when events are detected.
 
The Handler is OSStatus type, and is used when events are detected.

Revision as of 16:08, 12 March 2007

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.

The HI* Event Handler

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)
{ 
    //lock
    ImplSalYieldMutexAcquire();
    
    
    OSStatus status = noErr;
    
    // we use mrContext, global and seen from everywhere 
    CGContextRef mrContext; 
    
    // create HIRect, contianing the control bounds ( in local coordinates) 
    HIRect bounds;  

    status = GetEventParameter (inEvent, 
                                kEventParamCGContextRef, 
                                typeCGContextRef, 
                                NULL, 
                                sizeof (CGContextRef), 
                                NULL, 
                                &mrContext); 

    // not used, but usefull
    //require_noerr(status, CantGetGraphicsContext); // 2
    
   
    // We need to know the bounds containing the current control 
    HIViewGetBounds ((HIViewRef) inUserData, &bounds); 

    // not used, but usefull
    //require_noerr(status, CantGetBoundingRectangle);

    // unlock 
    ImplSalYieldMutexRelease();
    
    return status;  
} 

Controls

[FIXME]

Usefull Links

Reference

HIVIew  : [reference]

or : [same in .pdf format]

Code sample

Personal tools