コード例 #1
0
/*----------------------------------------------------------------------*/
static void
DoSelect(Widget w,XEvent * event,char ** params,Cardinal * nparams)
{
	static XtActionProc do_select_action = NULL;


	if (!do_select_action)
	{
		do_select_action = _XfeGetActionProc(xmCascadeButtonWidgetClass,
											 "DoSelect");
	}

	if (XfeBmAccentIsEnabled())
	{
		XmCascadeButtonPart * cp = _XfeXmCascadeButtonPart(w);

  		_XmMenuPopDown(XtParent(w),event,NULL);

		_XfeInvokeCallbacks(w,cp->activate_callback,XmCR_ACTIVATE,event,False);
		
		AccentUpdate(w,XfeACCENT_OUTSIDE);
	}
	else
	{
		do_select_action(w,event,params,nparams);
	}
}
コード例 #2
0
/*----------------------------------------------------------------------*/
/* extern */ void
_XfePrimitiveLeave(Widget w,XEvent * event,char ** params,Cardinal * nparams)
{
	/* Make sure the pointer is indeed inside for this action */
	if (!_XfePointerInside(w))
	{
		return;
	}
	
	_XfePointerInside(w) = False;

	/* Make sure we are not pretending to be insensitive */
	if (!_XfeIsSensitive(w))
	{
		return;
	}

	/* Call the XmPrimitive Leave() action */
    _XmPrimitiveLeave(w,event,params,nparams);

	/* Undefine the cursor if needed */
	if (_XfeCursorGood(_XfeCursor(w)))
	{
		XfeCursorUndefine(w);
	}

	/* Call leave callbacks */
	_XfeInvokeCallbacks(w,_XfeLeaveCallbacks(w),XmCR_LEAVE,event,False);
}
コード例 #3
0
/*----------------------------------------------------------------------*/
/* extern */ void
_XfePrimitiveFocus(Widget w,XEvent * event,char ** params,Cardinal * nparams)
{
	/* Make sure we are not pretending to be insensitive */
	if (!_XfeIsSensitive(w))
	{
		return;
	}

	XmProcessTraversal(w,XmTRAVERSE_CURRENT);

	/* Invoke Focus Callbacks */
	_XfeInvokeCallbacks(w,_XfeFocusCallbacks(w),XmCR_FOCUS,event,False);
}
コード例 #4
0
/*----------------------------------------------------------------------*/
static void
Resize(Widget w)
{
	/*printf("%s: Resize to (%d,%d)\n",XtName(w),_XfeWidth(w),_XfeHeight(w));*/

    /* Obtain the Prefered Geometry */
    _XfePrimitivePreferredGeometry(w,
								   &_XfePreferredWidth(w),
								   &_XfePreferredHeight(w));
    
    /* Force the preferred dimensions if required */
    if (_XfeUsePreferredWidth(w))
    {
		_XfeWidth(w) = _XfePreferredWidth(w);
    }
    
    if (_XfeUsePreferredHeight(w))
    {
		_XfeHeight(w) = _XfePreferredHeight(w);
    }
    
    /* Update the widget rect */
    _XfePrimitiveUpdateRect(w);
    
    /* Layout the components */
    _XfePrimitiveLayoutComponents(w);
    
    switch(_XfeBufferType(w))
    {
		/* No buffer: nothing */
    case XmBUFFER_NONE:
		break;
	
		/* Single buffer: update the buffer size and contents */
    case XmBUFFER_PRIVATE:
		BufferUpdate(w);
		_XfePrimitiveDrawEverything(w,NULL,NULL);
		break;
	
	/* Multiple buffer: update the buffer size only */
    case XmBUFFER_SHARED:
		BufferUpdate(w);
		break;
    }
    
    /* Invoke Resize Callbacks */
    _XfeInvokeCallbacks(w,_XfeResizeCallbacks(w),XmCR_RESIZE,NULL,True);
}
コード例 #5
0
/*----------------------------------------------------------------------*/
/* extern */ void
_XfePrimitiveEnter(Widget w,XEvent * event,char ** params,Cardinal * nparams)
{
	_XfePointerInside(w) = True;

	/* Make sure we are not pretending to be insensitive */
	if (!_XfeIsSensitive(w))
	{
		return;
	}

	/* Call the XmPrimitive Enter() action */
    _XmPrimitiveEnter(w,event,params,nparams);

	/* Define the cursor if needed */
	if (_XfeCursorGood(_XfeCursor(w)))
	{
		XfeCursorDefine(w,_XfeCursor(w));
	}

	/* Call enter callbacks */
	_XfeInvokeCallbacks(w,_XfeEnterCallbacks(w),XmCR_ENTER,event,False);
}