Xref: utzoo comp.windows.open-look:1164 comp.windows.x:35079 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!mips!spool.mu.edu!uunet!matrix!hari From: hari@matrix.UUCP (T hariharan) Newsgroups: comp.windows.open-look,comp.windows.x Subject: XView Notice bug ? Keywords: xview, notice, alert, bug Message-ID: <831@matrix.UUCP> Date: 9 Apr 91 18:29:26 GMT Organization: Matrix Computer Systems, Nashua, NH Lines: 276 Read further only if you have "guide" installed. Otherwise you can ignore this. Store the rest of this message in a file and put it through "sh", i.e.: mkdir /tmp/xvbug cd /tmp/xvbug # save the rest of this message in /tmp/xvbug/xvbug.shar sh xvbug.shar Then read README for further info. # ---------------- Save from next line ------------------ echo Makefile 1>&2 cat > Makefile <<'End of Makefile' # This file was generated by `gxv' from `fname.G'. # Parameters. PROGRAM = fname SOURCES.c = fname_main.c SOURCES.h = SOURCES.G = fname.G STUBS.G = fname.G # Derived parameters. SOURCES = \ $(SOURCES.G) \ $(SOURCES.h) \ $(SOURCES.l) \ $(SOURCES.y) \ $(SOURCES.c) TARGETS.c = \ $(SOURCES.G:%.G=%_ui.c) # $(STUBS.G:%.G=%_stubs.c) TARGETS.h = \ $(SOURCES.G:%.G=%_ui.h) \ $(SOURCES.l:%.l=%.h) \ $(SOURCES.y:%.y=%.h) TARGETS.other = \ $(SOURCES.G:%.G=%.info) TARGETS = \ $(TARGETS.other) \ $(TARGETS.h) \ $(TARGETS.c) OBJECTS = \ $(SOURCES.c:%.c=%.o) \ $(TARGETS.c:%.c=%.o) # Compiler flags. CFLAGS += -g CPPFLAGS += -I$(GUIDEHOME)/include -I$(OPENWINHOME)/include -DMAIN LDFLAGS += -L$(GUIDEHOME)/lib -L$(OPENWINHOME)/lib LDLIBS += -lguide -lguidexv -lxview -lolgx -lX # Standard targets. all: $(TARGETS.other) $(PROGRAM) objects: $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS) sources: $(SOURCES) targets: $(SOURCES) $(TARGETS) $(PROGRAM): $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS) $(LINK.c) -o $(PROGRAM) $(OBJECTS) $(LDLIBS) # Targets to be used by a certain CASE tool. stest: $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS) #load $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) \ -o $(PROGRAM) $(SOURCES.c) $(TARGETS.c) $(LDLIBS) %_ui.c + %_ui.h + %_stubs.c + %.info: %.G $(GUIDEHOME)/bin/gxv $* clean: $(RM) $(TARGETS) $(OBJECTS) $(SOURCES.G:%.G=%_stubs.c) core End of Makefile echo README 1>&2 cat > README <<'End of README' 1. run "make" to build "fname" NOTE: you need "guide" and the XView libraries for this. 2. run "fname". Type anything into the text field and hit . You'll find that the alert frame comes up and disappears immediately. Now, hit or instead of . The alert frame stays up until you hit or click the left mouse button. NOTE: Sometimes, the alert frame stays up even if you hit This does seem to be a XView bug. However, "guide" handles this properly. If you try to Load a non-existent file (hitting after typing the filename), the alert frame does stay up. Looks like I'm missing something here. Please email your responses. I'll summarize. Thanks, Hari uunet!matrix!hari Matrix Computer Systems 1 Tara Boulevard Nashua NH 03062 (603) 888 7790 End of README echo fname.G 1>&2 cat > fname.G <<'End of fname.G' ;GIL-2 ( ( :type :base-window :name window1 :owner nil :width 400 :height 79 :background-color "" :foreground-color "" :label "Base Window" :label-type :string :mapped t :show-footer t :resizable t :icon-file "" :icon-mask-file "" :event-handler nil :events () :user-data () ) ( :type :control-area :name controls1 :owner window1 :help "" :x 0 :y 0 :width 400 :height 79 :background-color "" :foreground-color "" :show-border nil :menu nil :event-handler nil :events () :user-data () ) ( :type :text-field :name textfield :owner controls1 :help "" :x 80 :y 32 :width 235 :height 15 :foreground-color "" :text-type :alphanumeric :label "Filename:" :label-type :string :value-x 155 :value-y 32 :layout-type :horizontal :value-length 20 :stored-length 80 :read-only nil :notify-handler load_file_proc :event-handler nil :events () :user-data () ) ) End of fname.G echo fname_main.c 1>&2 cat > fname_main.c <<'End of fname_main.c' /* * fname_stubs.c - Notify and event callback function stubs. * This file was generated by `gxv' from `fname.G'. * DO NOT EDIT BY HAND. */ #include #include #include #include #include #include #include #include #include #include "fname_ui.h" #ifdef MAIN /* * Instance XV_KEY_DATA key. An instance is a set of related * user interface objects. A pointer to an object's instance * is stored under this key in every object. This must be a * global variable. */ Attr_attribute INSTANCE; void main(argc, argv) int argc; char **argv; { fname_window1_objects *fname_window1; /* * Initialize XView. */ xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, 0); INSTANCE = xv_unique_key(); /* * Initialize user interface components. */ fname_window1 = fname_window1_objects_initialize(NULL, NULL); /* * Turn control over to XView. */ xv_main_loop(fname_window1->window1); exit(0); } #endif Panel_setting load_file_proc(item, event) Panel_item item; Event *event; { fname_window1_objects *ip = (fname_window1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE); warn(ip->window1, event, "File does not exist", (char *) xv_get(ip->textfield, PANEL_VALUE), NULL); return (PANEL_NONE); /* ignore input character */ } warn(frame, event, msg1, msg2) Event *event; Xv_opaque frame; char *msg1, *msg2; { #define MAXLINES 2 /* allow 2 lines max */ int status, nmsgs; int xpos, ypos; char *errmsg; /* 1st line of err msg */ char *msg_array[MAXLINES+1]; register char **cpp; Rect rect; msg_array[0] = msg1; msg_array[1] = msg2; msg_array[2] = NULL; frame_get_rect(frame, &rect); xpos = rect.r_width / 2; ypos = rect.r_height / 2; (void) notice_prompt(frame, event, NOTICE_FOCUS_XY, xpos, ypos, NOTICE_MESSAGE_STRINGS_ARRAY_PTR, msg_array, NOTICE_BUTTON_YES, "Continue", 0); } End of fname_main.c