1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-15 13:35:53 +01:00

Code update for Window Maker version 0.50.0

Read changes in ChangeLog and NEWS
This commit is contained in:
dan
1999-01-06 15:22:33 +00:00
parent 16698efd45
commit 0261c32636
232 changed files with 20628 additions and 8087 deletions

View File

@@ -4,6 +4,8 @@
#include "WINGsP.h"
char *WMListDidScrollNotification = "WMListDidScrollNotification";
typedef struct W_List {
W_Class widgetClass;
@@ -99,7 +101,7 @@ WMCreateList(WMWidget *parent)
|EnterWindowMask|LeaveWindowMask|ButtonMotionMask,
handleActionEvents, lPtr);
lPtr->itemHeight = scrPtr->normalFont->height + 1;
lPtr->itemHeight = WMFontHeight(scrPtr->normalFont) + 1;
/* create the vertical scroller */
lPtr->vScroller = WMCreateScroller(lPtr);
@@ -224,6 +226,7 @@ WMRemoveListItem(WMList *lPtr, int row)
{
WMListItem *llist;
WMListItem *tmp;
int topItem = lPtr->topItem;
CHECK_CLASS(lPtr, WC_List);
@@ -266,6 +269,8 @@ WMRemoveListItem(WMList *lPtr, int row)
if (!lPtr->idleID) {
lPtr->idleID = WMAddIdleHandler((WMCallback*)updateScroller, lPtr);
}
if (lPtr->topItem != topItem)
WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);
}
@@ -370,6 +375,13 @@ WMGetListSelectedItemRow(WMList *lPtr)
}
int
WMGetListItemHeight(WMList *lPtr)
{
return lPtr->itemHeight;
}
void
WMSetListPosition(WMList *lPtr, int row)
{
@@ -417,6 +429,7 @@ vScrollCallBack(WMWidget *scroller, void *self)
WMList *lPtr = (WMList*)self;
WMScroller *sPtr = (WMScroller*)scroller;
int height;
int topItem = lPtr->topItem;
height = lPtr->view->size.height - 4;
@@ -476,6 +489,9 @@ vScrollCallBack(WMWidget *scroller, void *self)
/* do nothing */
break;
}
if (lPtr->topItem != topItem)
WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);
}
@@ -516,8 +532,8 @@ paintItem(List *lPtr, int index)
flags |= WLDSIsBranch;
if (lPtr->draw)
(*lPtr->draw)(lPtr, view->window, itemPtr->text, flags, &rect);
(*lPtr->draw)(lPtr, index, view->window, itemPtr->text, flags,
&rect);
} else {
if (itemPtr->selected)
XFillRectangle(scr->display, view->window, W_GC(scr->white), x, y,
@@ -706,6 +722,7 @@ handleActionEvents(XEvent *event, void *data)
{
List *lPtr = (List*)data;
int tmp;
int topItem = lPtr->topItem;
CHECK_CLASS(data, WC_List);
@@ -713,14 +730,11 @@ handleActionEvents(XEvent *event, void *data)
case ButtonRelease:
lPtr->flags.buttonPressed = 0;
tmp = getItemIndexAt(lPtr, event->xbutton.y);
if (tmp == lPtr->selectedItem && tmp >= 0) {
if (WMIsDoubleClick(event)) {
if (lPtr->doubleAction)
(*lPtr->doubleAction)(lPtr, lPtr->doubleClientData);
} else {
if (lPtr->action)
(*lPtr->action)(lPtr, lPtr->clientData);
}
if (lPtr->action)
(*lPtr->action)(lPtr, lPtr->clientData);
}
break;
@@ -728,7 +742,7 @@ handleActionEvents(XEvent *event, void *data)
lPtr->flags.buttonPressed = lPtr->flags.buttonWasPressed;
lPtr->flags.buttonWasPressed = 0;
break;
case LeaveNotify:
lPtr->flags.buttonWasPressed = lPtr->flags.buttonPressed;
lPtr->flags.buttonPressed = 0;
@@ -743,6 +757,11 @@ handleActionEvents(XEvent *event, void *data)
lPtr->selectedItem = tmp;
}
lPtr->flags.buttonPressed = 1;
if (WMIsDoubleClick(event)) {
if (lPtr->doubleAction)
(*lPtr->doubleAction)(lPtr, lPtr->doubleClientData);
}
}
break;
@@ -756,6 +775,8 @@ handleActionEvents(XEvent *event, void *data)
}
break;
}
if (lPtr->topItem != topItem)
WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);
}