resize man page on HP-UX

Man page or keyword search:  
man Server   10987 pages
apropos Keyword Search (all sections)
Output format
HP-UX logo
[printable version]

resize()							      resize()

Name
  resize - RectObj class method called when a widget is resized.

Synopsis
  typedef void (*XtWidgetProc)(Widget);
	 Widget w;

Inputs
  w	    Specifies the widget that has been resized.

Description
  The resize() method is registered on the resize field of the RectObj or
  Core class part structure.  It is  called  when  a  widget  is  resized
  through  a  call  to	XtResizeWidget()  or  XtConfigureWidget(), and is
  responsible for doing any  layout  of	 children  or  recalculating  any
  cached values necessary for the widget to draw itself at its new size.

  The  resize()	 method	 is called whether or not the widget is realized.
  The width, height, and border_width fields of the  widget  contain  the
  new  size  of the widget.  Note that this method is not responsible for
  drawing the widget at its new size.  Unless the widget's window has bit
  gravity set (which is not the default) then when the window is resized,
  an Expose event will be generated, and  the  expose()	 method	 will  be
  called  by  the  Intrinsics.	 If  the  resize()  method  does call the
  expose() method, then the widget will be redrawn twice.

  The widget must treat resize() as a command, not as a request.  A  wid‐
  get  must  neither change its own size from within the resize() method,
  nor appeal the size change by calling XtMakeGeometryRequest() or XtMak‐
  eResizeRequest().

  Note	that  the resize() method is not invoked by XtMakeResizeRequest()
  or XtMakeGeometryRequest(), but it may be called if the parent  explic‐
  itly resizes the widget while granting the resize request.  Because the
  widget does not know whether its resize() method was called, it  should
  be prepared to perform the necessary layout or calculation after making
  a geometry request, and may choose to do this	 simply	 by  calling  its
  resize procedure directly.  Resize procedures should be written so that
  they can safely be called more than once in a row.

  The resize() method is not chained.  A widget	 class	can  inherit  the
  resize()  method of its superclass by specifying XtInheritResize in the
  resize field of the RectObj or Core class  part  structure.	A  widget
  that needs do no computation when resized can set this field to NULL.

Usage
  Very	simple widgets may check their size and compute how to draw them‐
  selves every time their expose() procedure is called.	  A  widget  that
  does	this  does not need a resize() method and can specify NULL.  Most
  widgets however, do some pre-computation so that they	 can  more  effi‐
  ciently redraw themselves.  The Xaw Label widget, for example, computes
  the starting position of the text it draws based on  the  size  of  the
  window, the size of the text, the margins, and the value of the XtNjus‐
  tify resource.  This pre-computed value is valid until the window size,
  the  label,  the  font,  the	margins,  or  the  justification changes.
  Label's resize() method calls an internal procedure  to  perform  these
  calculations.	  This	procedure  is  also  called from the set_values()
  method.

  Many composite widgets must recompute the layout of their children when
  they	are  resized.	This  may involve moving or resizing the children
  widgets.  Composite widgets will often call an internal  layout  proce‐
  dure	from their resize() method, and will call the same procedure from
  their change_managed() method and perhaps also their geometry_manager()
  method.

Example
  The  following procedures are the resize() methods of the Xaw Clock and
  Porthole widgets.  The first pre-computes a number of	 values	 used  to
  draw	the  clock at a given size, and the second ensures that the child
  of the Porthole is at least as large as the Porthole itself.	Note that
  the  Clock  resize() method is optimized only to do the resize calcula‐
  tions if the widget is realized.  In order to do this, though, it  must
  call this procedure from its realize() method.  The Xaw Mailbox widget,
  which simply displays a pixmap, is so simple that it does  not  need	a
  resize()  method.  The Xaw Form and Box widgets are examples of compos‐
  ite widgets that must perform some  sophisticated  layout  computations
  when they are resized.

     static void Resize (gw)
	 Widget gw;
     {
	 ClockWidget w = (ClockWidget) gw;
	 /* don't do this computation if window hasn't been realized yet. */
	 if (XtIsRealized(gw) && w->clock.analog) {
	     /* need signed value since Dimension is unsigned */
	     int radius = ((int) min(w->core.width, w->core.height) -
		  (int) (2 * w->clock.padding)) / 2;
	     w->clock.radius = (Dimension) max (radius, 1);

	     w->clock.second_hand_length =
		  (int)(SECOND_HAND_FRACT * w->clock.radius) / 100;
	     w->clock.minute_hand_length =
		  (int)(MINUTE_HAND_FRACT * w->clock.radius) / 100;
	     w->clock.hour_hand_length =
		  (int)(HOUR_HAND_FRACT * w->clock.radius) / 100;
	     w->clock.hand_width =
		  (int)(HAND_WIDTH_FRACT * w->clock.radius) / 100;
	     w->clock.second_hand_width =
		  (int)(SECOND_WIDTH_FRACT * w->clock.radius) / 100;

	     w->clock.centerX = w->core.width / 2;
	     w->clock.centerY = w->core.height / 2;
	 }
     }

     static void Resize (gw)
	 Widget gw;
     {
	 PortholeWidget pw = (PortholeWidget) gw;
	 Widget child = find_child (pw);

	 /*
	  * If we have a child, we need to make sure that it is
	  * at least as big as we are and in the right place.
	  */
	 if (child) {
	     Position x, y;
	     Dimension width, height;

	     layout_child (pw, child, NULL, &x, &y, &width, &height);
	     XtConfigureWidget (child, x, y, width, height, (Dimension) 0);
	 }

	 SendReport (pw, (unsigned int) (XawPRCanvasWidth XawPRCanvasHeight));
     }

See Also
  XtConfigureWidget(1), XtResizeWidget(1),
  Core(3).

Xt - Intrinsics Methods						      resize()
[top]

List of man pages available for HP-UX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net