mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 20:38:08 +01:00
- Now when Window Maker calls wmsetbg to set the background, it will pass the
correct switch to it, depending on the value of the DisableDithering option. - Replaced some functions with macros in WINGs (wmkpoint(), wmksize() and wmkrange()). They're less expensive to call this way. - Fixed a memleak in the info panel.
This commit is contained in:
@@ -11,6 +11,10 @@ Changes since version 0.64.0:
|
|||||||
- fixed bug with multibyte text on libc5 systems (Osamu Ajiki <osam-a@astroarts.co.jp>)
|
- fixed bug with multibyte text on libc5 systems (Osamu Ajiki <osam-a@astroarts.co.jp>)
|
||||||
- fixed race conditions on signal handlers
|
- fixed race conditions on signal handlers
|
||||||
- SIGINT will gently exit, SIGTERM will not be handled
|
- SIGINT will gently exit, SIGTERM will not be handled
|
||||||
|
- When Window Maker calls wmsetbg to set the background, it will consider the
|
||||||
|
value of the DisableDithering option and pass the right switch to wmsetbg.
|
||||||
|
- fixed a memleak in the dialog panels.
|
||||||
|
|
||||||
|
|
||||||
Changes since version 0.63.1:
|
Changes since version 0.63.1:
|
||||||
.............................
|
.............................
|
||||||
|
|||||||
@@ -11,13 +11,14 @@ Changes since wmaker 0.64.0:
|
|||||||
- fixed mem leak that occured when input handling was done with poll
|
- fixed mem leak that occured when input handling was done with poll
|
||||||
- simpler and more straightforward event handling for timer, idle, input
|
- simpler and more straightforward event handling for timer, idle, input
|
||||||
and X events (also fixed some problems the old handling logic had)
|
and X events (also fixed some problems the old handling logic had)
|
||||||
- moved timer, dile and input handler definitions and prototypes from
|
- moved timer, idle and input handler definitions and prototypes from
|
||||||
WINGs.h to WUtil.h because they're not GUI related.
|
WINGs.h to WUtil.h because they're not GUI related.
|
||||||
- better and more robust handling of events (timer, idle, input, X) in
|
- better and more robust handling of events (timer, idle, input, X) in
|
||||||
WMMaskEvent(). Also fixed a bug where input and timer events were not
|
WMMaskEvent(). Also fixed a bug where input and timer events were not
|
||||||
treated for undefined periods of time under some circumstances.
|
treated for undefined periods of time under some circumstances.
|
||||||
- fixed secure textfields not to allow text selection, to avoid compromising
|
- fixed secure textfields not to allow text selection, to avoid compromising
|
||||||
sensitive information by pasting it to a terminal.
|
sensitive information by pasting it to a terminal.
|
||||||
|
- replaced wmkrange(), wmkpoint() and wmksize() functions with macros.
|
||||||
|
|
||||||
|
|
||||||
changes since wmaker 0.63.1:
|
changes since wmaker 0.63.1:
|
||||||
|
|||||||
@@ -36,8 +36,12 @@ typedef struct {
|
|||||||
WMSize size;
|
WMSize size;
|
||||||
} WMRect;
|
} WMRect;
|
||||||
|
|
||||||
|
#define wmksize(width, height) (WMSize){(width), (height)}
|
||||||
|
#define wmkpoint(x, y) (WMPoint){(x), (y)}
|
||||||
|
#define wmkrect(pos, size) (WMRect){(pos), (size)}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* WMRange was moved in WUtil.h */
|
|
||||||
|
|
||||||
#define ClientMessageMask (1L<<30)
|
#define ClientMessageMask (1L<<30)
|
||||||
|
|
||||||
@@ -573,15 +577,6 @@ typedef struct W_DragDestinationProcs {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ...................................................................... */
|
|
||||||
|
|
||||||
|
|
||||||
WMRange wmkrange(int start, int count);
|
|
||||||
|
|
||||||
WMPoint wmkpoint(int x, int y);
|
|
||||||
|
|
||||||
WMSize wmksize(unsigned int width, unsigned int height);
|
|
||||||
|
|
||||||
|
|
||||||
/* ....................................................................... */
|
/* ....................................................................... */
|
||||||
|
|
||||||
|
|||||||
@@ -149,12 +149,13 @@ typedef int WMMatchDataProc(void *item, void *cdata);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int position;
|
int position;
|
||||||
int count;
|
int count;
|
||||||
} WMRange;
|
} WMRange;
|
||||||
|
|
||||||
|
#define wmkrange(position, count) (WMRange){(position), (count)}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* DO NOT ACCESS THE CONTENTS OF THIS STRUCT */
|
/* DO NOT ACCESS THE CONTENTS OF THIS STRUCT */
|
||||||
@@ -474,7 +475,6 @@ void WMPutInBag(WMBag *bag, void *item);
|
|||||||
/* insert will increment the index of elements after it by 1 */
|
/* insert will increment the index of elements after it by 1 */
|
||||||
void WMInsertInBag(WMBag *bag, int index, void *item);
|
void WMInsertInBag(WMBag *bag, int index, void *item);
|
||||||
|
|
||||||
/* this is slow */
|
|
||||||
/* erase will remove the element from the bag,
|
/* erase will remove the element from the bag,
|
||||||
* but will keep the index of the other elements unchanged */
|
* but will keep the index of the other elements unchanged */
|
||||||
int WMEraseFromBag(WMBag *bag, int index);
|
int WMEraseFromBag(WMBag *bag, int index);
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ static WMBag *idleHandler=NULL;
|
|||||||
|
|
||||||
static WMBag *inputHandler=NULL;
|
static WMBag *inputHandler=NULL;
|
||||||
|
|
||||||
// this should go to wevent.c and wutil.c too
|
|
||||||
#define timerPending() (timerHandler)
|
#define timerPending() (timerHandler)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -261,6 +261,7 @@ WMIsHostEqualToHost(WMHost* hPtr, WMHost* aPtr)
|
|||||||
|
|
||||||
for (i=0; i<WMGetArrayItemCount(aPtr->addresses); i++) {
|
for (i=0; i<WMGetArrayItemCount(aPtr->addresses); i++) {
|
||||||
adr1 = WMGetFromArray(aPtr->addresses, i);
|
adr1 = WMGetFromArray(aPtr->addresses, i);
|
||||||
|
// use WMFindInArray here --Dan
|
||||||
for (j=0; j<WMGetArrayItemCount(hPtr->addresses); j++) {
|
for (j=0; j<WMGetArrayItemCount(hPtr->addresses); j++) {
|
||||||
adr2 = WMGetFromArray(hPtr->addresses, j);
|
adr2 = WMGetFromArray(hPtr->addresses, j);
|
||||||
if (strcmp(adr1, adr2)==0)
|
if (strcmp(adr1, adr2)==0)
|
||||||
|
|||||||
@@ -444,16 +444,6 @@ WMNextEvent(Display *dpy, XEvent *event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Is this comment still valid?
|
|
||||||
* waitForEvent seems now to understand masked events. -Dan
|
|
||||||
*
|
|
||||||
* Cant use this because XPending() will make waitForEvent
|
|
||||||
* return even if the event in the queue is not what we want,
|
|
||||||
* and if we block until some new event arrives from the
|
|
||||||
* server, other events already in the queue (like Expose)
|
|
||||||
* will be deferred.
|
|
||||||
*/
|
|
||||||
void
|
void
|
||||||
WMMaskEvent(Display *dpy, long mask, XEvent *event)
|
WMMaskEvent(Display *dpy, long mask, XEvent *event)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -316,42 +316,5 @@ W_PaintTextAndImage(W_View *view, int wrap, GC textGC, W_Font *font,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
WMRange
|
|
||||||
wmkrange(int start, int count)
|
|
||||||
{
|
|
||||||
WMRange range;
|
|
||||||
|
|
||||||
range.position = start;
|
|
||||||
range.count = count;
|
|
||||||
|
|
||||||
return range;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
WMPoint
|
|
||||||
wmkpoint(int x, int y)
|
|
||||||
{
|
|
||||||
WMPoint point;
|
|
||||||
|
|
||||||
point.x = x;
|
|
||||||
point.y = y;
|
|
||||||
|
|
||||||
return point;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
WMSize
|
|
||||||
wmksize(unsigned int width, unsigned int height)
|
|
||||||
{
|
|
||||||
WMSize size;
|
|
||||||
|
|
||||||
size.width = width;
|
|
||||||
size.height = height;
|
|
||||||
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3134,18 +3134,21 @@ setWorkspaceSpecificBack(WScreen *scr, WDefaultEntry *entry, proplist_t value,
|
|||||||
if (close(filedes[1]) < 0)
|
if (close(filedes[1]) < 0)
|
||||||
wsyserror("could not close pipe");
|
wsyserror("could not close pipe");
|
||||||
|
|
||||||
} else if (pid == 0) {
|
} else if (pid == 0) {
|
||||||
|
char *dither;
|
||||||
|
|
||||||
SetupEnvironment(scr);
|
SetupEnvironment(scr);
|
||||||
|
|
||||||
if (close(0) < 0)
|
if (close(0) < 0)
|
||||||
wsyserror("could not close pipe");
|
wsyserror("could not close pipe");
|
||||||
if (dup(filedes[0]) < 0) {
|
if (dup(filedes[0]) < 0) {
|
||||||
wsyserror("dup() failed:can't set workspace specific background image");
|
wsyserror("dup() failed:can't set workspace specific background image");
|
||||||
}
|
}
|
||||||
|
dither = wPreferences.no_dithering ? "-m" : "-d";
|
||||||
if (wPreferences.smooth_workspace_back)
|
if (wPreferences.smooth_workspace_back)
|
||||||
execlp("wmsetbg", "wmsetbg", "-helper", "-S", "-d", NULL);
|
execlp("wmsetbg", "wmsetbg", "-helper", "-S", dither, NULL);
|
||||||
else
|
else
|
||||||
execlp("wmsetbg", "wmsetbg", "-helper", "-d", NULL);
|
execlp("wmsetbg", "wmsetbg", "-helper", dither, NULL);
|
||||||
wsyserror("could not execute wmsetbg");
|
wsyserror("could not execute wmsetbg");
|
||||||
exit(1);
|
exit(1);
|
||||||
} else {
|
} else {
|
||||||
@@ -3209,15 +3212,17 @@ setWorkspaceBack(WScreen *scr, WDefaultEntry *entry, proplist_t value,
|
|||||||
}
|
}
|
||||||
} else if (PLGetNumberOfElements(value) > 0) {
|
} else if (PLGetNumberOfElements(value) > 0) {
|
||||||
char *command;
|
char *command;
|
||||||
char *text;
|
char *text;
|
||||||
|
char *dither;
|
||||||
|
|
||||||
SetupEnvironment(scr);
|
SetupEnvironment(scr);
|
||||||
text = PLGetDescription(value);
|
text = PLGetDescription(value);
|
||||||
command = wmalloc(strlen(text)+40);
|
command = wmalloc(strlen(text)+40);
|
||||||
|
dither = wPreferences.no_dithering ? "-m" : "-d";
|
||||||
if (wPreferences.smooth_workspace_back)
|
if (wPreferences.smooth_workspace_back)
|
||||||
sprintf(command, "wmsetbg -d -S -p '%s' &", text);
|
sprintf(command, "wmsetbg %s -S -p '%s' &", dither, text);
|
||||||
else
|
else
|
||||||
sprintf(command, "wmsetbg -d -p '%s' &", text);
|
sprintf(command, "wmsetbg %s -p '%s' &", dither, text);
|
||||||
wfree(text);
|
wfree(text);
|
||||||
system(command);
|
system(command);
|
||||||
wfree(command);
|
wfree(command);
|
||||||
|
|||||||
@@ -808,6 +808,9 @@ destroyInfoPanel(WCoreWindow *foo, void *data, XEvent *event)
|
|||||||
if (thePanel->oldPix) {
|
if (thePanel->oldPix) {
|
||||||
WMReleasePixmap(thePanel->oldPix);
|
WMReleasePixmap(thePanel->oldPix);
|
||||||
}
|
}
|
||||||
|
if (thePanel->oldFont) {
|
||||||
|
WMReleaseFont(thePanel->oldFont);
|
||||||
|
}
|
||||||
if (thePanel->icon) {
|
if (thePanel->icon) {
|
||||||
RDestroyImage(thePanel->icon);
|
RDestroyImage(thePanel->icon);
|
||||||
}
|
}
|
||||||
@@ -1068,8 +1071,8 @@ handleLogoPush(XEvent *event, void *data)
|
|||||||
"WHAT YOU SAY??",
|
"WHAT YOU SAY??",
|
||||||
"WE GET SIGNAL",
|
"WE GET SIGNAL",
|
||||||
"SOMEBODY SET UP US THE BOMB",
|
"SOMEBODY SET UP US THE BOMB",
|
||||||
"ALL YOUR BASE ARE BELONG TO US!"
|
"ALL YOUR BASE ARE BELONG TO US!",
|
||||||
|
"Oh My God!!! Larry is back!"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user