/** * * $Id: RowColumnP.h,v 1.1 2004/08/28 19:23:26 dannybackx Exp $ * * Copyright (C) 1995 Free Software Foundation, Inc. * Copyright (C) 1995-2000 LessTif Development Team * * This file is part of the GNU LessTif Library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * **/ #ifndef _XM_ROWCOLUMNP_H #define _XM_ROWCOLUMNP_H #include #include #ifdef __cplusplus extern "C" { #endif /* used by the popup menu code. */ typedef struct _XmButtonEventStatusRec { Time time; Boolean verified; Boolean waiting_to_be_managed; XButtonEvent event; } XmButtonEventStatusRec; /* Also not used in lesstif.. will be someday */ typedef struct _XmReplayInfoRec { Time time; Widget toplevel_menu; } XmReplayInfoRec; typedef struct _XmMenuFocusRec { Widget oldWidget; Window oldFocus; int oldRevert; } XmMenuFocusRec; /* per screen state information dealing with menus */ typedef struct _XmMenuStateRec { Widget RC_LastSelectToplevel; XmButtonEventStatusRec RC_ButtonEventStatus; XmReplayInfoRec RC_ReplayInfo; Widget RC_activeItem; XmMenuFocusRec RC_menuFocus; Boolean RC_allowAcceleratedInsensitiveUnmanagedMenuItems; Time MS_LastManagedMenuTime; Boolean MU_InDragMode; Widget MU_CurrentMenuChild; Boolean MU_InPMMode; } XmMenuStateRec, *XmMenuState; /* geometry information for children of the row column. Used to simplify the layout routines */ typedef struct _XmRCKidGeometryRec { Widget kid; XtWidgetGeometry box; Dimension margin_top; Dimension margin_bottom; Dimension baseline; } XmRCKidGeometryRec, *XmRCKidGeometry; /* Define the rowcolumn instance part */ typedef struct { Dimension margin_height; Dimension margin_width; Dimension spacing; Dimension entry_border; Widget help_pushbutton; Widget cascadeBtn; XmString option_label; Widget option_submenu; XmRCKidGeometry boxes; WidgetClass entry_class; XtCallbackList entry_callback; XtCallbackList map_callback; XtCallbackList unmap_callback; Widget memory_subwidget; short num_columns; String menuPost; unsigned int postButton; int postEventType; unsigned int postModifiers; String menu_accelerator; KeySym mnemonic; XmStringCharSet mnemonicCharSet; unsigned char entry_alignment; unsigned char packing; unsigned char type; unsigned char orientation; Boolean armed; Boolean adjust_margin; Boolean adjust_last; Boolean do_alignment; Boolean radio; Boolean radio_one; Boolean homogeneous; Boolean resize_width; Boolean resize_height; Boolean popup_enabled; Dimension old_width; Dimension old_height; Dimension old_shadow_thickness; Widget *postFromList; int postFromCount; int postFromListSize; Widget lastSelectToplevel; Widget popupPosted; unsigned char oldFocusPolicy; unsigned char TearOffModel; Widget ParentShell; Widget tear_off_control; Boolean to_state; XtCallbackList tear_off_activated_callback; XtCallbackList tear_off_deactivated_callback; Widget tear_off_lastSelectToplevel; Widget tear_off_focus_item; unsigned char entry_vertical_alignment; unsigned char popup_menu_click; XtIntervalId popup_timeout_timer; } XmRowColumnPart; /* Define the full instance record */ typedef struct _XmRowColumnRec { CorePart core; CompositePart composite; ConstraintPart constraint; XmManagerPart manager; XmRowColumnPart row_column; } XmRowColumnRec; /* Define class part structure */ typedef struct { XmMenuProc menuProcedures; /* proc to interface with menu widgets */ XtActionProc armAndActivate; /* proc triggered by accelerator */ XmMenuTraversalProc traversalHandler; /* proc to handle menu traversal */ XtPointer extension; } XmRowColumnClassPart; /* Define the full class record */ typedef struct _XmRowColumnClassRec { CoreClassPart core_class; CompositeClassPart composite_class; ConstraintClassPart constraint_class; XmManagerClassPart manager_class; XmRowColumnClassPart row_column_class; } XmRowColumnClassRec; /* Define the Constraint Resources */ typedef struct _XmRowColumnConstraintPart { Boolean was_managed; Dimension margin_top; Dimension margin_bottom; Dimension baseline; short position_index; } XmRowColumnConstraintPart; typedef struct _XmRowColumnConstraintRec { XmManagerConstraintPart manager; XmRowColumnConstraintPart row_column; } XmRowColumnConstraintRec, *XmRowColumnConstraints; #define XmRC_ARMED_BIT (1 << 0) #define XmRC_BEING_ARMED_BIT (1 << 1) #define XmRC_EXPOSE_BIT (1 << 2) #define XmRC_WINDOW_MOVED_BIT (1 << 3) #define XmRC_WIDGET_MOVED_BIT (1 << 4) #define XmRC_POPPING_DOWN_BIT (1 << 5) #define XmRC_FROM_RESIZE_BIT (1 << 6) #define RC_IsArmed(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_ARMED_BIT) #define RC_BeingArmed(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_BEING_ARMED_BIT) #define RC_WidgetHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WINDOW_MOVED_BIT) #define RC_WindowHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WIDGET_MOVED_BIT) #define RC_PoppingDown(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_POPPING_DOWN_BIT) #define RC_FromResize(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_FROM_RESIZE_BIT) #define RC_SetBit(byte,bit,v) byte = (byte & (~bit)) | (v ? bit : 0) #define RC_SetArmed(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_ARMED_BIT, v) #define RC_SetBeingArmed(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_BEING_ARMED_BIT, v) #define RC_SetExpose(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_EXPOSE_BIT, v) #define RC_SetWidgetMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WIDGET_MOVED_BIT,v) #define RC_SetWindowMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WINDOW_MOVED_BIT,v) #define RC_SetPoppingDown(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_POPPING_DOWN_BIT,v) #define RC_SetFromResize(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_FROM_RESIZE_BIT,v) XMLIBEXPORT extern XmRowColumnClassRec xmRowColumnClassRec; /* * easy access macros */ #define RC_MarginW(m) \ (((XmRowColumnWidget)(m))->row_column.margin_width) #define RC_MarginH(m) \ (((XmRowColumnWidget)(m))->row_column.margin_height) #define RC_TearOffActivate_cb(m) \ (((XmRowColumnWidget)(m))->row_column.tear_off_activated_callback) #define RC_TearOffDeactivate_cb(m) \ (((XmRowColumnWidget)(m))->row_column.tear_off_deactivated_callback) #define RC_Entry_cb(m) \ (((XmRowColumnWidget)(m))->row_column.entry_callback) #define RC_Map_cb(m) \ (((XmRowColumnWidget)(m))->row_column.map_callback) #define RC_Unmap_cb(m) \ (((XmRowColumnWidget)(m))->row_column.unmap_callback) #define RC_Orientation(m) \ (((XmRowColumnWidget)(m))->row_column.orientation) #define RC_Spacing(m) \ (((XmRowColumnWidget)(m))->row_column.spacing) #define RC_EntryBorder(m) \ (((XmRowColumnWidget)(m))->row_column.entry_border) #define RC_HelpPb(m) \ (((XmRowColumnWidget)(m))->row_column.help_pushbutton) #define RC_DoMarginAdjust(m) \ (((XmRowColumnWidget)(m))->row_column.adjust_margin) #define RC_EntryAlignment(m) \ (((XmRowColumnWidget)(m))->row_column.entry_alignment) #define RC_EntryVerticalAlignment(m) \ (((XmRowColumnWidget)(m))->row_column.entry_vertical_alignment) #define RC_Packing(m) \ (((XmRowColumnWidget)(m))->row_column.packing) #define RC_NCol(m) \ (((XmRowColumnWidget)(m))->row_column.num_columns) #define RC_AdjLast(m) \ (((XmRowColumnWidget)(m))->row_column.adjust_last) #define RC_AdjMargin(m) \ (((XmRowColumnWidget)(m))->row_column.adjust_margin) #define RC_MemWidget(m) \ (((XmRowColumnWidget)(m))->row_column.memory_subwidget) #define RC_CascadeBtn(m) \ (((XmRowColumnWidget)(m))->row_column.cascadeBtn) #define RC_OptionLabel(m) \ (((XmRowColumnWidget)(m))->row_column.option_label) #define RC_OptionSubMenu(m) \ (((XmRowColumnWidget)(m))->row_column.option_submenu) #define RC_RadioBehavior(m) \ (((XmRowColumnWidget)(m))->row_column.radio) #define RC_RadioAlwaysOne(m) \ (((XmRowColumnWidget)(m))->row_column.radio_one) #define RC_PopupPosted(m) \ (((XmRowColumnWidget)(m))->row_column.popupPosted) #define RC_ResizeHeight(m) \ (((XmRowColumnWidget)(m))->row_column.resize_height) #define RC_ResizeWidth(m) \ (((XmRowColumnWidget)(m))->row_column.resize_width) #define RC_Type(m) \ (((XmRowColumnWidget)(m))->row_column.type) #define RC_EntryClass(m) \ (((XmRowColumnWidget)(m))->row_column.entry_class) #define RC_IsHomogeneous(m) \ (((XmRowColumnWidget)(m))->row_column.homogeneous) #define RC_Boxes(m) \ (((XmRowColumnWidget)(m))->row_column.boxes) #define RC_PopupEnabled(m) \ (((XmRowColumnWidget)(m))->row_column.popup_enabled) #define RC_MenuAccelerator(m) \ (((XmRowColumnWidget)(m))->row_column.menu_accelerator) #define RC_Mnemonic(m) \ (((XmRowColumnWidget)(m))->row_column.mnemonic) #define RC_MnemonicCharSet(m) \ (((XmRowColumnWidget)(m))->row_column.mnemonicCharSet) #define RC_MenuPost(m) \ (((XmRowColumnWidget)(m))->row_column.menuPost) #define RC_PostModifiers(m) \ (((XmRowColumnWidget)(m))->row_column.postModifiers) #define RC_PostButton(m) \ (((XmRowColumnWidget)(m))->row_column.postButton) #define RC_PostEventType(m) \ (((XmRowColumnWidget)(m))->row_column.postEventType) #define RC_OldFocusPolicy(m) \ (((XmRowColumnWidget)(m))->row_column.oldFocusPolicy) #define RC_ParentShell(w) \ (((XmRowColumnWidget)(w))->row_column.ParentShell) #define RC_TearOffLastSelectToplevel(w) \ (((XmRowColumnWidget)(w))->row_column.tear_off_lastSelectToplevel) #define RC_TearOffFocusItem(w) \ (((XmRowColumnWidget)(w))->row_column.tear_off_focus_item) #define RC_TearOffControl(m) \ (((XmRowColumnWidget)(m))->row_column.tear_off_control) #define RC_TearOffModel(m) \ (((XmRowColumnWidget)(m))->row_column.TearOffModel) #define XmTO_TORN_OFF_BIT (1 << 0) #define XmTO_FROM_INIT_BIT (1 << 1) #define XmTO_VISUAL_DIRTY_BIT (1 << 2) #define XmTO_ACTIVE_BIT (1 << 3) #define RC_SetTornOff(m,v) \ RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_TORN_OFF_BIT,v) #define RC_TornOff(m) \ (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_TORN_OFF_BIT) #define RC_SetFromInit(m,v) \ RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_FROM_INIT_BIT,v) #define RC_FromInit(m) \ (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_FROM_INIT_BIT) #define RC_SetTearOffDirty(m,v) \ RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_VISUAL_DIRTY_BIT,v) #define RC_TearOffDirty(m) \ (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_VISUAL_DIRTY_BIT) #define RC_TearOffActive(m) \ (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_ACTIVE_BIT) #define RC_SetTearOffActive(m,v) \ RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_ACTIVE_BIT,v) /* * for _XmProcessMenuTree() * Don't use an enum as this will conflict with one for render tables * in Xm.h. */ #define XmADD 0 #define XmDELETE 1 #define XmREPLACE 2 /* * Defines used when calling _XmMenuIsAccessible() */ enum { XmWEAK_CHECK = 1, XmMEDIUM_CHECK, XmSTRONG_CHECK }; enum { XmMENU_BEGIN, XmMENU_MIDDLE, XmMENU_END }; /* * Defines used when calling find_first_managed_child() */ enum { ANY_CHILD, FIRST_BUTTON }; void _LtRCEntryCallback(Widget w, XtCallbackList cb_list, XtPointer cbs); void _XmPostPopupMenu(Widget wid, XEvent *event); void _XmSetPopupMenuClick(Widget wid, Boolean popupMenuClick); Boolean _XmGetPopupMenuClick(Widget wid); void _XmAllowAcceleratedInsensitiveUnmanagedMenuItems(Widget wid, Boolean allowed); void _XmSetSwallowEventHandler(Widget widget, Boolean add_handler); void _XmMenuFocus(Widget w, int operation, Time _time); void _XmGetActiveTopLevelMenu(Widget wid, Widget *rwid); Boolean _XmMatchBSelectEvent(Widget wid, XEvent *event); Boolean _XmMatchBDragEvent(Widget wid, XEvent *event); void _XmHandleMenuButtonPress(Widget wid, XEvent *event); void _XmMenuBtnDown(Widget wid, XEvent *event, String *params, Cardinal *num_params); void _XmMenuBtnUp(Widget wid, XEvent *event, String *params, Cardinal *num_params); void _XmCallRowColumnMapCallback(Widget wid, XEvent *event); void _XmCallRowColumnUnmapCallback(Widget wid, XEvent *event); void _XmMenuPopDown(Widget w, XEvent *event, Boolean *popped_up); Boolean _XmIsActiveTearOff(Widget w); void _XmMenuHelp(Widget wid, XEvent *event, String *params, Cardinal *num_params); Widget _XmMenuNextItem(Widget menu, Widget current_item); #ifdef __cplusplus } #endif #endif /* _XM_ROWCOLUMN_P_H */