1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 20:38:08 +01:00

- removed configure.in. use only autoconf 2.5x fom now

- fixed a bug and memleak in WMBox code.
- updated some translations
- fixed some bug in the menu code about drawing disabled entries.
- fixed Clip menu not to allow selecting of "Autoraise" if "Keep On Top"
  is active.
- Added a "Browse" button to the menu editor in WPrefs where a program to run
  is specified (not finished).
This commit is contained in:
dan
2002-02-20 22:22:40 +00:00
parent 9466c00f2b
commit 77b8fe05ac
14 changed files with 1311 additions and 2062 deletions

View File

@@ -33,8 +33,15 @@ Changes since version 0.80.0:
manager" option in the crashing dialog panel.
- Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if
it is defined) to overwrite the default hardcoded fallback window manager.
- Fixed marks for menu entries to be grayed as the text for disabled entries.
- Fixed Clip's "Autoraise" option to be marked as disabled when the
"Keep on Top" option is active.
- Added ability to browse for files/directories in the WPrefs menu editor.
- Added Czech translations of documentation (Jiri Hnidek <Jiri.Hnidek@vslib.cz>)
- Fixed segfault with incomplete WM_CLASS specifications.
- Fixed a bug about arranging subviews in a WMBox after removing a subview
and a memleak occuring in the same situation.
Changes since version 0.70.0:
.............................

14
INSTALL
View File

@@ -40,6 +40,7 @@ SUPPORTED PLATFORMS
- IBM S/390 running Linux
- IBM S/390 running Conectiva Linux (experimental)
- iBook running Darwin
- Darwin PPC / Macos X
- Windows NT with Cygwin/XFree86
- Sony PlayStation2 running Linux
@@ -73,9 +74,9 @@ The following is required to build Window Maker:
These tools are NOT needed, but IF you have one or
more of them installed, make sure you have ALL of the following
with exactly these versions:
autoconf 2.13
autoconf 2.52
automake 1.4
libtool 1.3
libtool 1.4.2
If you have a different version, disable them by temporarily
renaming them to something else or uninstalling them from your
system. If you don't develop software you don't need them,
@@ -149,12 +150,6 @@ To get a list of other options, run ./configure --help
The -I flag must precede each paths, like:
--with-incs-from="-I/opt/headers -I/usr/local/include"
--enable-single-icon
enables the collapsing of all appicons of the WM_CLASS+WM_INSTANCE
into a single one. This feature is not supported at all by the
developers. If you have some trouble with it, contact it's author:
Christopher Seawood <cls@seawood.org>
--disable-shm
disable use of the MIT shared memory extension. This will slow down
texture generation a little bit, but in some cases it seems to be
@@ -184,9 +179,6 @@ To get a list of other options, run ./configure --help
XKB language status lock support. If you don't know what it is you
probably don't need it.
--enable-sound
enable support of sound effects module
--disable-xpm
disables use of the XPM library even if it is available on your
system.

View File

@@ -19,10 +19,3 @@ WindowMaker.lsm: WindowMaker.lsm.in
-e "s/SIZE/$$size M/"\
WindowMaker.lsm.in > WindowMaker-$(VERSION).lsm
#dist-hook:
# touch `find -name configure.in -print`
# touch `find -name aclocal.m4 -print`
# touch `find -name Makefile.am -print`
# touch `find -name Makefile.in -print`
# touch `find -name configure -print`

View File

@@ -7,6 +7,9 @@ Changes since wmaker 0.80.0:
- fixed labels not to display '\n' as a character if multiple '\n' are passed
but just skip to the next line.
- better warning when importing non-digit characters in PropList Data.
- rewrote WMBox to use a WMArray for subviews. with this change fixed a bug
about arranging subviews after removing one and a memleak occuring in the
same case.
Changes since wmaker 0.70.0:

View File

@@ -138,19 +138,13 @@ testBox(WMScreen *scr)
win = WMCreateWindow(scr, "testBox");
WMSetWindowTitle(win, "Box");
WMSetWindowCloseAction(win, closeAction, NULL);
WMSetViewNotifySizeChanges(WMWidgetView(win), True);
WMResizeWidget(win, 400, 300);
box = WMCreateBox(win);
WMSetBoxBorderWidth(box, 5);
WMAddNotificationObserver(resizedWindow, box,
WMViewSizeDidChangeNotification,
WMWidgetView(win));
WMResizeWidget(win, 400, 300);
WMSetViewExpandsToParent(WMWidgetView(box), 0, 0, 0, 0);
/* WMSetBoxHorizontal(box, True); */
/*WMSetBoxHorizontal(box, True);*/
for (i = 0; i < 4; i++) {
btn = WMCreateCommandButton(box);
WMSetButtonText(btn, "bla");
@@ -1316,15 +1310,10 @@ main(int argc, char **argv)
testFrame(scr);
testSplitView(scr);
testGradientButtons(scr);
testOpenFilePanel(scr);
testSlider(scr);

View File

@@ -18,8 +18,7 @@ typedef struct W_Box {
W_Class widgetClass;
W_View *view;
SubviewItem *subviews;
int subviewCount;
WMArray *subviews;
short borderWidth;
@@ -40,10 +39,10 @@ static void didResize(struct W_ViewDelegate*, WMView*);
static W_ViewDelegate delegate = {
NULL,
NULL,
didResize,
NULL,
NULL
NULL,
didResize,
NULL,
NULL
};
@@ -53,7 +52,7 @@ WMBox*
WMCreateBox(WMWidget *parent)
{
Box *bPtr;
bPtr = wmalloc(sizeof(Box));
memset(bPtr, 0, sizeof(Box));
@@ -65,87 +64,108 @@ WMCreateBox(WMWidget *parent)
return NULL;
}
bPtr->view->self = bPtr;
bPtr->view->delegate = &delegate;
bPtr->subviews = WMCreateArrayWithDestructor(2, wfree);
WMCreateEventHandler(bPtr->view, StructureNotifyMask,
handleEvents, bPtr);
WMResizeWidget(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT);
bPtr->subviews = NULL;
bPtr->subviewCount = 0;
return bPtr;
}
typedef struct {
WMBox *box;
int total;
int expands;
int x, y;
int xe, ye;
int w, h;
} BoxData;
static void
computeExpansion(void *object, void *cdata)
{
SubviewItem *item = (SubviewItem*)object;
BoxData *eData = (BoxData*)cdata;
eData->total -= item->minSize;
eData->total -= item->space;
if (item->expand) {
eData->expands++;
}
}
static void
doRearrange(void *object, void *cdata)
{
SubviewItem *item = (SubviewItem*)object;
BoxData *eData = (BoxData*)cdata;
if (eData->box->horizontal) {
eData->w = item->minSize;
if (item->expand)
eData->w += eData->total/eData->expands;
} else {
eData->h = item->minSize;
if (item->expand)
eData->h += eData->total/eData->expands;
}
if (!item->end) {
W_MoveView(item->view, eData->x, eData->y);
}
W_ResizeView(item->view, eData->w, eData->h);
if (eData->box->horizontal) {
if (item->end)
eData->xe -= eData->w + item->space;
else
eData->x += eData->w + item->space;
} else {
if (item->end)
eData->ye -= eData->h + item->space;
else
eData->y += eData->h + item->space;
}
if (item->end) {
W_MoveView(item->view, eData->xe, eData->ye);
}
}
static void
rearrange(WMBox *box)
{
int i;
int x, y;
int xe, ye;
int w = 1, h = 1;
int total;
int expands = 0;
x = box->borderWidth;
y = box->borderWidth;
BoxData eData;
eData.box = box;
eData.x = eData.y = box->borderWidth;
eData.w = eData.h = 1;
eData.expands = 0;
if (box->horizontal) {
ye = box->borderWidth;
xe = WMWidgetWidth(box) - box->borderWidth;
h = WMWidgetHeight(box) - 2 * box->borderWidth;
total = WMWidgetWidth(box) - 2 * box->borderWidth;
eData.ye = box->borderWidth;
eData.xe = WMWidgetWidth(box) - box->borderWidth;
eData.h = WMWidgetHeight(box) - 2 * box->borderWidth;
eData.total = WMWidgetWidth(box) - 2 * box->borderWidth;
} else {
xe = box->borderWidth;
ye = WMWidgetHeight(box) - box->borderWidth;
w = WMWidgetWidth(box) - 2 * box->borderWidth;
total = WMWidgetHeight(box) - 2 * box->borderWidth;
eData.xe = box->borderWidth;
eData.ye = WMWidgetHeight(box) - box->borderWidth;
eData.w = WMWidgetWidth(box) - 2 * box->borderWidth;
eData.total = WMWidgetHeight(box) - 2 * box->borderWidth;
}
if (w <= 0 || h <= 0 || total <= 0) {
if (eData.w <= 0 || eData.h <= 0 || eData.total <= 0) {
return;
}
for (i = 0; i < box->subviewCount; i++) {
total -= box->subviews[i].minSize;
total -= box->subviews[i].space;
if (box->subviews[i].expand) {
expands++;
}
}
for (i = 0; i < box->subviewCount; i++) {
if (box->horizontal) {
w = box->subviews[i].minSize;
if (box->subviews[i].expand)
w += total/expands;
} else {
h = box->subviews[i].minSize;
if (box->subviews[i].expand)
h += total/expands;
}
if (!box->subviews[i].end) {
W_MoveView(box->subviews[i].view, x, y);
}
W_ResizeView(box->subviews[i].view, w, h);
if (box->horizontal) {
if (box->subviews[i].end)
xe -= w + box->subviews[i].space;
else
x += w + box->subviews[i].space;
} else {
if (box->subviews[i].end)
ye -= h + box->subviews[i].space;
else
y += h + box->subviews[i].space;
}
if (box->subviews[i].end) {
W_MoveView(box->subviews[i].view, xe, ye);
}
}
WMMapArray(box->subviews, computeExpansion, &eData);
WMMapArray(box->subviews, doRearrange, &eData);
}
@@ -163,21 +183,18 @@ void
WMAddBoxSubview(WMBox *bPtr, WMView *view, Bool expand, Bool fill,
int minSize, int maxSize, int space)
{
int i = bPtr->subviewCount;
bPtr->subviewCount++;
if (!bPtr->subviews)
bPtr->subviews = wmalloc(sizeof(SubviewItem));
else
bPtr->subviews = wrealloc(bPtr->subviews,
bPtr->subviewCount*sizeof(SubviewItem));
bPtr->subviews[i].view = view;
bPtr->subviews[i].minSize = minSize;
bPtr->subviews[i].maxSize = maxSize;
bPtr->subviews[i].expand = expand;
bPtr->subviews[i].fill = fill;
bPtr->subviews[i].space = space;
bPtr->subviews[i].end = 0;
SubviewItem *subView;
subView = wmalloc(sizeof(SubviewItem));
subView->view = view;
subView->minSize = minSize;
subView->maxSize = maxSize;
subView->expand = expand;
subView->fill = fill;
subView->space = space;
subView->end = 0;
WMAddToArray(bPtr->subviews, subView);
rearrange(bPtr);
}
@@ -188,40 +205,36 @@ void
WMAddBoxSubviewAtEnd(WMBox *bPtr, WMView *view, Bool expand, Bool fill,
int minSize, int maxSize, int space)
{
int i = bPtr->subviewCount;
bPtr->subviewCount++;
if (!bPtr->subviews)
bPtr->subviews = wmalloc(sizeof(SubviewItem));
else
bPtr->subviews = wrealloc(bPtr->subviews,
bPtr->subviewCount*sizeof(SubviewItem));
bPtr->subviews[i].view = view;
bPtr->subviews[i].minSize = minSize;
bPtr->subviews[i].maxSize = maxSize;
bPtr->subviews[i].expand = expand;
bPtr->subviews[i].fill = fill;
bPtr->subviews[i].space = space;
bPtr->subviews[i].end = 1;
SubviewItem *subView;
subView = wmalloc(sizeof(SubviewItem));
subView->view = view;
subView->minSize = minSize;
subView->maxSize = maxSize;
subView->expand = expand;
subView->fill = fill;
subView->space = space;
subView->end = 1;
WMAddToArray(bPtr->subviews, subView);
rearrange(bPtr);
}
static int
matchView(void *item, void *cdata)
{
return (((SubviewItem*)item)->view == (WMView*)cdata);
}
void
WMRemoveBoxSubview(WMBox *bPtr, WMView *view)
{
int i;
for (i = 0; i < bPtr->subviewCount; i++) {
if (bPtr->subviews[i].view == view) {
memmove(&bPtr->subviews[i], &bPtr->subviews[i+1],
(bPtr->subviewCount - i - 1) * sizeof(void*));
bPtr->subviewCount--;
break;
}
if (WMRemoveFromArrayMatching(bPtr->subviews, matchView, view)) {
rearrange(bPtr);
}
rearrange(bPtr);
}
@@ -241,6 +254,7 @@ static void
destroyBox(Box *bPtr)
{
WMRemoveNotificationObserver(bPtr);
WMFreeArray(bPtr->subviews);
wfree(bPtr);
}
@@ -270,3 +284,4 @@ handleEvents(XEvent *event, void *data)
}
}

View File

@@ -449,7 +449,7 @@ destroyView(W_View *view)
WMRemoveNotificationObserver(view);
#if 0
#if 0
if (view->dragSourceProcs)
wfree(view->dragSourceProcs);
@@ -733,9 +733,8 @@ WMGetViewScreenPosition(WMView *view)
}
static void resizedParent(void *self, WMNotification *notif)
static void
resizedParent(void *self, WMNotification *notif)
{
WMSize size = WMGetViewSize((WMView*)WMGetNotificationObject(notif));
WMView *view = (WMView*)self;
@@ -745,7 +744,7 @@ static void resizedParent(void *self, WMNotification *notif)
size.height - (view->topOffs + view->bottomOffs));
}
void
WMSetViewExpandsToParent(WMView *view, int leftOffs, int topOffs,
int rightOffs, int bottomOffs)
@@ -766,3 +765,5 @@ WMSetViewExpandsToParent(WMView *view, int leftOffs, int topOffs,
W_ResizeView(view, size.width - (leftOffs + rightOffs),
size.height - (topOffs + bottomOffs));
}

View File

@@ -76,8 +76,9 @@ typedef struct _Panel {
WMFrame *commandF;
WMTextField *commandT; /* command to run */
WMButton *browseB;
WMButton *xtermC; /* inside xterm? */
WMFrame *pathF;
WMTextField *pathT;
@@ -248,11 +249,41 @@ icommandLClicked(WMWidget *w, void *data)
}
static void
browseForFile(WMWidget *self, void *clientData)
{
_Panel *panel = (_Panel*)clientData;
WMFilePanel *filePanel;
char *text, *oldprog, *newprog;
filePanel = WMGetOpenPanel(WMWidgetScreen(self));
text = WMGetTextFieldText(panel->commandT);
oldprog = wtrimspace(text);
wfree(text);
if (oldprog[0]==0 || oldprog[0]!='/') {
wfree(oldprog);
oldprog = wstrdup("/");
} else {
char *ptr = oldprog;
while (*ptr && !isspace(*ptr))
ptr++;
*ptr = 0;
}
WMSetFilePanelCanChooseDirectories(filePanel, False);
if (WMRunModalFilePanelForDirectory(filePanel, panel->parent, oldprog,
_("Select Program"), NULL)==True) {
newprog = WMGetFilePanelFileName(filePanel);
WMSetTextFieldText(panel->commandT, newprog);
updateMenuItem(panel, panel->currentItem, panel->commandT);
wfree(newprog);
}
wfree(oldprog);
}
static char*
@@ -644,11 +675,18 @@ createPanel(_Panel *p)
WMResizeWidget(panel->commandF, width, 50);
WMMoveWidget(panel->commandF, 10, 20);
WMSetFrameTitle(panel->commandF, _("Program to Run"));
WMSetFrameTitlePosition(panel->commandF, WTPAtTop);
panel->commandT = WMCreateTextField(panel->commandF);
WMResizeWidget(panel->commandT, width - 20, 20);
WMResizeWidget(panel->commandT, width - 95, 20);
WMMoveWidget(panel->commandT, 10, 20);
panel->browseB = WMCreateCommandButton(panel->commandF);
WMResizeWidget(panel->browseB, 70, 24);
WMMoveWidget(panel->browseB, width - 80, 18);
WMSetButtonText(panel->browseB, _("Browse"));
WMSetButtonAction(panel->browseB, browseForFile, panel);
WMAddNotificationObserver(dataChanged, panel,
WMTextDidChangeNotification,
panel->commandT);
@@ -779,7 +817,7 @@ createPanel(_Panel *p)
WMSetFrameTitle(panel->shortF, _("Keyboard Shortcut"));
panel->shortT = WMCreateTextField(panel->shortF);
WMResizeWidget(panel->shortT, width - 20 - 170, 20);
WMResizeWidget(panel->shortT, width - 20 - 150, 20);
WMMoveWidget(panel->shortT, 10, 20);
WMAddNotificationObserver(dataChanged, panel,
@@ -787,14 +825,14 @@ createPanel(_Panel *p)
panel->shortT);
panel->sgrabB = WMCreateCommandButton(panel->shortF);
WMResizeWidget(panel->sgrabB, 80, 24);
WMMoveWidget(panel->sgrabB, width - 90, 18);
WMResizeWidget(panel->sgrabB, 70, 24);
WMMoveWidget(panel->sgrabB, width - 80, 18);
WMSetButtonText(panel->sgrabB, _("Capture"));
WMSetButtonAction(panel->sgrabB, sgrabClicked, panel);
panel->sclearB = WMCreateCommandButton(panel->shortF);
WMResizeWidget(panel->sclearB, 80, 24);
WMMoveWidget(panel->sclearB, width - 175, 18);
WMResizeWidget(panel->sclearB, 70, 24);
WMMoveWidget(panel->sclearB, width - 155, 18);
WMSetButtonText(panel->sclearB, _("Clear"));
WMSetButtonAction(panel->sclearB, sgrabClicked, panel);

View File

@@ -100,15 +100,7 @@ dnl not used anywhere
dnl AC_FUNC_MEMCMP
AC_FUNC_VPRINTF
AC_FUNC_ALLOCA
<<<<<<< configure.ac
<<<<<<< configure.ac
AC_CHECK_FUNCS(gethostname select poll strerror strcasecmp strncasecmp setpgid atexit mallinfo vsnprintf)
=======
AC_CHECK_FUNCS(gethostname select poll strerror strcasecmp strncasecmp setpgid atexit mallinfo snprintf vsnprintf asprintf vasprintf mkstemp)
>>>>>>> 1.4
=======
AC_CHECK_FUNCS(gethostname select poll strerror strcasecmp strncasecmp setpgid atexit mallinfo mkstemp snprintf vsnprintf asprintf vasprintf)
>>>>>>> 1.15
dnl ripped from samba
@@ -183,22 +175,9 @@ AC_DEFINE_UNQUOTED(CPP_PATH, "$CPP_PATH")
dnl Checks for header files.
dnl =======================
<<<<<<< configure.ac
AC_HEADER_STDC
=======
>>>>>>> 1.4
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
<<<<<<< configure.ac
<<<<<<< configure.ac
AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h sys/time.h sys/types.h\
libintl.h sys/select.h poll.h malloc.h stdlib.h)
=======
AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h sys/time.h sys/types.h libintl.h sys/select.h poll.h malloc.h ctype.h stdlib.h string.h strings.h)
>>>>>>> 1.4
=======
AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h sys/time.h sys/types.h libintl.h sys/select.h poll.h malloc.h ctype.h string.h strings.h)
>>>>>>> 1.15

File diff suppressed because it is too large Load Diff

View File

@@ -18,9 +18,9 @@ cs.po Czech 3 Jiri Hnidek <Jiri.Hnidek@vslib.cz
no.po Norwegian Marcus Ramberg <draven@mo.himolde.no>
nl.po Dutch Roeland Mertens <roeland@zeus.rug.ac.be>
gl.po Galician Xose Vazquez <xose@arrakis.es>
fr.po French Bastien NOCERA <hadess@writeme.com>
fr.po French Bastien Nocera <hadess@hadess.net>
Jean-Francois BIGNOLLES <bignolle@grif.fr>
Hadess <hadess@infonie.fr>
Antoine Hulin <antoine.hulin@origan.fdn.org>
it.po Italian Michele Campeotto <micampe@f2s.com>
ru.po Russian Alexey Vyskubov <alexey@piter-press.ru>
Michael Sobolev <mss@transas.com>

1978
po/fr.po

File diff suppressed because it is too large Load Diff

View File

@@ -1056,6 +1056,7 @@ updateClipOptionsMenu(WMenu *menu, WDock *dock)
entry = menu->entries[++index];
entry->flags.indicator_on = dock->auto_raise_lower;
entry->clientdata = dock;
wMenuSetEnabled(menu, index, dock->lowered);
/* attract icons */
entry = menu->entries[++index];

View File

@@ -820,10 +820,19 @@ paintEntry(WMenu *menu, int index, int selected)
ih = indicator->height;
XSetClipMask(dpy, scr->copy_gc, indicator->mask);
XSetClipOrigin(dpy, scr->copy_gc, 5, y+(h-ih)/2);
if (selected)
XSetForeground(dpy, scr->copy_gc, scr->black_pixel);
else
XSetForeground(dpy, scr->copy_gc, scr->mtext_pixel);
if (selected) {
if (entry->flags.enabled) {
XSetForeground(dpy, scr->copy_gc, scr->black_pixel);
} else {
XSetForeground(dpy, scr->copy_gc, scr->dtext_pixel);
}
} else {
if (entry->flags.enabled) {
XSetForeground(dpy, scr->copy_gc, scr->mtext_pixel);
} else {
XSetForeground(dpy, scr->copy_gc, scr->dtext_pixel);
}
}
XFillRectangle(dpy, win, scr->copy_gc, 5, y+(h-ih)/2, iw, ih);
/*
XCopyArea(dpy, indicator->image, win, scr->copy_gc, 0, 0,