Fwd: Building problem

Bert Wesarg <bert.wesarg-gM/[email protected]> Fri, 21 May 2010 20:52:39 +0200
Newsgroups gmane.editors.nedit.user
Message-ID <[email protected]>
Maybe I have on the discussion list more luck.

Bert

On Wed, May 19, 2010 at 03:32, TK Soh <[email protected]> wrote:
> On Tue, May 18, 2010 at 9:19 PM, Bert Wesarg <bert.wesarg-gM/[email protected]> wrote:
>> Hi,
>>
>> does anybody has any building problems lately?
>>
>> I have really a strange problem. After installing Ubuntu 10.04 freshly
>> on my notebook, I can't run a self build nedit binary anymore. The
>> error message is;
>>
>> Error: Shell widget nedit has zero width and/or height
>>
>> The offender is in source/nedit.c:516:
>>
>>    XtRealizeWidget(TheAppShell);
>>
>> I have tried to reproduce this with a minimal X application (see
>> attached file), which showed the same error, but than suddenly stopped
>> to show this error.
>>
>> Any help would be very appreciated.
>
> Just curious, are you linking to Lesstif on OM?

I could reproduced this error with the appshell.c code without linking
to motif. Anyway I have only tested openmotif (self-build 2.3.2, 2.3.3
and ubuntu 2.2.3).

That looked like this (out from memory):

1. compile appshell.c without motif
2. run appshell
 -> Error: Shell widget appShell has zero width and/or height
3. compile appshell.c with motif (i.e. -DWITH_MOTIF and -lXm)
4. run appshell
 -> works as expected
5. compile appshell.c without motif
6. run appshell
 -> works as expected

So I assumed some "memory" from X that remembers some dimensions for
this app. This was on the weekend. Yesterday I tried it again and it
didn't work anymore. The appshell (w or w/o motif) always worked. Only
the self-build nedit does not.

Bert

-- 
NEdit Discuss mailing list - [email protected]
http://www.nedit.org/mailman/listinfo/discuss
appshell.c.txt (text/plain, 1.8 KB)
/* -*- c -*- */

#define _GNU_SOURCE
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
#include <math.h>

#include <X11/Intrinsic.h>
#include <X11/Shell.h>

#ifdef WITH_MOTIF
#  include <Xm/Xm.h>
#  include <Xm/Form.h>
#  include <Xm/PushB.h>
#endif

int
main(int ac, char *av[])
{
    XtAppContext theAppContext;
    Display *theDisplay;
    Widget theAppShell;

    XtToolkitInitialize();
    theAppContext = XtCreateApplicationContext();

    theDisplay = XtOpenDisplay(theAppContext, NULL,
            "appShell", "AppShell", NULL, 0, &ac, av);

    theAppShell = XtAppCreateShell("appShell", "AppShell",
            applicationShellWidgetClass, theDisplay, NULL, 0);

    XtSetMappedWhenManaged(theAppShell, False);
    XtRealizeWidget(theAppShell);

#ifdef WITH_MOTIF
    {
        Widget shell, form, button;
        XmString s1;
        Arg args[3];
        Cardinal argc = 0;

        XtSetArg(args[argc], XmNdeleteResponse, XmDO_NOTHING); argc++;
        XtSetArg(args[argc], XmNiconName, "Icon"); argc++;
        XtSetArg(args[argc], XmNtitle, "Title"); argc++;
        shell = XtCreateWidget("myWindow", topLevelShellWidgetClass, theAppShell,
                args, argc);

        form = XtVaCreateManagedWidget("form",
                xmFormWidgetClass, shell,
                XmNautoUnmanage, False,
                XmNresizePolicy, XmRESIZE_NONE,
                NULL);

        button = XtVaCreateManagedWidget("button",
                xmPushButtonWidgetClass, form,
                XmNlabelString, s1 = XmStringCreateSimple("Push me!"),
                NULL);
        XmStringFree(s1);

        XtRealizeWidget(shell);
        XtMapWidget(shell);
    }
#endif

    XtAppMainLoop(theAppContext);

    return 0;
}