コード例 #1
0
static void motCanvasSetSize(Ihandle *ih, Widget sb_win, int setsize)
{
  Widget sb_horiz = (Widget)iupAttribGet(ih, "_IUPMOT_SBHORIZ");
  Widget sb_vert = (Widget)iupAttribGet(ih, "_IUPMOT_SBVERT");
  int sb_vert_width=0, sb_horiz_height=0;
  int width, height;
  Dimension border;

  /* IMPORTANT:
   The border, added by the Core, is NOT included in the Motif size.
   So when setting the size, we must compensate the border, 
   so the actual size will be the size we expect. */
  XtVaGetValues(sb_win, XmNborderWidth, &border, NULL);
  width = ih->currentwidth - 2*border;
  height = ih->currentheight - 2*border;

  /* avoid abort in X */
  if (width <= 0) width = 1;
  if (height <= 0) height = 1;

  if (setsize)
  {
    XtVaSetValues(sb_win,
      XmNwidth, (XtArgVal)width,
      XmNheight, (XtArgVal)height,
      NULL);
  }

  if (sb_vert && XtIsManaged(sb_vert))
    sb_vert_width = iupdrvGetScrollbarSize();
  if (sb_horiz && XtIsManaged(sb_horiz))
    sb_horiz_height = iupdrvGetScrollbarSize();

  if (sb_vert_width)
  {
    XtVaSetValues(sb_vert,
      XmNwidth, (XtArgVal)sb_vert_width,
      XmNheight, (XtArgVal)height-sb_horiz_height,
      NULL);
    iupmotSetPosition(sb_vert, width-sb_vert_width, 0);
  }
  if (sb_horiz_height)
  {
    XtVaSetValues(sb_horiz,
      XmNwidth, (XtArgVal)width-sb_vert_width,
      XmNheight, (XtArgVal)sb_horiz_height,
      NULL);
    iupmotSetPosition(sb_horiz, 0, height-sb_horiz_height);
  }

  XtVaSetValues(ih->handle,
    XmNwidth, (XtArgVal)width-sb_vert_width,
    XmNheight, (XtArgVal)height-sb_horiz_height,
    NULL);
}
コード例 #2
0
ファイル: iupmot_text.c プロジェクト: friends-of-iup/iup
static void motTextLayoutUpdateMethod(Ihandle* ih)
{
  Widget spinbox = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
  if (spinbox && XmIsSpinBox(spinbox))
  {
    /* avoid abort in X */
    if (ih->currentwidth == 0) ih->currentwidth = 2;
    if (ih->currentheight == 0) ih->currentheight = 1;

    XtVaSetValues(spinbox,
      XmNwidth, (XtArgVal)ih->currentwidth,
      XmNheight, (XtArgVal)ih->currentheight,
      XmNarrowSize, ih->currentheight/2,
      NULL);

    XtVaSetValues(ih->handle,
      XmNwidth, (XtArgVal)ih->currentwidth-ih->currentheight/2,
      XmNheight, (XtArgVal)ih->currentheight,
      NULL);

    iupmotSetPosition(spinbox, ih->x, ih->y);
  }
  else
  {
    /* to avoid the Scrollbar warning */
    XtAppSetWarningHandler(iupmot_appcontext, motDummyXtErrorHandler);
    iupdrvBaseLayoutUpdateMethod(ih);
    XtAppSetWarningHandler(iupmot_appcontext, NULL);
  }
}
コード例 #3
0
ファイル: iupmot_common.c プロジェクト: Vulcanior/IUP
void iupdrvBaseLayoutUpdateMethod(Ihandle *ih)
{
  Widget widget = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
  if (!widget) widget = ih->handle;

  if (ih->currentwidth > 0 && ih->currentheight > 0)
  {
    XtVaSetValues(widget,
                  XmNwidth, (XtArgVal)ih->currentwidth,
                  XmNheight, (XtArgVal)ih->currentheight,
                  NULL);
  }

  iupmotSetPosition(widget, ih->x, ih->y);
}
コード例 #4
0
static void motCanvasLayoutUpdateMethod(Ihandle *ih)
{
  Widget sb_win = (Widget)iupAttribGet(ih, "_IUP_EXTRAPARENT");
  motCanvasSetSize(ih, sb_win, 1);
  iupmotSetPosition(sb_win, ih->x, ih->y);
}