From ea5d3bcde396e84ef6b421d03ed26e7660c196ac Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 10 Mar 1999 15:47:10 +0000 Subject: [PATCH] Some fixes over 0.51.2-pre2, in WINGs, wwindow.c, and FAQ --- ChangeLog | 1 + FAQ | 83 ++++++++++++++++++++++--------------------- WINGs/wbrowser.c | 40 +++++++++++---------- WINGs/wfilepanel.c | 25 ++++++------- WPrefs.app/editmenu.c | 2 +- src/window.c | 2 +- 6 files changed, 78 insertions(+), 75 deletions(-) diff --git a/ChangeLog b/ChangeLog index 324b8919..3f774888 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ Changes since version 0.51.1: ............................. +- fixed bug with window that can get focus if both shaded and hidden. - maximize for full screen - fixed problem with frame drawing in non-opaque - fixed installation path prob [jmknoble@pobox.com] diff --git a/FAQ b/FAQ index f267deb7..ab6d4594 100644 --- a/FAQ +++ b/FAQ @@ -1,7 +1,7 @@ WindowMaker FAQ ==================================================================== -Last modified: Thursday November 26 12:50PM EST 1998 +Last modified: Wednesday March 10 01:05AM EET 1999 the latest info can be found at http://www.dpo.uab.edu/~grapeape/wmfaq.html or @@ -156,13 +156,16 @@ crash. 1.3 Where are the mailing list archives? ----------------------------------- -UPDATE: Ed has moved to Utah to work for Caldera, so the list has -moved. The new address is -http://www.caldera.com/linuxcenter/forums/wmaker.html +---------------------------------------- +Phillip Smith from Netplex, our wonderful provider of windowmaker.org, has set +up some new lists from the domain. Please read the information on the web +pages at http://www.windowmaker.org/lists.html for information on how to +subscribe, the posting guidelines, and how to access the web archives. -We are currently archiveless after the move. Hopefully this will change in the -near future. +Many thanks to Ed Orcutt who hosted the original lists from his own machine +for many years and Caldera who graciously allowed Ed to continue hosting +from them when he moved to his new position with them. Ed provided a very +valuable service for many years and we are sad to see him go. 1.4 Where is more documentation on configuring Window Maker? @@ -231,7 +234,7 @@ Installation: -=-=-=-=-=-=- 2.1 Where can I get proplist.h? ----------------------------------- +------------------------------- My first hint would be to look through the documentation a little more closely. libPropList.tar.gz is located in the root of the Window Maker distribution source tree. Untar libproplist, compile and install it so that the it @@ -240,14 +243,18 @@ will be available to compile Window Maker. 2.2 Why do no icons show up after installing Window Maker >= 0.15.x when I've followed all the directions? ----------------------------------- -According to Dan Pascu should not happen because Window Maker +------------------------------------------------------------------- +Under normal circumstances, this should not happen because Window Maker should detect if libtiff is going to be compiled in and then it will make the -default theme based around .xpm instead of .tif. +default theme use .tiff or .xpm icons, depending if TIFF support is compiled +in or not. As of Window Maker version 0.15.0, the default setup includes .tiff icons -which require you to have compiled Window Maker with libtiff support. For -some help on compiling with libtiff, at the libtiff section of this FAQ. +which require you to have compiled Window Maker with libtiff support, if you +want them to be used. If you are happy with the .xpm icons, then you don't +need libtiff. Window Maker will detect that TIFF support is not available and +use .xpm icons instead. For some help on compiling with libtiff, look at the +libtiff section of this FAQ. 2.3 How do I get libtiff to work? @@ -380,7 +387,8 @@ mouse. 2.9 How do I get Window Maker working with xdm in Redhat 5.[01]? ---------------------------------- -After running wmaker.inst and letting it write to .xinitrc, cp .xinitrc .xsession +After running wmaker.inst and letting it write to .xinitrc, +cp .xinitrc .xsession and make sure that /usr/local/bin is in your $PATH for the Xserver. You can make sure of this by including a statement like @@ -417,19 +425,19 @@ of this question. 2.10 Do I need to rerun wmaker.inst with every new version of Window Maker? ---------------------------------- -Dan Pascu reveals the answer: +There is no need to do this. You can do it, but keep in mind, that all your +preferences will be lost, overwritten by the defaults. You can update the +files and add the changes yourself if you need to, but else in most cases is +sufficient to rely on WPrefs and it will update for you the new missing +options if they differ from the default ones. -When the user will need to run wmaker.inst again in a new release of -wmaker, we will write that down in the NEWS file. -(as I've done in 0.15.0). - -The way domain files are read beginning from 0.15.0 makes this -redundant. The user config files are merged with the global ones in +The way domain files are read beginning from 0.15.0 makes the need for update +almost redundant. The user config files are merged with the global ones in /usr/local/share/WindowMaker/Defaults. -So even if new options are added, they will reflect in the user configuration. - +So even if new options are added, they will be reflected in the user +configuration. Only if user wishes to change the default behavior, he needs to add that -option to the config file. +option to the config file. 2.11 When I install Window Maker, I've used wmaker.inst correctly @@ -604,17 +612,15 @@ windowmaker, exit windowmaker with the "exit session" option. 3.2 What is the difference between the 'Exit' and 'Exit Session' Options? ---------------------------------- -Another Answer from Dan Pascu: - -"'Exit' exits wmaker, but leaves the other apps running, and if wmaker was -not the last app launched in the .xinitrc the X server is not closed, until the -last app started by .xinitrc is closed. -'Exit session' will exit wmaker, but also will close all running apps, thus the -X server will be closed." +'Exit' exits wmaker, but leaves the other apps running, and if wmaker was +not the last app launched in the .xinitrc the X server is not closed, until +the last app started by .xinitrc is closed. +'Exit session' will exit wmaker, but also will close all running apps, thus +the X server will be closed, and your session will end. 3.3 How do I "dock" AppIcons on the Clip? ----------------------------------- +----------------------------------------- Just drag icons near it like you would for the dock. If you are having a problem docking icons, you should try moving the Clip away from the dock. @@ -1239,17 +1245,15 @@ Programming: 6.1 How do I get a normal X application to produce an appicon? ---------------------------------- -Another insightful answer from who else but Dan Pascu. - -"You must define the WM_CLASS (XSetClassHint()) and the + You must define the WM_CLASS (XSetClassHint()) and the CLIENT_LEADER or XWMHints.window_group properties, which are -automatically set by most applications that use Xt (Motif, Athena ...), but if -you use plain Xlib you must set them by hand. +automatically set by most applications that use Xt (Motif, Athena ...), +but if you use plain Xlib you must set them by hand. Also you must make a call to XSetCommand(dpy, leader, argv, argc); Take a look at Window Maker-0.1x.x/test/test.c that is an example for -writing such an app (which also have an app menu)." +writing such an app (which also have an app menu). 6.2 How do I get my tcl/tk application to produce an appicon? @@ -1368,8 +1372,7 @@ the files manually. Or download the whole distribution. 7.5 Will you add GNOME support? ---------------------------------- -Yes. But don't ask me when. - +Support for GNOME hints is included since 0.50.0. -=-=-=-=- Themes: diff --git a/WINGs/wbrowser.c b/WINGs/wbrowser.c index dcd73b06..6fa7c3d9 100644 --- a/WINGs/wbrowser.c +++ b/WINGs/wbrowser.c @@ -893,27 +893,31 @@ listCallback(void *self, void *clientData) int i; item = WMGetListSelectedItem(lPtr); - if (!item || oldItem == item) - return; - - for (i=0; icolumnCount; i++) { - if (lPtr == bPtr->columns[i]) - break; + if (!item) { + oldItem = item; + return; } - assert(icolumnCount); - /* columns at right must be cleared */ - removeColumn(bPtr, i+1); - /* open directory */ - if (item->isBranch) { - WMAddBrowserColumn(bPtr); - loadColumn(bPtr, bPtr->usedColumnCount-1); + if (oldItem != item) { + for (i=0; icolumnCount; i++) { + if (lPtr == bPtr->columns[i]) + break; + } + assert(icolumnCount); + + /* columns at right must be cleared */ + removeColumn(bPtr, i+1); + /* open directory */ + if (item->isBranch) { + WMAddBrowserColumn(bPtr); + loadColumn(bPtr, bPtr->usedColumnCount-1); + } + if (bPtr->usedColumnCount < bPtr->maxVisibleColumns) + i = 0; + else + i = bPtr->usedColumnCount-bPtr->maxVisibleColumns; + scrollToColumn(bPtr, i, True); } - if (bPtr->usedColumnCount < bPtr->maxVisibleColumns) - i = 0; - else - i = bPtr->usedColumnCount-bPtr->maxVisibleColumns; - scrollToColumn(bPtr, i, True); /* call callback for click */ if (bPtr->action) diff --git a/WINGs/wfilepanel.c b/WINGs/wfilepanel.c index 6cc4fbc3..7811ffa3 100644 --- a/WINGs/wfilepanel.c +++ b/WINGs/wfilepanel.c @@ -104,22 +104,16 @@ textChangedObserver(void *observerData, WMNotification *notification) char *text; WMList *list; int col = WMGetBrowserNumberOfColumns(panel->browser) - 1; - int i, textEvent = (int)WMGetNotificationClientData(notification); - static int running = 0; - - if (running) - return; - - running = 1; + int i, textEvent; if (panel->flags.ignoreTextChangeNotification) return; - list = WMGetBrowserListInColumn(panel->browser, col); - if (!list) + if (!(list = WMGetBrowserListInColumn(panel->browser, col))) return; text = WMGetTextFieldText(panel->fileField); + textEvent = (int)WMGetNotificationClientData(notification); if (panel->flags.autoCompletion && textEvent!=WMDeleteTextEvent) i = closestListItem(list, text, False); @@ -132,14 +126,16 @@ textChangedObserver(void *observerData, WMNotification *notification) int textLen = strlen(text), itemTextLen = strlen(item->text); int visibleItems = WMWidgetHeight(list)/WMGetListItemHeight(list); - if (textEvent!=WMSetTextEvent || textLenflags.ignoreTextChangeNotification = 1; WMInsertTextFieldText(panel->fileField, &item->text[textLen], - textLen); + textLen); + panel->flags.ignoreTextChangeNotification = 0; + WMSetTextFieldCursorPosition(panel->fileField, itemTextLen); range.position = textLen; range.count = itemTextLen - textLen; @@ -148,7 +144,6 @@ textChangedObserver(void *observerData, WMNotification *notification) } free(text); - running = 0; } diff --git a/WPrefs.app/editmenu.c b/WPrefs.app/editmenu.c index 039ac611..c6741b38 100644 --- a/WPrefs.app/editmenu.c +++ b/WPrefs.app/editmenu.c @@ -366,7 +366,7 @@ WInsertMenuItemWithTitle(WEditMenu *mPtr, char *title, int index) index = mPtr->itemCount; if (mPtr->itemCount == mPtr->itemsAlloced) { - WEditMenuItem *newList; + WEditMenuItem **newList; newList = wmalloc(sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10)); memset(newList, 0, sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10)); diff --git a/src/window.c b/src/window.c index 10830cfd..328ae29a 100644 --- a/src/window.c +++ b/src/window.c @@ -423,7 +423,7 @@ wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace) Bool wWindowCanReceiveFocus(WWindow *wwin) { - if (!wwin->flags.mapped && !wwin->flags.shaded) + if (!wwin->flags.mapped && (!wwin->flags.shaded || wwin->flags.hidden)) return False; if (WFLAGP(wwin, no_focusable) || wwin->flags.miniaturized) return False;