mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 20:38:08 +01:00
syncing with latst changes, because cvs will be moved
This commit is contained in:
@@ -34,6 +34,7 @@ Changes since version 0.51.0:
|
|||||||
- fixed crash with internal dialogs and multi-heads
|
- fixed crash with internal dialogs and multi-heads
|
||||||
- added standard colormap support to wrlib (taken from libXmu sources)
|
- added standard colormap support to wrlib (taken from libXmu sources)
|
||||||
- fixed memory leak in attribute panel
|
- fixed memory leak in attribute panel
|
||||||
|
- fixed bug with window that can get focus if both shaded and hidden.
|
||||||
|
|
||||||
Changes since version 0.50.2:
|
Changes since version 0.50.2:
|
||||||
.............................
|
.............................
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ WMSetBrowserColumnTitle(WMBrowser *bPtr, int column, char *title)
|
|||||||
if (bPtr->titles[column])
|
if (bPtr->titles[column])
|
||||||
free(bPtr->titles[column]);
|
free(bPtr->titles[column]);
|
||||||
|
|
||||||
bPtr->titles[column] = wstrdup(title);
|
bPtr->titles[column] = (title!=NULL) ? wstrdup(title) : wstrdup("");
|
||||||
|
|
||||||
if (COLUMN_IS_VISIBLE(bPtr, column) && bPtr->flags.isTitled) {
|
if (COLUMN_IS_VISIBLE(bPtr, column) && bPtr->flags.isTitled) {
|
||||||
drawTitleOfColumn(bPtr, column);
|
drawTitleOfColumn(bPtr, column);
|
||||||
@@ -893,27 +893,31 @@ listCallback(void *self, void *clientData)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
item = WMGetListSelectedItem(lPtr);
|
item = WMGetListSelectedItem(lPtr);
|
||||||
if (!item || oldItem == item)
|
if (!item) {
|
||||||
return;
|
oldItem = item;
|
||||||
|
return;
|
||||||
for (i=0; i<bPtr->columnCount; i++) {
|
|
||||||
if (lPtr == bPtr->columns[i])
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
assert(i<bPtr->columnCount);
|
|
||||||
|
|
||||||
/* columns at right must be cleared */
|
if (oldItem != item) {
|
||||||
removeColumn(bPtr, i+1);
|
for (i=0; i<bPtr->columnCount; i++) {
|
||||||
/* open directory */
|
if (lPtr == bPtr->columns[i])
|
||||||
if (item->isBranch) {
|
break;
|
||||||
WMAddBrowserColumn(bPtr);
|
}
|
||||||
loadColumn(bPtr, bPtr->usedColumnCount-1);
|
assert(i<bPtr->columnCount);
|
||||||
|
|
||||||
|
/* 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 */
|
/* call callback for click */
|
||||||
if (bPtr->action)
|
if (bPtr->action)
|
||||||
|
|||||||
@@ -104,22 +104,16 @@ textChangedObserver(void *observerData, WMNotification *notification)
|
|||||||
char *text;
|
char *text;
|
||||||
WMList *list;
|
WMList *list;
|
||||||
int col = WMGetBrowserNumberOfColumns(panel->browser) - 1;
|
int col = WMGetBrowserNumberOfColumns(panel->browser) - 1;
|
||||||
int i, j, textEvent = (int)WMGetNotificationClientData(notification);
|
int i, j, textEvent;
|
||||||
static int running = 0;
|
|
||||||
|
|
||||||
if (running)
|
|
||||||
return;
|
|
||||||
|
|
||||||
running = 1;
|
|
||||||
|
|
||||||
if (panel->flags.ignoreTextChangeNotification)
|
if (panel->flags.ignoreTextChangeNotification)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
list = WMGetBrowserListInColumn(panel->browser, col);
|
if (!(list = WMGetBrowserListInColumn(panel->browser, col)))
|
||||||
if (!list)
|
return;
|
||||||
return;
|
|
||||||
|
|
||||||
text = WMGetTextFieldText(panel->fileField);
|
text = WMGetTextFieldText(panel->fileField);
|
||||||
|
textEvent = (int)WMGetNotificationClientData(notification);
|
||||||
|
|
||||||
if (panel->flags.autoCompletion && textEvent!=WMDeleteTextEvent)
|
if (panel->flags.autoCompletion && textEvent!=WMDeleteTextEvent)
|
||||||
i = closestListItem(list, text, False);
|
i = closestListItem(list, text, False);
|
||||||
@@ -132,14 +126,16 @@ textChangedObserver(void *observerData, WMNotification *notification)
|
|||||||
int textLen = strlen(text), itemTextLen = strlen(item->text);
|
int textLen = strlen(text), itemTextLen = strlen(item->text);
|
||||||
int visibleItems = WMWidgetHeight(list)/WMGetListItemHeight(list);
|
int visibleItems = WMWidgetHeight(list)/WMGetListItemHeight(list);
|
||||||
|
|
||||||
if (textEvent!=WMSetTextEvent || textLen<itemTextLen)
|
WMSetListPosition(list, i - visibleItems/2);
|
||||||
WMSetListPosition(list, i - visibleItems/2);
|
|
||||||
|
|
||||||
if (textEvent!=WMDeleteTextEvent && textLen<itemTextLen) {
|
if (textEvent!=WMDeleteTextEvent) {
|
||||||
WMRange range;
|
WMRange range;
|
||||||
|
|
||||||
|
panel->flags.ignoreTextChangeNotification = 1;
|
||||||
WMInsertTextFieldText(panel->fileField, &item->text[textLen],
|
WMInsertTextFieldText(panel->fileField, &item->text[textLen],
|
||||||
textLen);
|
textLen);
|
||||||
|
panel->flags.ignoreTextChangeNotification = 0;
|
||||||
|
|
||||||
WMSetTextFieldCursorPosition(panel->fileField, itemTextLen);
|
WMSetTextFieldCursorPosition(panel->fileField, itemTextLen);
|
||||||
range.position = textLen;
|
range.position = textLen;
|
||||||
range.count = itemTextLen - textLen;
|
range.count = itemTextLen - textLen;
|
||||||
@@ -148,7 +144,6 @@ textChangedObserver(void *observerData, WMNotification *notification)
|
|||||||
}
|
}
|
||||||
|
|
||||||
free(text);
|
free(text);
|
||||||
running = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -820,7 +820,8 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
|||||||
switch (ksym) {
|
switch (ksym) {
|
||||||
case XK_Tab:
|
case XK_Tab:
|
||||||
if (event->xkey.state & ShiftMask) {
|
if (event->xkey.state & ShiftMask) {
|
||||||
if (tPtr->view->prevFocusChain) {
|
if (tPtr->view->prevFocusChain &&
|
||||||
|
tPtr->view->prevFocusChain->flags.mapped) {
|
||||||
W_SetFocusOfTopLevel(W_TopLevelOfView(tPtr->view),
|
W_SetFocusOfTopLevel(W_TopLevelOfView(tPtr->view),
|
||||||
tPtr->view->prevFocusChain);
|
tPtr->view->prevFocusChain);
|
||||||
tPtr->flags.notIllegalMovement = 1;
|
tPtr->flags.notIllegalMovement = 1;
|
||||||
@@ -828,7 +829,8 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
|||||||
WMPostNotificationName(WMTextDidEndEditingNotification, tPtr,
|
WMPostNotificationName(WMTextDidEndEditingNotification, tPtr,
|
||||||
(void*)WMBacktabTextMovement);
|
(void*)WMBacktabTextMovement);
|
||||||
} else {
|
} else {
|
||||||
if (tPtr->view->nextFocusChain) {
|
if (tPtr->view->nextFocusChain &&
|
||||||
|
tPtr->view->nextFocusChain->flags.mapped) {
|
||||||
W_SetFocusOfTopLevel(W_TopLevelOfView(tPtr->view),
|
W_SetFocusOfTopLevel(W_TopLevelOfView(tPtr->view),
|
||||||
tPtr->view->nextFocusChain);
|
tPtr->view->nextFocusChain);
|
||||||
tPtr->flags.notIllegalMovement = 1;
|
tPtr->flags.notIllegalMovement = 1;
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ WInsertMenuItemWithTitle(WEditMenu *mPtr, char *title, int index)
|
|||||||
index = mPtr->itemCount;
|
index = mPtr->itemCount;
|
||||||
|
|
||||||
if (mPtr->itemCount == mPtr->itemsAlloced) {
|
if (mPtr->itemCount == mPtr->itemsAlloced) {
|
||||||
WEditMenuItem *newList;
|
WEditMenuItem **newList;
|
||||||
|
|
||||||
newList = wmalloc(sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10));
|
newList = wmalloc(sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10));
|
||||||
memset(newList, 0, sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10));
|
memset(newList, 0, sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10));
|
||||||
|
|||||||
@@ -48,9 +48,7 @@
|
|||||||
AutoArrangeIcons = NO;
|
AutoArrangeIcons = NO;
|
||||||
AdvanceToNewWorkspace = NO;
|
AdvanceToNewWorkspace = NO;
|
||||||
CycleWorkspaces = NO;
|
CycleWorkspaces = NO;
|
||||||
#ifdef WEENDOZE_CYCLE
|
WindozeCycling = NO;
|
||||||
WindozeCycling = YES;
|
|
||||||
#endif /* WEENDOZE_CYCLE */
|
|
||||||
ResizeDisplay = line;
|
ResizeDisplay = line;
|
||||||
MoveDisplay = floating;
|
MoveDisplay = floating;
|
||||||
OpaqueMove = YES;
|
OpaqueMove = YES;
|
||||||
|
|||||||
@@ -48,9 +48,7 @@
|
|||||||
AutoArrangeIcons = NO;
|
AutoArrangeIcons = NO;
|
||||||
AdvanceToNewWorkspace = NO;
|
AdvanceToNewWorkspace = NO;
|
||||||
CycleWorkspaces = NO;
|
CycleWorkspaces = NO;
|
||||||
#ifdef WEENDOZE_CYCLE
|
WindozeCycling = NO;
|
||||||
WindozeCycling = YES;
|
|
||||||
#endif /* WEENDOZE_CYCLE */
|
|
||||||
ResizeDisplay = line;
|
ResizeDisplay = line;
|
||||||
MoveDisplay = floating;
|
MoveDisplay = floating;
|
||||||
OpaqueMove = YES;
|
OpaqueMove = YES;
|
||||||
|
|||||||
@@ -425,7 +425,7 @@ wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace)
|
|||||||
Bool
|
Bool
|
||||||
wWindowCanReceiveFocus(WWindow *wwin)
|
wWindowCanReceiveFocus(WWindow *wwin)
|
||||||
{
|
{
|
||||||
if (!wwin->flags.mapped && !wwin->flags.shaded)
|
if (!wwin->flags.mapped && (!wwin->flags.shaded || wwin->flags.hidden))
|
||||||
return False;
|
return False;
|
||||||
if (WFLAGP(wwin, no_focusable) || wwin->flags.miniaturized)
|
if (WFLAGP(wwin, no_focusable) || wwin->flags.miniaturized)
|
||||||
return False;
|
return False;
|
||||||
|
|||||||
Reference in New Issue
Block a user