#include <X11/Shell.h>
#ifdef LWLIB_SCROLLBARS_ATHENA
-#include <X11/Xaw/Scrollbar.h>
+#include ATHENA_Scrollbar_h_
#endif
#ifdef LWLIB_DIALOGS_ATHENA
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/Command.h>
-#include <X11/Xaw/Label.h>
+#include ATHENA_Dialog_h_
+#include ATHENA_Form_h_
+#include ATHENA_Command_h_
+#include ATHENA_Label_h_
#endif
#ifdef LWLIB_WIDGETS_ATHENA
-#include <X11/Xaw/Toggle.h>
+#include ATHENA_Toggle_h_
#include "xlwradio.h"
#include "xlwcheckbox.h"
#include "xlwgauge.h"
#ifndef NEED_MOTIF
-#include <X11/Xaw/AsciiText.h>
+#include ATHENA_AsciiText_h_
#endif
#endif
#include <X11/Xatom.h>
|| XtIsSubclass (widget, labelWidgetClass)
|| XtIsSubclass (widget, toggleWidgetClass)
|| XtIsSubclass (widget, gaugeWidgetClass)
-#if 0
- || XtIsSubclass (widget, textWidgetClass)
+#ifndef NEED_MOTIF
+ || XtIsSubclass (widget, asciiTextWidgetClass)
#endif
#endif
);
xaw_update_one_widget (widget_instance *instance, Widget widget,
widget_value *val, Boolean deep_p)
{
- if (val->nargs)
- XtSetValues (widget, val->args, val->nargs);
-
if (0)
;
#ifdef LWLIB_SCROLLBARS_ATHENA
xaw_update_scrollbar (instance, widget, val);
}
#endif
+#ifdef LWLIB_WIDGETS_ATHENA
+#ifndef NEED_MOTIF
+ else if (XtIsSubclass (widget, asciiTextWidgetClass))
+ {
+ }
+#endif
+#endif
#ifdef LWLIB_DIALOGS_ATHENA
else if (XtIsSubclass (widget, dialogWidgetClass))
{
}
#endif /* ! LWLIB_DIALOGS_ATHENA3D */
+ lw_remove_accelerator_spec (val->value);
XtSetArg (al [0], XtNlabel, val->value);
XtSetArg (al [1], XtNsensitive, val->enabled);
/* Force centered button text. See above. */
#endif /* LWLIB_WIDGETS_ATHENA */
}
#endif /* LWLIB_DIALOGS_ATHENA */
+ /* Lastly update our global arg values. */
+ if (val->args && val->args->nargs)
+ XtSetValues (widget, val->args->args, val->args->nargs);
}
void
#ifndef NEED_MOTIF
else if (XtIsSubclass (widget, asciiTextWidgetClass))
{
- Arg al [1];
- if (val->value)
- free (val->value);
- XtSetArg (al [0], XtNstring, &val->value);
+ Arg al [2];
+ String buf = 0;
+ XtSetArg (al [0], XtNstring, &buf);
XtGetValues (widget, al, 1);
+
+ if (val->value)
+ {
+ free (val->value);
+ val->value = 0;
+ }
+ /* I don't think this causes a leak. */
+ if (buf)
+ val->value = strdup (buf);
val->edited = True;
}
#endif
static Boolean actions_initted = False;
static Widget
-make_dialog (CONST char* name, Widget parent, Boolean pop_up_p,
- CONST char* shell_title, CONST char* icon_name,
+make_dialog (const char* name, Widget parent, Boolean pop_up_p,
+ const char* shell_title, const char* icon_name,
Boolean text_input_slot,
Boolean radio_box, Boolean list,
int left_buttons, int right_buttons)
Widget parent = instance->parent;
Widget widget;
Boolean pop_up_p = instance->pop_up_p;
- CONST char *shell_name = 0;
- CONST char *icon_name = 0;
+ const char *shell_name = 0;
+ const char *icon_name = 0;
Boolean text_input_slot = False;
Boolean radio_box = False;
Boolean list = False;
/* Do it again for arguments that have no effect until the widget is realized. */
ac = 0;
lw_add_value_args_to_args (val, al, &ac);
+ if (ac > 20)
+ abort (); /* #### need assert macro in lwlib */
XtSetValues (label, al, ac);
return label;
int ac = 0;
Widget scale = 0;
widget_value* val = instance->info->val;
-
+#if 0 /* This looks too awful, although more correct. */
if (!val->call_data)
{
XtSetArg (al [ac], XtNsensitive, False); ac++;
{
XtSetArg (al [ac], XtNsensitive, val->enabled); ac++;
}
+#else
+ XtSetArg (al [ac], XtNsensitive, True); ac++;
+#endif
+
XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++;
XtSetArg (al [ac], XtNorientation, XtorientHorizontal); ac++;
XtSetArg (al [ac], XtNhighlightThickness, (Dimension)0);ac++;
}
#ifndef NEED_MOTIF
+#define TEXT_BUFFER_SIZE 128
static Widget
xaw_create_text_field (widget_instance *instance)
{
Widget text = 0;
widget_value* val = instance->info->val;
- XtSetArg (al [ac], XtNsensitive, val->enabled && val->call_data); ac++;
+ XtSetArg (al [ac], XtNsensitive, val->enabled); ac++;
XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++;
XtSetArg (al [ac], XtNhighlightThickness, (Dimension)0); ac++;
XtSetArg (al [ac], XtNtype, XawAsciiString); ac++;
XtSetArg (al [ac], XtNeditType, XawtextEdit); ac++;
+ XtSetArg (al [ac], XtNuseStringInPlace, False); ac++;
+#if 0
+ XtSetArg (al [ac], XtNlength, TEXT_BUFFER_SIZE); ac++;
+#endif
+ if (val->value)
+ {
+ XtSetArg (al [ac], XtNstring, val->value); ac++;
+ }
/* add any args the user supplied for creation time */
lw_add_value_args_to_args (val, al, &ac);
text = XtCreateManagedWidget (val->name, asciiTextWidgetClass,
instance->parent, al, ac);
+
+ /* add the callback */
+ if (val->call_data)
+ XtAddCallback (text, XtNgetValue, xaw_generic_callback, (XtPointer)instance);
+
XtManageChild (text);
return text;
}
#endif
+
#endif /* LWLIB_WIDGETS_ATHENA */
-widget_creation_entry
+const widget_creation_entry
xaw_creation_table [] =
{
#ifdef LWLIB_SCROLLBARS_ATHENA