#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 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.
| 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] |
XtActionsRec actionsList[] [static] |
char defaultTranslations[] [static] |
Initial value:
"<EnterWindow>: highlight()\n\ <LeaveWindow>: reset()\n\ Any<BtnDown>: reset() PopupMenu()"
Definition at line 61 of file MenuButton.c.
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.
1.5.1