/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ /* new_manage.c --- defines a subclass of XmManager Created: Eric Bina , 17-Aug-94. Excerts from the X Toolkit Intrinsics Programming Manual - O'Reilly: "Writing a general-purpose composite widget is not a trivial task and should only be done when other options fail." "A truly general-purpose composite widget is a large, complex piece of software. You should leave this programming to the widget writers who write commercial widget sets, and concentrate on things that are more important in your application." */ #include #include #include "mozilla.h" #include "new_manage.h" #include "new_manageP.h" static XtGeometryResult GeometryManager(Widget w, XtWidgetGeometry *request, XtWidgetGeometry *reply); static void ChangeManaged(Widget w); NewManageClassRec newManageClassRec = { { /* core_class fields */ /* superclass */ (WidgetClass) &xmManagerClassRec, /* class_name */ "NewManage", /* widget_size */ sizeof(NewManageRec), /* class_initialize */ NULL, /* class_partinit */ NULL /* ClassPartInitialize */, /* class_inited */ FALSE, /* initialize */ NULL /* Initialize */, /* Init hook */ NULL, /* realize */ XtInheritRealize /* Realize */, /* actions */ NULL, /* num_actions */ 0, /* resources */ NULL /* resources */, /* num_resources */ 0 /* XtNumber(resources) */, /* xrm_class */ NULLQUARK, /* compress_motion */ TRUE, /* compress_exposure */ TRUE, /* compress_enterleave*/ TRUE, /* visible_interest */ FALSE, /* destroy */ NULL, /* resize */ NULL, /* expose */ XtInheritExpose /* (XtExposeProc) Redisplay */, /* set_values */ NULL /* (XtSetValuesFunc )SetValues */, /* set values hook */ NULL, /* set values almost */ XtInheritSetValuesAlmost, /* get values hook */ NULL, /* accept_focus */ NULL, /* Version */ XtVersion, /* PRIVATE cb list */ NULL, /* tm_table */ XtInheritTranslations, /* query_geometry */ NULL /* QueryProc */, /* display_accelerator*/ NULL, /* extension */ NULL, }, { /* composite_class fields */ /* geometry_manager */ GeometryManager /*(XtGeometryHandler )GeometryManager*/, /* change_managed */ ChangeManaged /*(XtWidgetProc) ChangeManaged*/, /* insert_child */ XtInheritInsertChild /*(XtArgsProc) InsertChild*/, /* delete_child */ XtInheritDeleteChild, /* Extension */ NULL, },{ /* Constraint class Init */ NULL, 0, 0, NULL, NULL, NULL, NULL }, /* Manager Class */ { XmInheritTranslations/*ScrolledWindowXlations*/, /* translations */ NULL /*get_resources*/, /* get resources */ 0 /*XtNumber(get_resources)*/, /* num get_resources */ NULL, /* get_cont_resources */ 0, /* num_get_cont_resources */ XmInheritParentProcess, /* parent_process */ NULL, /* extension */ }, { /* NewManage class - none */ /* mumble */ 0 } }; WidgetClass newManageClass = (WidgetClass)&newManageClassRec; static XtGeometryResult GeometryManager(Widget w, XtWidgetGeometry *request, XtWidgetGeometry *reply) { if (request->request_mode & XtCWQueryOnly) { return(XtGeometryYes); } if (request->request_mode & CWX) { XtX(w) = request->x; } if (request->request_mode & CWY) { XtY(w) = request->y; } if (request->request_mode & CWWidth) { XtWidth(w) = request->width; } if (request->request_mode & CWHeight) { XtHeight(w) = request->height; } if (request->request_mode & CWBorderWidth) { XtBorderWidth(w) = request->border_width; } return(XtGeometryYes); } static void ChangeManaged(Widget w) { return; }