home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!wyse!mikew
- From: mikew@wyse.wyse.com (Mike Wexler)
- Newsgroups: comp.sources.x
- Subject: v03i059: prompting program, Patch1
- Message-ID: <2157@wyse.wyse.com>
- Date: 20 Mar 89 22:50:29 GMT
- Organization: Wyse Technology, San Jose
- Lines: 156
- Approved: mikew@wyse.com
-
- Submitted-by: brachman@cs.ubc.ca
- Posting-number: Volume 3, Issue 59
- Archive-name: xprompt/patch1
-
- diff -cr xprompt.old/patchlevel.h xprompt/patchlevel.h
-
- *** xprompt.old/patchlevel.h Mon Mar 20 14:39:36 1989
- --- xprompt/patchlevel.h Mon Mar 20 14:41:34 1989
- ***************
- *** 1 ****
- ! #define PATCHLEVEL 0
- --- 1 ----
- ! #define PATCHLEVEL 1
- diff -cr xprompt.old/xprompt.c xprompt/xprompt.c
- *** xprompt.old/xprompt.c Mon Mar 20 14:39:36 1989
- --- xprompt/xprompt.c Mon Mar 20 14:39:50 1989
- ***************
- *** 3,11 ****
- /*
- * xprompt - prompt the user for one or more replies
- *
- ! * Written for X11R3
- ! * 24-Jan-89 bjb
- *
- * Copyright (C) 1989 Barry Brachman and The University of British Columbia
- *
- * Permission is given to freely copy and distribute this software provided:
- --- 3,13 ----
- /*
- * xprompt - prompt the user for one or more replies
- *
- ! * 11-Mar-89 Fixed problem with XSetInputFocus being done before windows
- ! * were viewable.
- *
- + * 24-Jan-89 Written for X11R3. Released for distribution.
- + *
- * Copyright (C) 1989 Barry Brachman and The University of British Columbia
- *
- * Permission is given to freely copy and distribute this software provided:
- ***************
- *** 39,45 ****
- #include "trexp.h"
-
- #ifndef lint
- ! static char *version = "xprompt v1.0 brachman@cs.ubc.ca 14-Feb-89";
- #endif lint
-
- static XrmOptionDescRec table[] = {
- --- 41,47 ----
- #include "trexp.h"
-
- #ifndef lint
- ! static char *version = "xprompt v1.1 brachman@cs.ubc.ca 11-Mar-89";
- #endif lint
-
- static XrmOptionDescRec table[] = {
- ***************
- *** 542,563 ****
- /*
- * Handle the grab and/or warp, if necessary
- */
- ! if (app_resources.grab) {
- ! XGrabKeyboard(XtDisplay(reply_w), XtWindow(reply_w), False,
- ! GrabModeAsync, GrabModeAsync, CurrentTime);
- ! XSetInputFocus(XtDisplay(reply_w), XtWindow(reply_w),
- ! RevertToPointerRoot, CurrentTime);
- ! }
- !
- ! if (app_resources.warp) {
- XWindowAttributes reply_w_attr;
- - XEvent event;
- - long em;
-
- if (XGetWindowAttributes(XtDisplay(reply_w), XtWindow(reply_w),
- &reply_w_attr) == 0)
- ! app_resources.warp = FALSE;
- ! else {
- Window root_return, child_return;
- int root_x_return, root_y_return;
- int win_x_return, win_y_return;
- --- 544,587 ----
- /*
- * Handle the grab and/or warp, if necessary
- */
- ! if (app_resources.grab || app_resources.warp) {
- XWindowAttributes reply_w_attr;
-
- if (XGetWindowAttributes(XtDisplay(reply_w), XtWindow(reply_w),
- &reply_w_attr) == 0)
- ! app_resources.warp = app_resources.grab = FALSE;
- ! else if (!visible) {
- ! XEvent event;
- ! long em;
- !
- ! /*
- ! * The following weirdness waits for the windows to become visible
- ! * before warping the cursor or setting the input focus.
- ! * This is necessary to avoid the cases where a window manager
- ! * repositions things *after* the warp has occurred and where the
- ! * focus window is not viewable at the time of the XSetInputFocus.
- ! * Suggestions on the Right Thing welcome.
- ! */
- ! em = VisibilityChangeMask;
- ! XSelectInput(XtDisplay(popup), XtWindow(popup), em);
- ! while (1) {
- ! bzero(&event, sizeof(event));
- ! XNextEvent(XtDisplay(popup), &event);
- ! if (event.type == VisibilityNotify)
- ! break;
- ! }
- ! em = reply_w_attr.all_event_masks;
- ! XSelectInput(XtDisplay(popup), XtWindow(popup), em);
- ! }
- !
- ! if (app_resources.grab) {
- ! XGrabKeyboard(XtDisplay(reply_w), XtWindow(reply_w), False,
- ! GrabModeAsync, GrabModeAsync, CurrentTime);
- ! XSetInputFocus(XtDisplay(reply_w), XtWindow(reply_w),
- ! RevertToPointerRoot, CurrentTime);
- ! }
- !
- ! if (app_resources.warp) {
- Window root_return, child_return;
- int root_x_return, root_y_return;
- int win_x_return, win_y_return;
- ***************
- *** 581,605 ****
- reply_x = reply_w_attr.width - reply_w_attr.width / 10;
- reply_y = reply_w_attr.height / 2;
-
- - /*
- - * The following weirdness waits for the windows to become visible
- - * before warping the cursor.
- - * This is necessary to avoid the case where a window manager
- - * repositions things *after* the warp has occurred.
- - * Suggestions on the Right Thing welcome.
- - */
- - if (!visible) {
- - em = VisibilityChangeMask;
- - XSelectInput(XtDisplay(popup), XtWindow(popup), em);
- - while (1) {
- - bzero(&event, sizeof(event));
- - XNextEvent(XtDisplay(popup), &event);
- - if (event.type == VisibilityNotify)
- - break;
- - }
- - em = reply_w_attr.all_event_masks;
- - XSelectInput(XtDisplay(popup), XtWindow(popup), em);
- - }
- XWarpPointer(XtDisplay(reply_w), None, XtWindow(reply_w),
- 0, 0, 0, 0, reply_x, reply_y);
- }
- --- 605,610 ----
- --
- Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330
- Moderator of comp.sources.x
-