[comp.windows.x] I Need Help with Popup Shells

drapeau@choctaw.Stanford.EDU (George Drapeau) (08/13/89)

Included in this posting is a short X Toolkit program I wrote to test
popup shells.  The program makes two shells, each with a Box
containing a Command widget.

There are a couple of strange things about this (seemingly) simple
program, though.  First of all, the popup widget doesn't get its own
title bar (I use twm as my window manager, if that makes a
difference).  Also, if I put the "XtPopup(popup)" call after the
XtRealizeWidget(topLevelShell) call, I don't even get the popup shell.

Why is this, and where could I have read to understand why?

Platform:  Sun4/110, SunOS4.0.1, X11R3 (with patches 1-9 + Purdue
Speedups).  This same behavior occurs on a microVAX 3200, too.

Any help you could provide (including pointers to the relevant
documentation) would be greatly appreciated.

Thanks in advance,

	George

------------ cut here ------------
#include <stdio.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Box.h>
#include <X11/Command.h>
#include <X11/Shell.h>

Widget	topLevelShell,popup;

void main(argc,argv)
     int	argc;
     char	**argv;
{
  Widget	box,command;
  void		MakePopup();
  
  topLevelShell = XtInitialize("small","Test",NULL,0,&argc,argv);
  box = XtCreateManagedWidget("Box",boxWidgetClass,topLevelShell,NULL,0);
  command = XtCreateManagedWidget("Command",commandWidgetClass,box,NULL,0);
  MakePopup();
  XtPopup(popup);/* Try moving this after the "XtRealizeWidget" line...*/
		 /* ... and see what happens. */
  XtRealizeWidget(topLevelShell);
  XtMainLoop();
}


void MakePopup()
{
  Widget	myBox,myCommand;

  popup = XtCreatePopupShell("Pop",shellWidgetClass,topLevelShell,NULL,0);
  myBox = XtCreateManagedWidget("box2",boxWidgetClass,popup,NULL,0);
  myCommand = XtCreateManagedWidget("Push",commandWidgetClass,myBox,NULL,0);
}

--
______________________________________________________________________________
George D. Drapeau			Internet: drapeau@jessica.stanford.edu
Academic Information Resources
Stanford University

converse@EXPO.LCS.MIT.EDU (Donna Converse) (08/15/89)

> First of all, the popup widget doesn't get its own
> title bar (I use twm as my window manager, if that makes a
> difference).  Also, if I put the "XtPopup(popup)" call after the
> XtRealizeWidget(topLevelShell) call, I don't even get the popup shell.

Calling XtPopup before realizing the parent of the popup works fine here.

But you have the wrong number of arguments to XtPopup, and your popup shell type
was given as shellWidgetClass, which is an internal class and should not be
instantiated.  Use transientShellWidgetClass instead.  Read chapters 4 
"Shell Widgets" and 5 "Pop-up Widgets" in "X Toolkit Intrinsics"


Donna Converse
converse@expo.lcs.mit.edu