/[hegemonie]/hegemonie/Interface/UiContainer.m
ViewVC logotype

Diff of /hegemonie/Interface/UiContainer.m

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by dam, Tue Jul 29 12:50:54 2003 UTC revision 1.11 by zaral, Fri Aug 1 08:57:06 2003 UTC
# Line 147  _is_mouse_event (NSEvent *event) Line 147  _is_mouse_event (NSEvent *event)
147  }  }
148    
149  /**  /**
150   * Forward the event to the first widget wich responds to the event.   * Tests wether the event is a mouse event.
151   */   */
152  - (void) _widgetInvocation: (NSInvocation*)objectInvoke  static BOOL
153    _is_key_event (NSEvent *event)
154  {  {
155    NSParameterAssert (objectInvoke);    NSCParameterAssert (event);
156    
157      switch ([event type])
158        {
159        case NSKeyDown:
160        case NSKeyUp:
161          return YES;
162        default:
163          return NO;
164        }
165    }
166    
167    - (BOOL) _invokeMethodWithInvocation: (NSInvocation*)objectInvoke
168                            targetObject: (UiWidget *)targetObject
169    {
170      [objectInvoke invokeWithTarget: targetObject];
171      
172      BOOL eventProcessed;
173      [objectInvoke getReturnValue: &eventProcessed];
174      
175      return eventProcessed;
176    }
177    
178    /**
179     *
180     */
181    - (BOOL) _keyEvent: (NSInvocation*)objectInvoke
182    {
183      UiWidget * widget;
184      BOOL eventProcessed;
185    NSEvent *event;    NSEvent *event;
186    [objectInvoke getArgument: &event    [objectInvoke getArgument: &event
187                      atIndex: 2];                      atIndex: 2];
188    
189    /* FIXME - only the widget in front should recieve the event */    if ( !_is_key_event (event) )
190        {
191          return NO;
192        }
193        
194      widget = [self whoHasFocus];
195      if (widget != nil)
196        {
197          if ([widget respondsToSelector: [objectInvoke selector]])
198            {
199              eventProcessed = [self _invokeMethodWithInvocation: objectInvoke
200                                                    targetObject: widget];
201            }
202        }
203      else if ([_delegate respondsToSelector: [objectInvoke selector]])
204        {
205          eventProcessed = [self _invokeMethodWithInvocation: objectInvoke
206                                                targetObject: _delegate];
207        }      
208    
209      return eventProcessed;
210    }
211    
212    /**
213     *
214     */
215    - (BOOL) _mouseEvent: (NSInvocation*)objectInvoke
216    {
217      NSEvent *event;
218      [objectInvoke getArgument: &event
219                        atIndex: 2];
220      BOOL eventProcessed;
221    
222    NSEnumerator *enumerator = [_widgets objectEnumerator];    NSEnumerator *enumerator = [_widgets objectEnumerator];
223    UiWidget *widget;    UiWidget *widget;
224      
225    while ( (widget = [enumerator nextObject]) )    while ( (widget = [enumerator nextObject]) )
226      {      {
227        if (_is_mouse_event (event)        if (_is_mouse_event (event)
# Line 170  _is_mouse_event (NSEvent *event) Line 231  _is_mouse_event (NSEvent *event)
231          }          }
232    
233        /* FIXME - the coordinates of the mouse event should be updated */        /* FIXME - the coordinates of the mouse event should be updated */
234          /* FIXME - only the widget in front should recieve the event */
235          
236          /* Give focus to widget */
237          [self setWhoHasFocus: widget];
238    
239        if ([widget respondsToSelector: [objectInvoke selector]])        if ([widget respondsToSelector: [objectInvoke selector]])
240          {          {
241            [objectInvoke invokeWithTarget: widget];            eventProcessed = [self _invokeMethodWithInvocation: objectInvoke
242                                                              targetObject: widget];
           BOOL eventProcessed;  
           [objectInvoke getReturnValue: &eventProcessed];  
243            if (eventProcessed)            if (eventProcessed)
244                return;              {
245                  return YES;
246                }
247          }                }      
248      }      }
249    
250      return NO;
251    }
252    
253    /**
254     * Forward the event to the first widget wich responds to the event.
255     */
256    - (void) _widgetInvocation: (NSInvocation*)objectInvoke
257    {
258      NSParameterAssert (objectInvoke);
259    
260      if ([self _keyEvent: objectInvoke])
261        {
262          return;
263        }
264    
265      if ([self _mouseEvent: objectInvoke])
266        {
267          return;
268        }
269  }  }
270    
271  /**  /**
# Line 220  _is_event_invocation (NSInvocation *obje Line 305  _is_event_invocation (NSInvocation *obje
305      [super forwardInvocation: objectInvoke];      [super forwardInvocation: objectInvoke];
306  }  }
307    
308    - (void) setEnabled: (BOOL)enabled
309    {
310      NSEnumerator *enumerator = [_widgets objectEnumerator];
311      UiWidget *widget;
312      
313      while ( (widget = [enumerator nextObject]) )
314        {
315          [widget setEnabled: enabled];
316        }
317    }
318    
319  @end  @end

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26