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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, 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;
life easier?
*/
{
- int x, y, w, h;
+ unsigned int x, y, w, h;
Widget topmost = instance->parent;
+ Arg args[2];
+
w = shell->core.width;
h = shell->core.height;
while (topmost->core.parent && XtIsRealized (topmost->core.parent))
else x = topmost->core.x + ((topmost->core.width - w) / 2);
if (topmost->core.height < h) y = topmost->core.y;
else y = topmost->core.y + ((topmost->core.height - h) / 2);
- XtMoveWidget (shell, x, y);
+ /* Using XtMoveWidget caused the widget to come
+ out in the wrong place with vtwm.
+ Question of virtual vs real coords, perhaps. */
+ XtSetArg (args[0], XtNx, x);
+ XtSetArg (args[1], XtNy, y);
+ XtSetValues (shell, args, 2);
}
/* Finally, pop it up. */
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
XtPointer call_data;
{
LWLIB_ID id;
+ Cardinal nkids;
+ int i;
Widget *kids = 0;
Widget widget;
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
}
+static Widget
+xaw_create_main (instance)
+ widget_instance *instance;
+{
+ Arg al[1];
+ int ac;
+
+ /* Create a vertical Paned to hold menubar */
+ ac = 0;
+ XtSetArg (al[ac], XtNborderWidth, 0); ac++;
+ return XtCreateWidget (instance->info->name, panedWidgetClass,
+ instance->parent, al, ac);
+}
+
widget_creation_entry
xaw_creation_table [] =
{
{"scrollbar", xaw_create_scrollbar},
+ {"main", xaw_create_main},
{NULL, NULL}
};