This file is part of the Lucid Widget Library.
-The Lucid Widget Library is free software; you can redistribute it and/or
+The Lucid Widget Library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
The Lucid Widget Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
+but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
#include <stdio.h>
+#include "../src/lisp.h"
+
#include "lwlib-Xaw.h"
#include <X11/StringDefs.h>
XtIsSubclass (widget, dialogWidgetClass));
}
+#if 0
static void
xaw_update_scrollbar (instance, widget, val)
widget_instance *instance;
Widget widget;
widget_value *val;
{
-#if 0
if (val->scrollbar_data)
{
scrollbar_values *data = val->scrollbar_data;
XtNy, &pos_y,
XtNtopOfThumb, &widget_topOfThumb,
XtNshown, &widget_shown,
- 0);
+ NULL);
/*
* First size and position the scrollbar widget.
XtVaSetValues (widget,
XtNlength, data->scrollbar_height,
XtNthickness, width,
- 0);
+ NULL);
}
/*
if (new_shown != widget_shown || new_topOfThumb != widget_topOfThumb)
XawScrollbarSetThumb (widget, new_topOfThumb, new_shown);
}
-#endif
}
+#endif
void
+#ifdef PROTOTYPES
+xaw_update_one_widget (widget_instance *instance, Widget widget,
+ widget_value *val, Boolean deep_p)
+#else
xaw_update_one_widget (instance, widget, val, deep_p)
widget_instance *instance;
Widget widget;
widget_value *val;
Boolean deep_p;
+#endif
{
#if 0
if (XtIsSubclass (widget, scrollbarWidgetClass))
Dimension bw = 0;
Arg al[3];
- XtVaGetValues (widget, XtNborderWidth, &bw, 0);
+ XtVaGetValues (widget, XtNborderWidth, &bw, NULL);
if (bw == 0)
/* Don't let buttons end up with 0 borderwidth, that's ugly...
Yeah, all this should really be done through app-defaults files
XtSetValues (widget, al, 1);
}
+ XtSetSensitive (widget, val->enabled);
XtSetArg (al[0], XtNlabel, val->value);
- XtSetArg (al[1], XtNsensitive, val->enabled);
/* Force centered button text. Se above. */
- XtSetArg (al[2], XtNjustify, XtJustifyCenter);
- XtSetValues (widget, al, 3);
+ XtSetArg (al[1], XtNjustify, XtJustifyCenter);
+ XtSetValues (widget, al, 2);
XtRemoveAllCallbacks (widget, XtNcallback);
XtAddCallback (widget, XtNcallback, xaw_generic_callback, instance);
}
}
void
-xaw_popup_menu (widget)
+xaw_popup_menu (widget, event)
Widget widget;
+ XEvent *event;
{
/* An Athena menubar has not been implemented. */
return;
}
void
+#ifdef PROTOTYPES
+xaw_pop_instance (widget_instance *instance, Boolean up)
+#else
xaw_pop_instance (instance, up)
widget_instance *instance;
Boolean up;
+#endif
{
Widget widget = instance->widget;
static char overrideTrans[] =
"<Message>WM_PROTOCOLS: lwlib_delete_dialog()";
+/* Dialogs pop down on any key press */
+static char dialogOverride[] =
+ "<KeyPress>Escape: lwlib_delete_dialog()";
static void wm_delete_window();
static XtActionsRec xaw_actions [] = {
{"lwlib_delete_dialog", wm_delete_window}
ac = 0;
dialog = XtCreateManagedWidget (name, dialogWidgetClass, shell, av, ac);
+ override = XtParseTranslationTable (dialogOverride);
+ XtOverrideTranslations (dialog, override);
bc = 0;
button = 0;
I want the separator to take up the slack between the buttons on
the right and the buttons on the left (that is I want the buttons
after the separator to be packed against the right edge of the
- window) but I can't seem to make it do it.
+ window) but I can't seem to make it do it.
*/
ac = 0;
XtSetArg (av [ac], XtNfromHoriz, button); ac++;
Widget widget;
Boolean pop_up_p = instance->pop_up_p;
char *shell_name = 0;
- char *icon_name;
+ char *icon_name = 0;
Boolean text_input_slot = False;
Boolean radio_box = False;
Boolean list = False;
shell_name = "Question";
break;
}
-
+
total_buttons = name [1] - '0';
if (name [3] == 'T' || name [3] == 't')
}
else if (name [3])
right_buttons = name [4] - '0';
-
+
left_buttons = total_buttons - right_buttons;
-
+
widget = make_dialog (name, parent, pop_up_p,
shell_name, icon_name, text_input_slot, radio_box,
list, left_buttons, right_buttons);
#if 0
user_data = NULL;
- XtVaGetValues (widget, XtNuserData, &user_data, 0);
+ XtVaGetValues (widget, XtNuserData, &user_data, NULL);
#else
/* Damn! Athena doesn't give us a way to hang our own data on the
buttons, so we have to go find it... I guess this assumes that
}
static void
-wm_delete_window (shell, closure, call_data)
- Widget shell;
+wm_delete_window (w, closure, call_data)
+ Widget w;
XtPointer closure;
XtPointer call_data;
{
LWLIB_ID id;
+ Cardinal nkids;
+ int i;
Widget *kids = 0;
- Widget widget;
+ Widget widget, shell;
+
+ if (XtIsSubclass (w, dialogWidgetClass))
+ shell = XtParent (w);
+ else
+ shell = w;
+
if (! XtIsSubclass (shell, shellWidgetClass))
abort ();
- XtVaGetValues (shell, XtNchildren, &kids, 0);
+ XtVaGetValues (shell, XtNnumChildren, &nkids, NULL);
+ XtVaGetValues (shell, XtNchildren, &kids, NULL);
if (!kids || !*kids)
abort ();
- widget = kids [0];
- if (! XtIsSubclass (widget, dialogWidgetClass))
- abort ();
+ for (i = 0; i < nkids; i++)
+ {
+ widget = kids[i];
+ if (XtIsSubclass (widget, dialogWidgetClass))
+ break;
+ }
id = lw_get_widget_id (widget);
if (! id) abort ();
\f
/* Scrollbars */
+#if 0
static void
xaw_scrollbar_scroll (widget, closure, call_data)
Widget widget;
XtPointer closure;
XtPointer call_data;
{
-#if 0
widget_instance *instance = (widget_instance *) closure;
LWLIB_ID id;
scroll_event event_data;
if (instance->info->pre_activate_cb)
instance->info->pre_activate_cb (widget, id, (XtPointer) &event_data);
-#endif
}
+#endif
+#if 0
static void
xaw_scrollbar_jump (widget, closure, call_data)
Widget widget;
XtPointer closure;
XtPointer call_data;
{
-#if 0
widget_instance *instance = (widget_instance *) closure;
LWLIB_ID id;
scroll_event event_data;
if (instance->info->pre_activate_cb)
instance->info->pre_activate_cb (widget, id, (XtPointer) &event_data);
-#endif
}
+#endif
static Widget
xaw_create_scrollbar (instance)
Dimension width;
Widget scrollbar;
- XtVaGetValues (instance->parent, XtNwidth, &width, 0);
-
+ XtVaGetValues (instance->parent, XtNwidth, &width, NULL);
+
XtSetArg (av[ac], XtNshowGrip, 0); ac++;
XtSetArg (av[ac], XtNresizeToPreferred, 1); ac++;
XtSetArg (av[ac], XtNallowResize, True); ac++;
/* We have to force the border width to be 0 otherwise the
geometry manager likes to start looping for awhile... */
- XtVaSetValues (scrollbar, XtNborderWidth, 0, 0);
+ XtVaSetValues (scrollbar, XtNborderWidth, 0, NULL);
XtRemoveAllCallbacks (scrollbar, "jumpProc");
XtRemoveAllCallbacks (scrollbar, "scrollProc");
(XtPointer) instance);
return scrollbar;
+#else
+ return NULL;
#endif
}
{"main", xaw_create_main},
{NULL, NULL}
};
+
+/* arch-tag: fbbd3589-ae1c-41a0-9142-f628cfee6564
+ (do not change this comment) */