void XtManageChildren( WidgetList children, Cardinal num_children) { Widget parent, hookobj; #ifdef XTHREADS XtAppContext app; #endif if (num_children == 0) return; if (children[0] == NULL) { XtWarningMsg(XtNinvalidChild, XtNxtManageChildren, XtCXtToolkitError, "null child passed to XtManageChildren", (String*)NULL, (Cardinal*)NULL); return; } #ifdef XTHREADS app = XtWidgetToApplicationContext(children[0]); #endif LOCK_APP(app); parent = children[0]->core.parent; if (parent->core.being_destroyed) { UNLOCK_APP(app); return; } ManageChildren(children, num_children, parent, (Boolean)False, XtNxtManageChildren); hookobj = XtHooksOfDisplay(XtDisplayOfObject(children[0])); if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) { XtChangeHookDataRec call_data; call_data.type = XtHmanageChildren; call_data.widget = parent; call_data.event_data = (XtPointer) children; call_data.num_event_data = num_children; XtCallCallbackList(hookobj, ((HookObject)hookobj)->hooks.changehook_callbacks, (XtPointer)&call_data); } UNLOCK_APP(app); } /* XtManageChildren */
/* ** Functions to build and popup the postup reminder */ extern void postup_show_proc(Calendar *c, CSA_reminder_reference *r) { int start_hr, stop_hr; char text[BUFSIZ]; time_t st, sp = 0; Lines *lines, *l = NULL; Props *p = (Props *)c->properties; Widget pu_frame, pu_base_form, pu_text_form, separator, pu_form, button_form, pu_date, pu_range, pu_image, pu_close, line, last_line; Boolean start_am, stop_am; XmString xmstr; CSA_return_code stat; DisplayType dis_t = get_int_prop(p, CP_DEFAULTDISP); OrderingType ord_t = get_int_prop(p, CP_DATEORDERING); SeparatorType sep_t = get_int_prop(p, CP_DATESEPARATOR); Dtcm_appointment *appt; char *title; if (!c->postup) c->postup = XtAppCreateShell("calendar_postup", "Dtcm", xmDialogShellWidgetClass, c->xcontext->display, NULL, 0); /* ** Create the Motif objects */ title = XtNewString(catgets(c->DT_catd, 1, 839, "Calendar : Reminder")); pu_frame = XtVaCreatePopupShell("pu_frame", topLevelShellWidgetClass, c->postup, XmNtitle, title, XmNmwmFunctions, MWM_FUNC_MOVE | MWM_FUNC_CLOSE, XmNdeleteResponse, XmDESTROY, NULL); XtFree(title); pu_base_form = XtVaCreateWidget("pu_base_form", xmFormWidgetClass, pu_frame, NULL); pu_text_form = XtVaCreateWidget("pu_test_form", xmFormWidgetClass, pu_base_form, XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNleftOffset, 1, XmNrightOffset, 1, XmNtopOffset, 1, NULL); pu_image = XtVaCreateWidget("pu_image", xmLabelGadgetClass, pu_text_form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNlabelType, XmPIXMAP, XmNlabelPixmap, ((Props_pu *)c->properties_pu)->postup_pixmap, NULL); button_form = XtVaCreateWidget("pu_form", xmFormWidgetClass, pu_base_form, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 2, XmNleftOffset, 1, XmNrightOffset, 1, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNfractionBase, 3, NULL); xmstr = XmStringCreateLocalized(catgets(c->DT_catd, 1, 680, "Close")); pu_close = XtVaCreateManagedWidget("close", xmPushButtonWidgetClass, button_form, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_POSITION, XmNrightAttachment, XmATTACH_POSITION, XmNleftPosition, 1, XmNrightPosition, 2, XmNbottomOffset, 1, XmNlabelString, xmstr, NULL); XmStringFree(xmstr); separator = XtVaCreateWidget("separator", xmSeparatorGadgetClass, pu_base_form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, button_form, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, pu_text_form, XmNtopOffset, 1, NULL); pu_form = XtVaCreateWidget("pu_form", xmFormWidgetClass, pu_text_form, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 1, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, pu_image, XmNverticalSpacing, 10, NULL); pu_date = XtVaCreateWidget("pu_date", xmLabelGadgetClass, pu_form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, NULL); pu_range = XtVaCreateWidget("pu_range", xmLabelGadgetClass, pu_form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, pu_date, XmNtopOffset, 8, NULL); XtAddCallback(pu_close, XmNactivateCallback, close_cb, pu_frame); appt = allocate_appt_struct(appt_read, c->general->version, CSA_ENTRY_ATTR_START_DATE_I, CSA_ENTRY_ATTR_END_DATE_I, CSA_ENTRY_ATTR_SUMMARY_I, CSA_X_DT_ENTRY_ATTR_SHOWTIME_I, NULL); stat = query_appt_struct(c->cal_handle, r->entry, appt); backend_err_msg(c->frame, c->calname, stat, ((Props_pu *)c->properties_pu)->xm_error_pixmap); if (stat != CSA_SUCCESS) { free_appt_struct(&appt); return; } _csa_iso8601_to_tick(appt->time->value->item.date_time_value, &st); if (appt->end_time) _csa_iso8601_to_tick(appt->end_time->value->\ item.date_time_value, &sp); l = lines = text_to_lines(appt->what->value->item.string_value, 5); last_line = 0; while (l) { xmstr = XmStringCreateLocalized(l->s); line = XtVaCreateWidget("text_line", xmLabelGadgetClass, pu_text_form, XmNlabelString, xmstr, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, pu_form, XmNleftOffset, 15, NULL); XmStringFree(xmstr); if (last_line) XtVaSetValues(line, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, last_line, XmNtopOffset, 8, NULL); else XtVaSetValues(line, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 8, NULL); last_line = line; l = l->next; } if (lines) destroy_lines(lines); /* ** Now fill in the correct information */ set_date_in_widget(st, pu_date, ord_t, sep_t); if (!showtime_set(appt) || magic_time(st)) text[0] = '\0'; else { start_hr = hour(st); if (sp) stop_hr = hour(sp); if (dis_t == HOUR12) { start_am = adjust_hour(&start_hr); if (sp) { /* NL_COMMENT Message 1087 : This message is used to form the alarm string that appears in the reminder popup. In the C locale it would look something like this: ``From 11:00am to 1:00pm'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute $3 -> am or pm $4 -> stop hour $5 -> stop minute $6 -> am or pm */ char *am = XtNewString(catgets(c->DT_catd, 1, 4, "am")); char *pm = XtNewString(catgets(c->DT_catd, 1, 3, "pm")); stop_am = adjust_hour(&stop_hr); sprintf(text, catgets(c->DT_catd, 1, 1087, "From %1$2d:%2$02d%3$s to %4$2d:%5$02d%6$s"), start_hr, minute(st), (start_am) ? am : pm, stop_hr, minute(sp), (stop_am) ? am : pm ); XtFree(am); XtFree(pm); } else { /* NL_COMMENT Message 1088 : This message is used to form the alarm string that appears in the reminder popup. It is used when an appt does not have and ``end'' time. In the C locale it would look something like this: ``11:00am'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute $3 -> am or pm */ char *meridian = XtNewString ((start_am) ? catgets(c->DT_catd, 1, 4, "am"): catgets(c->DT_catd, 1, 3, "pm")); sprintf(text, catgets(c->DT_catd, 1, 1088, "%1$2d:%2$02d%3$s"), start_hr, minute(st), meridian ); XtFree(meridian); } } else { if (sp) { /* NL_COMMENT Message 1089 : This message is used to form the alarm string that appears in the reminder popup. This string is used when a user has asked that times be displayed in 24 hour format. In the C locale it would look something like this: ``From 0100 to 1600'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute $3 -> stop hour $4 -> stop minute */ sprintf(text, catgets(c->DT_catd, 1, 1089, "From %1$02d%2$02d to %3$02d%4$02d"), start_hr, minute(st), stop_hr, minute(sp)); } else { /* NL_COMMENT Message 1090 : This message is used to form the alarm string that appears in the reminder popup. This string is used when an appt does not have an end time and the user has asked that times be displayed in 24 hour format. In the C locale it would look something like this: ``1600'' In the printf conversion string the $n are: $1 -> start hour $2 -> start minute */ sprintf(text, catgets(c->DT_catd, 1, 1090, "%1$02d%2$02d"), start_hr, minute(st)); } } } free_appt_struct(&appt); xmstr = XmStringCreateLocalized(text); XtVaSetValues(pu_range, XmNlabelString, xmstr, NULL); XmStringFree(xmstr); ManageChildren(pu_form); ManageChildren(pu_base_form); ManageChildren(pu_text_form); XtManageChild(pu_base_form); XtVaSetValues(button_form, XmNdefaultButton, pu_close, NULL); XtVaSetValues(button_form, XmNcancelButton, pu_close, NULL); XtPopup(pu_frame, XtGrabNone); DtWsmOccupyAllWorkspaces(c->xcontext->display, XtWindow(pu_frame)); }
extern void make_browselist(Calendar *c) { int ac; Arg args[15]; XmString label_str; Widget separator, button_form; Browselist *bl = (Browselist *)c->browselist; Dimension label_width; char *title; if (!bl) return; title = XtNewString(catgets(c->DT_catd, 1, 963, "Calendar : Menu Editor")); bl->frame = XtVaCreatePopupShell("menu_editor_frame", xmDialogShellWidgetClass, c->frame, XmNdeleteResponse, XmDO_NOTHING, XmNtitle, title, XmNallowShellResize, True, XmNmappedWhenManaged, False, NULL); setup_quit_handler(bl->frame, blist_quit_handler, (caddr_t)bl); XtFree(title); bl->form = XtVaCreateWidget("menu_editor_form", xmFormWidgetClass, bl->frame, XmNautoUnmanage, False, XmNfractionBase, 5, NULL); label_str = XmStringCreateLocalized( catgets(c->DT_catd, 1, 410, "User Name:")); bl->username_label = XtVaCreateWidget("name_label", xmLabelGadgetClass, bl->form, XmNlabelString, label_str, NULL); XmStringFree(label_str); ac = 0; XtSetArg(args[ac], XmNorientation, XmVERTICAL); ++ac; XtSetArg(args[ac], XmNpacking, XmPACK_COLUMN); ++ac; XtSetArg(args[ac], XmNtopAttachment, XmATTACH_FORM); ++ac; XtSetArg(args[ac], XmNtopOffset, 6); ++ac; XtSetArg(args[ac], XmNrightAttachment, XmATTACH_FORM); ++ac; XtSetArg(args[ac], XmNrightOffset, 5); ++ac; bl->edit_rc_mgr = XmCreateRowColumn(bl->form, "edit_rc_mgr", args, ac); label_str = XmStringCreateLocalized( catgets(c->DT_catd, 1, 686, "Add Name")); bl->add_button = XtVaCreateWidget("add_button", xmPushButtonWidgetClass, bl->edit_rc_mgr, XmNlabelString, label_str, XmNnavigationType, XmTAB_GROUP, NULL); XmStringFree(label_str); XtAddCallback(bl->add_button, XmNactivateCallback, blist_addname, (XtPointer)c); label_str = XmStringCreateLocalized( catgets(c->DT_catd, 1, 687, "Remove Name")); bl->remove_button = XtVaCreateWidget("remove_button", xmPushButtonWidgetClass, bl->edit_rc_mgr, XmNlabelString, label_str, XmNnavigationType, XmTAB_GROUP, NULL); XmStringFree(label_str); XtAddCallback(bl->remove_button, XmNactivateCallback, blist_removenames, (XtPointer)c); ManageChildren(bl->edit_rc_mgr); XtVaGetValues(bl->username_label, XmNwidth, &label_width, NULL); bl->username = XtVaCreateWidget("username", xmTextFieldWidgetClass, bl->form, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, label_width + 15, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, bl->edit_rc_mgr, XmNrightOffset, 5, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 5, XmNcolumns, 40, NULL); XtAddCallback(bl->username, XmNactivateCallback, blist_addname, (XtPointer)c); XtAddCallback(bl->username, XmNvalueChangedCallback, bl_pending_change, (XtPointer)c); XtVaSetValues(bl->username_label, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, bl->username, XmNbottomOffset, 5, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, bl->username, XmNrightOffset, 5, NULL); label_str = XmStringCreateLocalized( catgets(c->DT_catd, 1, 688, "Browse Menu Items")); bl->list_label = XtVaCreateWidget("list_label", xmLabelWidgetClass, bl->form, XmNlabelString, label_str, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, bl->username, XmNtopOffset, 10, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 5, NULL); XmStringFree(label_str); bl->message = XtVaCreateWidget("message_text", xmLabelGadgetClass, bl->form, XmNalignment, XmALIGNMENT_BEGINNING, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 5, NULL); button_form = XtVaCreateWidget("menu_editor_button_form_mgr", xmFormWidgetClass, bl->form, XmNautoUnmanage, False, XmNfractionBase, 5, XmNhorizontalSpacing, 5, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, bl->message, XmNbottomOffset, 5, NULL); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 655, "OK")); bl->ok_button = XtVaCreateWidget("ok_button", xmPushButtonWidgetClass, button_form, XmNlabelString, label_str, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 0, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 1, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_FORM, NULL); XmStringFree(label_str); XtAddCallback(bl->ok_button, XmNactivateCallback, blist_ok, (XtPointer)c); label_str = XmStringCreateLocalized( catgets(c->DT_catd, 1, 460, "Apply")); bl->apply_button = XtVaCreateWidget("apply_button", xmPushButtonWidgetClass, button_form, XmNlabelString, label_str, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 1, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 2, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_FORM, NULL); XmStringFree(label_str); XtAddCallback(bl->apply_button, XmNactivateCallback, blist_apply, (XtPointer)c); label_str = XmStringCreateLocalized( catgets(c->DT_catd, 1, 691, "Reset")); bl->reset_button = XtVaCreateWidget("reset_button", xmPushButtonWidgetClass, button_form, XmNlabelString, label_str, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 2, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 3, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_FORM, NULL); XmStringFree(label_str); XtAddCallback(bl->reset_button, XmNactivateCallback, blist_reset_cb, (XtPointer)c); label_str = XmStringCreateLocalized( catgets(c->DT_catd, 1, 923, "Cancel")); bl->cancel_button = XtVaCreateWidget("cancel_button", xmPushButtonWidgetClass, button_form, XmNlabelString, label_str, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 3, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 4, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_FORM, NULL); XmStringFree(label_str); XtAddCallback(bl->cancel_button, XmNactivateCallback, blist_cancel_cb, (XtPointer)c); label_str = XmStringCreateLocalized(catgets(c->DT_catd, 1, 77, "Help")); bl->help_button = XtVaCreateWidget("help_button", xmPushButtonWidgetClass, button_form, XmNlabelString, label_str, XmNleftAttachment, XmATTACH_POSITION, XmNleftPosition, 4, XmNleftOffset, 5, XmNrightAttachment, XmATTACH_POSITION, XmNrightPosition, 5, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_FORM, NULL); XmStringFree(label_str); XtAddCallback(bl->help_button, XmNactivateCallback, (XtCallbackProc)help_cb, MENU_EDITOR_HELP_BUTTON); XtAddCallback(bl->form, XmNhelpCallback, (XtCallbackProc)help_cb, (XtPointer) MENU_EDITOR_HELP_BUTTON); ManageChildren(button_form); separator = XtVaCreateWidget("separator", xmSeparatorGadgetClass, bl->form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, button_form, XmNbottomOffset, 5, NULL); ac = 0; XtSetArg(args[ac], XmNvisibleItemCount, 8); ++ac; XtSetArg(args[ac], XmNselectionPolicy, XmMULTIPLE_SELECT); ++ac; XtSetArg(args[ac], XmNdoubleClickInterval, 5); ++ac; bl->browse_list = (Widget)XmCreateScrolledList(bl->form, "browse_list", args, ac); bl->browse_list_sw = XtParent(bl->browse_list); XtVaSetValues(bl->browse_list_sw, XmNvisualPolicy, XmVARIABLE, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, bl->list_label, XmNtopOffset, 5, XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNleftWidget, bl->list_label, XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET, XmNrightWidget, bl->username, XmNrightOffset, 5, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, separator, XmNbottomOffset, 5, XmNwidth, 50, NULL); XtManageChild(bl->browse_list); XtAddCallback(bl->browse_list, XmNmultipleSelectionCallback, bl_list_selection_cb, (XtPointer)c); ManageChildren(bl->form); XtManageChild(bl->form); /* * Set default button */ XtVaSetValues(bl->form, XmNcancelButton, bl->cancel_button, NULL); XmProcessTraversal(bl->username, XmTRAVERSE_CURRENT); XtVaSetValues(bl->form, XmNinitialFocus, bl->username, NULL); /* * For storing the list of names */ if (!bl->blist_data) bl->blist_data = CmDataListCreate(); }
static void create_month_panels(Calendar *c) { Day *d = (Day *)c->view->day_info; Arg al[20]; int ac; ac=0; XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++; XtSetArg(al[ac], XmNtopWidget, c->canvas); ac++; XtSetArg(al[ac], XmNrightAttachment, XmATTACH_POSITION); ac++; XtSetArg(al[ac], XmNrightPosition, 40); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNleftOffset, 2); ac++; XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_POSITION); ac++; XtSetArg(al[ac], XmNbottomPosition, 95); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; d->panel_form = XmCreateForm(c->form, "quarter", al, ac); ac=0; XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_POSITION); ac++; XtSetArg(al[ac], XmNbottomPosition, 33); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNmonth, month(previousmonth(c->view->date))); ac++; XtSetArg(al[ac], XmNyear, year(previousmonth(c->view->date))); ac++; d->month_panels[0] = XmCreateMonthPanel(d->panel_form, "lastMonth", al, ac); XtAddCallback(d->month_panels[0], XmNactivateCallback, day_btn_cb, (XtPointer) c); XtAddCallback(d->month_panels[0], XmNhelpCallback, (XtCallbackProc)help_view_cb, NULL); ac=0; XtSetArg(al[ac], XmNtopAttachment, XmATTACH_POSITION); ac++; XtSetArg(al[ac], XmNtopPosition, 33); ac++; XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_POSITION); ac++; XtSetArg(al[ac], XmNbottomPosition, 66); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNmonth, month(c->view->date)); ac++; XtSetArg(al[ac], XmNyear, year(c->view->date)); ac++; d->month_panels[1] = XmCreateMonthPanel(d->panel_form, "thisMonth", al, ac); XtAddCallback(d->month_panels[1], XmNactivateCallback, day_btn_cb, (XtPointer) c); XtAddCallback(d->month_panels[1], XmNhelpCallback, (XtCallbackProc)help_view_cb, NULL); ac=0; XtSetArg(al[ac], XmNtopAttachment, XmATTACH_POSITION); ac++; XtSetArg(al[ac], XmNtopPosition, 66); ac++; XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNmonth, month(nextmonth(c->view->date))); ac++; XtSetArg(al[ac], XmNyear, year(nextmonth(c->view->date))); ac++; d->month_panels[2] = XmCreateMonthPanel(d->panel_form, "nextMonth", al, ac); XtAddCallback(d->month_panels[2], XmNactivateCallback, day_btn_cb, (XtPointer) c); XtAddCallback(d->month_panels[2], XmNhelpCallback, (XtCallbackProc)help_view_cb, NULL); ManageChildren(d->panel_form); }
void XtChangeManagedSet( WidgetList unmanage_children, Cardinal num_unmanage, XtDoChangeProc do_change_proc, XtPointer client_data, WidgetList manage_children, Cardinal num_manage) { WidgetList childp; Widget parent; int i; Cardinal some_unmanaged; Boolean call_out; CompositeClassExtension ext; XtAppContext app; Widget hookobj; XtChangeHookDataRec call_data; if (num_unmanage == 0 && num_manage == 0) return; /* specification doesn't state that library will check for NULL in list */ childp = num_unmanage ? unmanage_children : manage_children; app = XtWidgetToApplicationContext(*childp); LOCK_APP(app); parent = XtParent(*childp); childp = unmanage_children; for (i = num_unmanage; --i >= 0 && XtParent(*childp) == parent; childp++); call_out = (i >= 0); childp = manage_children; for (i = num_manage; --i >= 0 && XtParent(*childp) == parent; childp++); if (call_out || i >= 0) { XtAppWarningMsg(app, "ambiguousParent", XtNxtChangeManagedSet, XtCXtToolkitError, "Not all children have same parent", (String *)NULL, (Cardinal *)NULL); } if (! XtIsComposite(parent)) { UNLOCK_APP(app); XtAppErrorMsg(app, "invalidParent", XtNxtChangeManagedSet, XtCXtToolkitError, "Attempt to manage a child when parent is not Composite", (String *) NULL, (Cardinal *) NULL); } if (parent->core.being_destroyed) { UNLOCK_APP(app); return; } call_out = False; if (do_change_proc) { ext = (CompositeClassExtension) XtGetClassExtension(parent->core.widget_class, XtOffsetOf(CompositeClassRec, composite_class.extension), NULLQUARK, XtCompositeExtensionVersion, sizeof(CompositeClassExtensionRec)); if (!ext || !ext->allows_change_managed_set) call_out = True; } UnmanageChildren(unmanage_children, num_unmanage, parent, &some_unmanaged, call_out, XtNxtChangeManagedSet); hookobj = XtHooksOfDisplay(XtDisplay(parent)); if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) { call_data.type = XtHunmanageSet; call_data.widget = parent; call_data.event_data = (XtPointer) unmanage_children; call_data.num_event_data = num_unmanage; XtCallCallbackList(hookobj, ((HookObject)hookobj)->hooks.changehook_callbacks, (XtPointer) &call_data); } if (do_change_proc) (*do_change_proc)(parent, unmanage_children, &num_unmanage, manage_children, &num_manage, client_data); call_out = (some_unmanaged && !call_out); ManageChildren(manage_children, num_manage, parent, call_out, XtNxtChangeManagedSet); if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) { call_data.type = XtHmanageSet; call_data.event_data = (XtPointer) manage_children; call_data.num_event_data = num_manage; XtCallCallbackList(hookobj, ((HookObject)hookobj)->hooks.changehook_callbacks, (XtPointer) &call_data); } UNLOCK_APP(app); } /* XtChangeManagedSet */