Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
f25d58a4
Commit
f25d58a4
authored
Mar 13, 2001
by
Gerd Moellmann
Browse files
(make_menu_in_widget): Add an XmNpopdownCallback
instead of an XmNunmapCallback. (xm_unmap_callback): Removed.
parent
2756b446
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
40 deletions
+24
-40
lwlib/ChangeLog
lwlib/ChangeLog
+5
-1
lwlib/lwlib-Xm.c
lwlib/lwlib-Xm.c
+19
-39
No files found.
lwlib/ChangeLog
View file @
f25d58a4
2001-03-13 Gerd Moellmann <gerd@gnu.org>
* lwlib-Xm.c (make_menubar): Take out code in #if 0.
* lwlib-Xm.c (make_menu_in_widget): Add an XmNpopdownCallback
instead of an XmNunmapCallback.
(xm_unmap_callback): Removed.
* lwlib-Xm.c (make_menubar): Take out code in #if 0.
* lwlib-Xm.c (xm_popup_menu): Don't set XmNmenuPost unless
necessary. From Rick Scott <rwscott@alumni.uwaterloo.ca>.
...
...
lwlib/lwlib-Xm.c
View file @
f25d58a4
...
...
@@ -125,7 +125,6 @@ static void xm_generic_callback P_ ((Widget, XtPointer, XtPointer));
static void xm_nosel_callback P_ ((Widget, XtPointer, XtPointer));
static void xm_pull_down_callback P_ ((Widget, XtPointer, XtPointer));
static void xm_pop_down_callback P_ ((Widget, XtPointer, XtPointer));
static void xm_unmap_callback P_ ((Widget, XtPointer, XtPointer));
void xm_set_keyboard_focus P_ ((Widget, Widget));
void xm_set_main_areas P_ ((Widget, Widget, Widget));
static void xm_internal_update_other_instances P_ ((Widget, XtPointer,
...
...
@@ -509,18 +508,11 @@ make_menu_in_widget (instance, widget, val, keep_first_children)
abort ();
menubar_p = type == XmMENU_BAR;
#if 0 /* This can't be used in LessTif as of 2000-01-24 because it's
impossible to decide from this plus the cascading callback if a
popup is still posted or not. When selecting cascade button A,
then B, then clicking on the frame, the sequence of callbacks is
`cascading A', cascading B', `popdown for all cascade buttons in
the menu bar. */
/* Add a callback to popups and pulldowns that is called when
it is made invisible again. */
if (!menubar_p)
XtAddCallback (XtParent (widget), XmNpopdownCallback,
xm_pop_down_callback, (XtPointer)instance);
#endif
/* Preserve the first KEEP_FIRST_CHILDREN old children. */
for (child_index = 0, cur = val; child_index < keep_first_children;
...
...
@@ -597,12 +589,6 @@ make_menu_in_widget (instance, widget, val, keep_first_children)
{
menu = XmCreatePulldownMenu (widget, cur->name, NULL, 0);
/* XmNpopdownCallback is working strangely under LessTif.
Using XmNunmapCallback is the only way to go there. */
if (menubar_p)
XtAddCallback (menu, XmNunmapCallback, xm_unmap_callback,
(XtPointer) instance);
make_menu_in_widget (instance, menu, cur->contents, 0);
XtSetArg (al[ac], XmNsubMenuId, menu); ac++;
button = XmCreateCascadeButton (widget, cur->name, al, ac);
...
...
@@ -1813,24 +1799,29 @@ do_call (widget, closure, type)
user_data = NULL;
XtSetArg (al [ac], XmNuserData, &user_data); ac++;
XtGetValues (widget, al, ac);
switch (type)
{
case pre_activate:
if (instance->info->pre_activate_cb)
instance->info->pre_activate_cb (widget, id, user_data);
break;
case selection:
if (instance->info->selection_cb)
instance->info->selection_cb (widget, id, user_data);
break;
case no_selection:
if (instance->info->selection_cb)
instance->info->selection_cb (widget, id, (XtPointer) -1);
break;
case post_activate:
if (instance->info->post_activate_cb)
instance->info->post_activate_cb (widget, id, user_data);
break;
default:
abort ();
}
...
...
@@ -1872,14 +1863,14 @@ xm_nosel_callback (widget, closure, call_data)
XtPointer closure;
XtPointer call_data;
{
/* This callback is only called when a dialog box is dismissed with
the wm's
destroy button (WM_DELETE_WINDOW.) We want the dialog
box to be destroyed
in that case, not just unmapped, so that it
releases its keyboard grabs.
But there are problems with running
our callbacks while the widget is in
the process of being destroyed, so we set XmNdeleteResponse to XmUNMAP
instead of XmDESTROY and then destroy it ourself after having run the
callback.
*/
/* This callback is only called when a dialog box is dismissed with
the wm's
destroy button (WM_DELETE_WINDOW.) We want the dialog
box to be destroyed
in that case, not just unmapped, so that it
releases its keyboard grabs.
But there are problems with running
our callbacks while the widget is in the process of being
destroyed, so we set XmNdeleteResponse to XmUNMAP instead of
XmDESTROY and then destroy it ourself after having run the
callback.
*/
do_call (widget, closure, no_selection);
XtDestroyWidget (widget);
}
...
...
@@ -1903,11 +1894,10 @@ xm_pull_down_callback (widget, closure, call_data)
/* XmNpopdownCallback for MenuShell widgets. WIDGET is the MenuShell,
CLOSURE is a pointer to the widget_instance of the shell, CALL_DATA
is always null under LessTif.
CLOSURE is a pointer to the widget_instance of the shell,
2000-01-23: T
his callback is called for each cascade button in
a
menu, whether or not its submenu is visible. */
Note that t
his callback is called for each cascade button in
a
menu, whether or not its submenu is visible. */
static void
xm_pop_down_callback (widget, closure, call_data)
...
...
@@ -1916,20 +1906,10 @@ xm_pop_down_callback (widget, closure, call_data)
XtPointer call_data;
{
widget_instance *instance = (widget_instance *) closure;
fprintf (stderr, "%p\n", call_data);
if ((!instance->pop_up_p && (XtParent (widget) == instance->widget))
|| (XtParent (widget) == instance->parent))
do_call (widget, closure, post_activate);
}
static void
xm_unmap_callback (widget, closure, call_data)
Widget widget;
XtPointer closure;
XtPointer call_data;
{
widget_instance *instance = (widget_instance *) closure;
if (!instance->pop_up_p)
if ((!instance->pop_up_p && XtParent (widget) == instance->widget)
|| XtParent (widget) == instance->parent)
do_call (widget, closure, post_activate);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment