mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 04:48:06 +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:
@@ -33,8 +33,15 @@ Changes since version 0.80.0:
|
|||||||
manager" option in the crashing dialog panel.
|
manager" option in the crashing dialog panel.
|
||||||
- Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if
|
- Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if
|
||||||
it is defined) to overwrite the default hardcoded fallback window manager.
|
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>)
|
- Added Czech translations of documentation (Jiri Hnidek <Jiri.Hnidek@vslib.cz>)
|
||||||
- Fixed segfault with incomplete WM_CLASS specifications.
|
- 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:
|
Changes since version 0.70.0:
|
||||||
.............................
|
.............................
|
||||||
|
|||||||
14
INSTALL
14
INSTALL
@@ -40,6 +40,7 @@ SUPPORTED PLATFORMS
|
|||||||
- IBM S/390 running Linux
|
- IBM S/390 running Linux
|
||||||
- IBM S/390 running Conectiva Linux (experimental)
|
- IBM S/390 running Conectiva Linux (experimental)
|
||||||
- iBook running Darwin
|
- iBook running Darwin
|
||||||
|
- Darwin PPC / Macos X
|
||||||
- Windows NT with Cygwin/XFree86
|
- Windows NT with Cygwin/XFree86
|
||||||
- Sony PlayStation2 running Linux
|
- 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
|
These tools are NOT needed, but IF you have one or
|
||||||
more of them installed, make sure you have ALL of the following
|
more of them installed, make sure you have ALL of the following
|
||||||
with exactly these versions:
|
with exactly these versions:
|
||||||
autoconf 2.13
|
autoconf 2.52
|
||||||
automake 1.4
|
automake 1.4
|
||||||
libtool 1.3
|
libtool 1.4.2
|
||||||
If you have a different version, disable them by temporarily
|
If you have a different version, disable them by temporarily
|
||||||
renaming them to something else or uninstalling them from your
|
renaming them to something else or uninstalling them from your
|
||||||
system. If you don't develop software you don't need them,
|
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:
|
The -I flag must precede each paths, like:
|
||||||
--with-incs-from="-I/opt/headers -I/usr/local/include"
|
--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-shm
|
||||||
disable use of the MIT shared memory extension. This will slow down
|
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
|
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
|
XKB language status lock support. If you don't know what it is you
|
||||||
probably don't need it.
|
probably don't need it.
|
||||||
|
|
||||||
--enable-sound
|
|
||||||
enable support of sound effects module
|
|
||||||
|
|
||||||
--disable-xpm
|
--disable-xpm
|
||||||
disables use of the XPM library even if it is available on your
|
disables use of the XPM library even if it is available on your
|
||||||
system.
|
system.
|
||||||
|
|||||||
@@ -19,10 +19,3 @@ WindowMaker.lsm: WindowMaker.lsm.in
|
|||||||
-e "s/SIZE/$$size M/"\
|
-e "s/SIZE/$$size M/"\
|
||||||
WindowMaker.lsm.in > WindowMaker-$(VERSION).lsm
|
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`
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ Changes since wmaker 0.80.0:
|
|||||||
- fixed labels not to display '\n' as a character if multiple '\n' are passed
|
- fixed labels not to display '\n' as a character if multiple '\n' are passed
|
||||||
but just skip to the next line.
|
but just skip to the next line.
|
||||||
- better warning when importing non-digit characters in PropList Data.
|
- 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:
|
Changes since wmaker 0.70.0:
|
||||||
|
|||||||
@@ -138,19 +138,13 @@ testBox(WMScreen *scr)
|
|||||||
win = WMCreateWindow(scr, "testBox");
|
win = WMCreateWindow(scr, "testBox");
|
||||||
WMSetWindowTitle(win, "Box");
|
WMSetWindowTitle(win, "Box");
|
||||||
WMSetWindowCloseAction(win, closeAction, NULL);
|
WMSetWindowCloseAction(win, closeAction, NULL);
|
||||||
|
WMResizeWidget(win, 400, 300);
|
||||||
WMSetViewNotifySizeChanges(WMWidgetView(win), True);
|
|
||||||
|
|
||||||
box = WMCreateBox(win);
|
box = WMCreateBox(win);
|
||||||
WMSetBoxBorderWidth(box, 5);
|
WMSetBoxBorderWidth(box, 5);
|
||||||
|
WMSetViewExpandsToParent(WMWidgetView(box), 0, 0, 0, 0);
|
||||||
WMAddNotificationObserver(resizedWindow, box,
|
|
||||||
WMViewSizeDidChangeNotification,
|
|
||||||
WMWidgetView(win));
|
|
||||||
WMResizeWidget(win, 400, 300);
|
|
||||||
|
|
||||||
|
|
||||||
/* WMSetBoxHorizontal(box, True); */
|
/*WMSetBoxHorizontal(box, True);*/
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
btn = WMCreateCommandButton(box);
|
btn = WMCreateCommandButton(box);
|
||||||
WMSetButtonText(btn, "bla");
|
WMSetButtonText(btn, "bla");
|
||||||
@@ -1316,15 +1310,10 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
testFrame(scr);
|
testFrame(scr);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
testSplitView(scr);
|
testSplitView(scr);
|
||||||
|
|
||||||
testGradientButtons(scr);
|
testGradientButtons(scr);
|
||||||
|
|
||||||
|
|
||||||
testOpenFilePanel(scr);
|
testOpenFilePanel(scr);
|
||||||
|
|
||||||
testSlider(scr);
|
testSlider(scr);
|
||||||
|
|||||||
233
WINGs/wbox.c
233
WINGs/wbox.c
@@ -18,8 +18,7 @@ typedef struct W_Box {
|
|||||||
W_Class widgetClass;
|
W_Class widgetClass;
|
||||||
W_View *view;
|
W_View *view;
|
||||||
|
|
||||||
SubviewItem *subviews;
|
WMArray *subviews;
|
||||||
int subviewCount;
|
|
||||||
|
|
||||||
short borderWidth;
|
short borderWidth;
|
||||||
|
|
||||||
@@ -40,10 +39,10 @@ static void didResize(struct W_ViewDelegate*, WMView*);
|
|||||||
|
|
||||||
static W_ViewDelegate delegate = {
|
static W_ViewDelegate delegate = {
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
didResize,
|
didResize,
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -53,7 +52,7 @@ WMBox*
|
|||||||
WMCreateBox(WMWidget *parent)
|
WMCreateBox(WMWidget *parent)
|
||||||
{
|
{
|
||||||
Box *bPtr;
|
Box *bPtr;
|
||||||
|
|
||||||
bPtr = wmalloc(sizeof(Box));
|
bPtr = wmalloc(sizeof(Box));
|
||||||
memset(bPtr, 0, sizeof(Box));
|
memset(bPtr, 0, sizeof(Box));
|
||||||
|
|
||||||
@@ -65,87 +64,108 @@ WMCreateBox(WMWidget *parent)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
bPtr->view->self = bPtr;
|
bPtr->view->self = bPtr;
|
||||||
|
|
||||||
bPtr->view->delegate = &delegate;
|
bPtr->view->delegate = &delegate;
|
||||||
|
|
||||||
|
bPtr->subviews = WMCreateArrayWithDestructor(2, wfree);
|
||||||
|
|
||||||
WMCreateEventHandler(bPtr->view, StructureNotifyMask,
|
WMCreateEventHandler(bPtr->view, StructureNotifyMask,
|
||||||
handleEvents, bPtr);
|
handleEvents, bPtr);
|
||||||
|
|
||||||
WMResizeWidget(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT);
|
WMResizeWidget(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT);
|
||||||
|
|
||||||
bPtr->subviews = NULL;
|
|
||||||
bPtr->subviewCount = 0;
|
|
||||||
|
|
||||||
return bPtr;
|
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
|
static void
|
||||||
rearrange(WMBox *box)
|
rearrange(WMBox *box)
|
||||||
{
|
{
|
||||||
int i;
|
BoxData eData;
|
||||||
int x, y;
|
|
||||||
int xe, ye;
|
eData.box = box;
|
||||||
int w = 1, h = 1;
|
eData.x = eData.y = box->borderWidth;
|
||||||
int total;
|
eData.w = eData.h = 1;
|
||||||
int expands = 0;
|
eData.expands = 0;
|
||||||
|
|
||||||
x = box->borderWidth;
|
|
||||||
y = box->borderWidth;
|
|
||||||
|
|
||||||
if (box->horizontal) {
|
if (box->horizontal) {
|
||||||
ye = box->borderWidth;
|
eData.ye = box->borderWidth;
|
||||||
xe = WMWidgetWidth(box) - box->borderWidth;
|
eData.xe = WMWidgetWidth(box) - box->borderWidth;
|
||||||
h = WMWidgetHeight(box) - 2 * box->borderWidth;
|
eData.h = WMWidgetHeight(box) - 2 * box->borderWidth;
|
||||||
total = WMWidgetWidth(box) - 2 * box->borderWidth;
|
eData.total = WMWidgetWidth(box) - 2 * box->borderWidth;
|
||||||
} else {
|
} else {
|
||||||
xe = box->borderWidth;
|
eData.xe = box->borderWidth;
|
||||||
ye = WMWidgetHeight(box) - box->borderWidth;
|
eData.ye = WMWidgetHeight(box) - box->borderWidth;
|
||||||
w = WMWidgetWidth(box) - 2 * box->borderWidth;
|
eData.w = WMWidgetWidth(box) - 2 * box->borderWidth;
|
||||||
total = WMWidgetHeight(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;
|
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++) {
|
WMMapArray(box->subviews, computeExpansion, &eData);
|
||||||
if (box->horizontal) {
|
WMMapArray(box->subviews, doRearrange, &eData);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -163,21 +183,18 @@ void
|
|||||||
WMAddBoxSubview(WMBox *bPtr, WMView *view, Bool expand, Bool fill,
|
WMAddBoxSubview(WMBox *bPtr, WMView *view, Bool expand, Bool fill,
|
||||||
int minSize, int maxSize, int space)
|
int minSize, int maxSize, int space)
|
||||||
{
|
{
|
||||||
int i = bPtr->subviewCount;
|
SubviewItem *subView;
|
||||||
|
|
||||||
bPtr->subviewCount++;
|
subView = wmalloc(sizeof(SubviewItem));
|
||||||
if (!bPtr->subviews)
|
subView->view = view;
|
||||||
bPtr->subviews = wmalloc(sizeof(SubviewItem));
|
subView->minSize = minSize;
|
||||||
else
|
subView->maxSize = maxSize;
|
||||||
bPtr->subviews = wrealloc(bPtr->subviews,
|
subView->expand = expand;
|
||||||
bPtr->subviewCount*sizeof(SubviewItem));
|
subView->fill = fill;
|
||||||
bPtr->subviews[i].view = view;
|
subView->space = space;
|
||||||
bPtr->subviews[i].minSize = minSize;
|
subView->end = 0;
|
||||||
bPtr->subviews[i].maxSize = maxSize;
|
|
||||||
bPtr->subviews[i].expand = expand;
|
WMAddToArray(bPtr->subviews, subView);
|
||||||
bPtr->subviews[i].fill = fill;
|
|
||||||
bPtr->subviews[i].space = space;
|
|
||||||
bPtr->subviews[i].end = 0;
|
|
||||||
|
|
||||||
rearrange(bPtr);
|
rearrange(bPtr);
|
||||||
}
|
}
|
||||||
@@ -188,40 +205,36 @@ void
|
|||||||
WMAddBoxSubviewAtEnd(WMBox *bPtr, WMView *view, Bool expand, Bool fill,
|
WMAddBoxSubviewAtEnd(WMBox *bPtr, WMView *view, Bool expand, Bool fill,
|
||||||
int minSize, int maxSize, int space)
|
int minSize, int maxSize, int space)
|
||||||
{
|
{
|
||||||
int i = bPtr->subviewCount;
|
SubviewItem *subView;
|
||||||
|
|
||||||
bPtr->subviewCount++;
|
subView = wmalloc(sizeof(SubviewItem));
|
||||||
if (!bPtr->subviews)
|
subView->view = view;
|
||||||
bPtr->subviews = wmalloc(sizeof(SubviewItem));
|
subView->minSize = minSize;
|
||||||
else
|
subView->maxSize = maxSize;
|
||||||
bPtr->subviews = wrealloc(bPtr->subviews,
|
subView->expand = expand;
|
||||||
bPtr->subviewCount*sizeof(SubviewItem));
|
subView->fill = fill;
|
||||||
bPtr->subviews[i].view = view;
|
subView->space = space;
|
||||||
bPtr->subviews[i].minSize = minSize;
|
subView->end = 1;
|
||||||
bPtr->subviews[i].maxSize = maxSize;
|
|
||||||
bPtr->subviews[i].expand = expand;
|
WMAddToArray(bPtr->subviews, subView);
|
||||||
bPtr->subviews[i].fill = fill;
|
|
||||||
bPtr->subviews[i].space = space;
|
|
||||||
bPtr->subviews[i].end = 1;
|
|
||||||
|
|
||||||
rearrange(bPtr);
|
rearrange(bPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
matchView(void *item, void *cdata)
|
||||||
|
{
|
||||||
|
return (((SubviewItem*)item)->view == (WMView*)cdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
WMRemoveBoxSubview(WMBox *bPtr, WMView *view)
|
WMRemoveBoxSubview(WMBox *bPtr, WMView *view)
|
||||||
{
|
{
|
||||||
int i;
|
if (WMRemoveFromArrayMatching(bPtr->subviews, matchView, view)) {
|
||||||
|
rearrange(bPtr);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
rearrange(bPtr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -241,6 +254,7 @@ static void
|
|||||||
destroyBox(Box *bPtr)
|
destroyBox(Box *bPtr)
|
||||||
{
|
{
|
||||||
WMRemoveNotificationObserver(bPtr);
|
WMRemoveNotificationObserver(bPtr);
|
||||||
|
WMFreeArray(bPtr->subviews);
|
||||||
wfree(bPtr);
|
wfree(bPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,3 +284,4 @@ handleEvents(XEvent *event, void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -449,7 +449,7 @@ destroyView(W_View *view)
|
|||||||
|
|
||||||
WMRemoveNotificationObserver(view);
|
WMRemoveNotificationObserver(view);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (view->dragSourceProcs)
|
if (view->dragSourceProcs)
|
||||||
wfree(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));
|
WMSize size = WMGetViewSize((WMView*)WMGetNotificationObject(notif));
|
||||||
WMView *view = (WMView*)self;
|
WMView *view = (WMView*)self;
|
||||||
@@ -745,7 +744,7 @@ static void resizedParent(void *self, WMNotification *notif)
|
|||||||
size.height - (view->topOffs + view->bottomOffs));
|
size.height - (view->topOffs + view->bottomOffs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
WMSetViewExpandsToParent(WMView *view, int leftOffs, int topOffs,
|
WMSetViewExpandsToParent(WMView *view, int leftOffs, int topOffs,
|
||||||
int rightOffs, int bottomOffs)
|
int rightOffs, int bottomOffs)
|
||||||
@@ -766,3 +765,5 @@ WMSetViewExpandsToParent(WMView *view, int leftOffs, int topOffs,
|
|||||||
W_ResizeView(view, size.width - (leftOffs + rightOffs),
|
W_ResizeView(view, size.width - (leftOffs + rightOffs),
|
||||||
size.height - (topOffs + bottomOffs));
|
size.height - (topOffs + bottomOffs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -76,8 +76,9 @@ typedef struct _Panel {
|
|||||||
|
|
||||||
WMFrame *commandF;
|
WMFrame *commandF;
|
||||||
WMTextField *commandT; /* command to run */
|
WMTextField *commandT; /* command to run */
|
||||||
|
WMButton *browseB;
|
||||||
WMButton *xtermC; /* inside xterm? */
|
WMButton *xtermC; /* inside xterm? */
|
||||||
|
|
||||||
WMFrame *pathF;
|
WMFrame *pathF;
|
||||||
WMTextField *pathT;
|
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*
|
static char*
|
||||||
@@ -644,11 +675,18 @@ createPanel(_Panel *p)
|
|||||||
WMResizeWidget(panel->commandF, width, 50);
|
WMResizeWidget(panel->commandF, width, 50);
|
||||||
WMMoveWidget(panel->commandF, 10, 20);
|
WMMoveWidget(panel->commandF, 10, 20);
|
||||||
WMSetFrameTitle(panel->commandF, _("Program to Run"));
|
WMSetFrameTitle(panel->commandF, _("Program to Run"));
|
||||||
|
WMSetFrameTitlePosition(panel->commandF, WTPAtTop);
|
||||||
|
|
||||||
panel->commandT = WMCreateTextField(panel->commandF);
|
panel->commandT = WMCreateTextField(panel->commandF);
|
||||||
WMResizeWidget(panel->commandT, width - 20, 20);
|
WMResizeWidget(panel->commandT, width - 95, 20);
|
||||||
WMMoveWidget(panel->commandT, 10, 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,
|
WMAddNotificationObserver(dataChanged, panel,
|
||||||
WMTextDidChangeNotification,
|
WMTextDidChangeNotification,
|
||||||
panel->commandT);
|
panel->commandT);
|
||||||
@@ -779,7 +817,7 @@ createPanel(_Panel *p)
|
|||||||
WMSetFrameTitle(panel->shortF, _("Keyboard Shortcut"));
|
WMSetFrameTitle(panel->shortF, _("Keyboard Shortcut"));
|
||||||
|
|
||||||
panel->shortT = WMCreateTextField(panel->shortF);
|
panel->shortT = WMCreateTextField(panel->shortF);
|
||||||
WMResizeWidget(panel->shortT, width - 20 - 170, 20);
|
WMResizeWidget(panel->shortT, width - 20 - 150, 20);
|
||||||
WMMoveWidget(panel->shortT, 10, 20);
|
WMMoveWidget(panel->shortT, 10, 20);
|
||||||
|
|
||||||
WMAddNotificationObserver(dataChanged, panel,
|
WMAddNotificationObserver(dataChanged, panel,
|
||||||
@@ -787,14 +825,14 @@ createPanel(_Panel *p)
|
|||||||
panel->shortT);
|
panel->shortT);
|
||||||
|
|
||||||
panel->sgrabB = WMCreateCommandButton(panel->shortF);
|
panel->sgrabB = WMCreateCommandButton(panel->shortF);
|
||||||
WMResizeWidget(panel->sgrabB, 80, 24);
|
WMResizeWidget(panel->sgrabB, 70, 24);
|
||||||
WMMoveWidget(panel->sgrabB, width - 90, 18);
|
WMMoveWidget(panel->sgrabB, width - 80, 18);
|
||||||
WMSetButtonText(panel->sgrabB, _("Capture"));
|
WMSetButtonText(panel->sgrabB, _("Capture"));
|
||||||
WMSetButtonAction(panel->sgrabB, sgrabClicked, panel);
|
WMSetButtonAction(panel->sgrabB, sgrabClicked, panel);
|
||||||
|
|
||||||
panel->sclearB = WMCreateCommandButton(panel->shortF);
|
panel->sclearB = WMCreateCommandButton(panel->shortF);
|
||||||
WMResizeWidget(panel->sclearB, 80, 24);
|
WMResizeWidget(panel->sclearB, 70, 24);
|
||||||
WMMoveWidget(panel->sclearB, width - 175, 18);
|
WMMoveWidget(panel->sclearB, width - 155, 18);
|
||||||
WMSetButtonText(panel->sclearB, _("Clear"));
|
WMSetButtonText(panel->sclearB, _("Clear"));
|
||||||
WMSetButtonAction(panel->sclearB, sgrabClicked, panel);
|
WMSetButtonAction(panel->sclearB, sgrabClicked, panel);
|
||||||
|
|
||||||
|
|||||||
21
configure.ac
21
configure.ac
@@ -100,15 +100,7 @@ dnl not used anywhere
|
|||||||
dnl AC_FUNC_MEMCMP
|
dnl AC_FUNC_MEMCMP
|
||||||
AC_FUNC_VPRINTF
|
AC_FUNC_VPRINTF
|
||||||
AC_FUNC_ALLOCA
|
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)
|
AC_CHECK_FUNCS(gethostname select poll strerror strcasecmp strncasecmp setpgid atexit mallinfo mkstemp snprintf vsnprintf asprintf vasprintf)
|
||||||
>>>>>>> 1.15
|
|
||||||
|
|
||||||
|
|
||||||
dnl ripped from samba
|
dnl ripped from samba
|
||||||
@@ -183,22 +175,9 @@ AC_DEFINE_UNQUOTED(CPP_PATH, "$CPP_PATH")
|
|||||||
|
|
||||||
dnl Checks for header files.
|
dnl Checks for header files.
|
||||||
dnl =======================
|
dnl =======================
|
||||||
<<<<<<< configure.ac
|
|
||||||
AC_HEADER_STDC
|
|
||||||
=======
|
|
||||||
>>>>>>> 1.4
|
|
||||||
AC_HEADER_SYS_WAIT
|
AC_HEADER_SYS_WAIT
|
||||||
AC_HEADER_TIME
|
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)
|
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
1008
configure.in
1008
configure.in
File diff suppressed because it is too large
Load Diff
@@ -18,9 +18,9 @@ cs.po Czech 3 Jiri Hnidek <Jiri.Hnidek@vslib.cz
|
|||||||
no.po Norwegian Marcus Ramberg <draven@mo.himolde.no>
|
no.po Norwegian Marcus Ramberg <draven@mo.himolde.no>
|
||||||
nl.po Dutch Roeland Mertens <roeland@zeus.rug.ac.be>
|
nl.po Dutch Roeland Mertens <roeland@zeus.rug.ac.be>
|
||||||
gl.po Galician Xose Vazquez <xose@arrakis.es>
|
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>
|
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>
|
it.po Italian Michele Campeotto <micampe@f2s.com>
|
||||||
ru.po Russian Alexey Vyskubov <alexey@piter-press.ru>
|
ru.po Russian Alexey Vyskubov <alexey@piter-press.ru>
|
||||||
Michael Sobolev <mss@transas.com>
|
Michael Sobolev <mss@transas.com>
|
||||||
|
|||||||
@@ -1056,6 +1056,7 @@ updateClipOptionsMenu(WMenu *menu, WDock *dock)
|
|||||||
entry = menu->entries[++index];
|
entry = menu->entries[++index];
|
||||||
entry->flags.indicator_on = dock->auto_raise_lower;
|
entry->flags.indicator_on = dock->auto_raise_lower;
|
||||||
entry->clientdata = dock;
|
entry->clientdata = dock;
|
||||||
|
wMenuSetEnabled(menu, index, dock->lowered);
|
||||||
|
|
||||||
/* attract icons */
|
/* attract icons */
|
||||||
entry = menu->entries[++index];
|
entry = menu->entries[++index];
|
||||||
|
|||||||
17
src/menu.c
17
src/menu.c
@@ -820,10 +820,19 @@ paintEntry(WMenu *menu, int index, int selected)
|
|||||||
ih = indicator->height;
|
ih = indicator->height;
|
||||||
XSetClipMask(dpy, scr->copy_gc, indicator->mask);
|
XSetClipMask(dpy, scr->copy_gc, indicator->mask);
|
||||||
XSetClipOrigin(dpy, scr->copy_gc, 5, y+(h-ih)/2);
|
XSetClipOrigin(dpy, scr->copy_gc, 5, y+(h-ih)/2);
|
||||||
if (selected)
|
if (selected) {
|
||||||
XSetForeground(dpy, scr->copy_gc, scr->black_pixel);
|
if (entry->flags.enabled) {
|
||||||
else
|
XSetForeground(dpy, scr->copy_gc, scr->black_pixel);
|
||||||
XSetForeground(dpy, scr->copy_gc, scr->mtext_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);
|
XFillRectangle(dpy, win, scr->copy_gc, 5, y+(h-ih)/2, iw, ih);
|
||||||
/*
|
/*
|
||||||
XCopyArea(dpy, indicator->image, win, scr->copy_gc, 0, 0,
|
XCopyArea(dpy, indicator->image, win, scr->copy_gc, 0, 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user