MenuButton.c File Reference

#include <stdio.h>
#include <X11/IntrinsicP.h>
#include <X11/StringDefs.h>
#include <X11/Xaw3d/XawInit.h>
#include <X11/Xaw3d/MenuButtoP.h>

Include dependency graph for MenuButton.c:

Go to the source code of this file.

Defines

#define superclass   ((CommandWidgetClass)&commandClassRec)
#define offset(field)   XtOffsetOf(MenuButtonRec, field)

Functions

static void ClassInitialize ()
static void PopupMenu ()
static void PopupMenu (Widget w, XEvent *event, String *params, Cardinal *num_params)

Variables

static char defaultTranslations []
static XtResource resources []
static XtActionsRec actionsList []
MenuButtonClassRec menuButtonClassRec
WidgetClass menuButtonWidgetClass = (WidgetClass) &menuButtonClassRec


Define Documentation

#define offset ( field   )     XtOffsetOf(MenuButtonRec, field)

Definition at line 74 of file MenuButton.c.

#define superclass   ((CommandWidgetClass)&commandClassRec)

Definition at line 59 of file MenuButton.c.


Function Documentation

static void ClassInitialize (  )  [static]

Definition at line 148 of file MenuButton.c.

References PopupMenu(), and XawInitializeWidgetSet().

00149 {
00150     XawInitializeWidgetSet();
00151     XtRegisterGrabAction(PopupMenu, True, 
00152                          (unsigned int)(ButtonPressMask | ButtonReleaseMask),
00153                          GrabModeAsync, GrabModeAsync);
00154 }

Here is the call graph for this function:

static void PopupMenu ( Widget  w,
XEvent *  event,
String *  params,
Cardinal *  num_params 
) [static]

Definition at line 158 of file MenuButton.c.

References _MenuButtonRec::menu_button, MenuButtonPart::menu_name, NULL, and void().

00163 {
00164   MenuButtonWidget mbw = (MenuButtonWidget) w;
00165   Widget menu = NULL, temp;
00166   Arg arglist[2];
00167   Cardinal num_args;
00168   int menu_x, menu_y, menu_width, menu_height, button_height;
00169   Position button_x, button_y;
00170 
00171   temp = w;
00172   while(temp != NULL) {
00173     menu = XtNameToWidget(temp, mbw->menu_button.menu_name);
00174     if (menu == NULL) 
00175       temp = XtParent(temp);
00176     else
00177       break;
00178   }
00179 
00180   if (menu == NULL) {
00181     char error_buf[BUFSIZ];
00182     (void) sprintf(error_buf, "MenuButton: %s %s.",
00183             "Could not find menu widget named", mbw->menu_button.menu_name);
00184     XtAppWarning(XtWidgetToApplicationContext(w), error_buf);
00185     return;
00186   }
00187   if (!XtIsRealized(menu))
00188     XtRealizeWidget(menu);
00189   
00190   menu_width = menu->core.width + 2 * menu->core.border_width;
00191   button_height = w->core.height + 2 * w->core.border_width;
00192   menu_height = menu->core.height + 2 * menu->core.border_width;
00193 
00194   XtTranslateCoords(w, 0, 0, &button_x, &button_y);
00195   menu_x = button_x;
00196   menu_y = button_y + button_height;
00197 
00198   if (menu_x >= 0) {
00199     int scr_width = WidthOfScreen(XtScreen(menu));
00200     if (menu_x + menu_width > scr_width)
00201       menu_x = scr_width - menu_width;
00202   }
00203   if (menu_x < 0) 
00204     menu_x = 0;
00205 
00206   if (menu_y >= 0) {
00207     int scr_height = HeightOfScreen(XtScreen(menu));
00208     if (menu_y + menu_height > scr_height)
00209       menu_y = scr_height - menu_height;
00210   }
00211   if (menu_y < 0)
00212     menu_y = 0;
00213 
00214   num_args = 0;
00215   XtSetArg(arglist[num_args], XtNx, menu_x); num_args++;
00216   XtSetArg(arglist[num_args], XtNy, menu_y); num_args++;
00217   XtSetValues(menu, arglist, num_args);
00218 
00219   XtPopupSpringLoaded(menu);
00220 }

Here is the call graph for this function:

static void PopupMenu (  )  [static]

Referenced by ClassInitialize().

Here is the caller graph for this function:


Variable Documentation

XtActionsRec actionsList[] [static]

Initial value:

{
  {"PopupMenu", PopupMenu}
}

Definition at line 82 of file MenuButton.c.

char defaultTranslations[] [static]

Initial value:

 
"<EnterWindow>: highlight()\n\
 <LeaveWindow>: reset()\n\
 Any<BtnDown>:  reset() PopupMenu()"

Definition at line 61 of file MenuButton.c.

MenuButtonClassRec menuButtonClassRec

Definition at line 87 of file MenuButton.c.

WidgetClass menuButtonWidgetClass = (WidgetClass) &menuButtonClassRec

Definition at line 140 of file MenuButton.c.

XtResource resources[] [static]

Initial value:

 {
  {
    XtNmenuName, XtCMenuName, XtRString, sizeof(String), 
    offset(menu_button.menu_name), XtRString, (XtPointer)"menu"},
}

Definition at line 75 of file MenuButton.c.


Generated on Sun Mar 4 16:01:21 2007 for Scilab [trunk] by  doxygen 1.5.1