mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 20:38:08 +01:00
- Fixed focus handling for windows that set WM_HINTS.take_focus = False.
- Misc fixes. - Improved a bit the python wrapper. - Build po files before 'make install'
This commit is contained in:
@@ -39,6 +39,7 @@ Changes since version 0.80.1:
|
|||||||
- Added a check that only %d is used in a font specification in WMGLOBAL and at
|
- Added a check that only %d is used in a font specification in WMGLOBAL and at
|
||||||
most once for each font in a fontset (eliminates a possible security exploit)
|
most once for each font in a fontset (eliminates a possible security exploit)
|
||||||
- Added fontpanel callback
|
- Added fontpanel callback
|
||||||
|
- Fixed focus handling for windows that set WM_HINTS.take_focus = False.
|
||||||
|
|
||||||
|
|
||||||
Changes since version 0.80.0:
|
Changes since version 0.80.0:
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ Changes since wmaker 0.80.1:
|
|||||||
only a reference to the internal color, which you shouldn't release
|
only a reference to the internal color, which you shouldn't release
|
||||||
- Added wstrndup()
|
- Added wstrndup()
|
||||||
- Added WMGetFontName()
|
- Added WMGetFontName()
|
||||||
|
- Added fontpanel callback
|
||||||
|
|
||||||
|
|
||||||
Changes since wmaker 0.80.0:
|
Changes since wmaker 0.80.0:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ CATALOGS = @WINGSMOFILES@
|
|||||||
|
|
||||||
CLEANFILES = $(CATALOGS) WINGs.pot
|
CLEANFILES = $(CATALOGS) WINGs.pot
|
||||||
|
|
||||||
EXTRA_DIST = cs.po de.po sk.po fr.po
|
EXTRA_DIST = cs.po de.po fr.po sk.po
|
||||||
|
|
||||||
POTFILES = \
|
POTFILES = \
|
||||||
$(top_builddir)/WINGs/connection.c \
|
$(top_builddir)/WINGs/connection.c \
|
||||||
@@ -27,6 +27,8 @@ SUFFIXES = .po .mo
|
|||||||
msgfmt -o $@ $<
|
msgfmt -o $@ $<
|
||||||
|
|
||||||
|
|
||||||
|
all-local: $(CATALOGS)
|
||||||
|
|
||||||
WINGs.pot: $(POTFILES)
|
WINGs.pot: $(POTFILES)
|
||||||
xgettext --default-domain=WINGs \
|
xgettext --default-domain=WINGs \
|
||||||
--add-comments --keyword=_ $(POTFILES)
|
--add-comments --keyword=_ $(POTFILES)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
all: WINGs.c
|
all: WINGs.c
|
||||||
python setup.py build
|
python setup.py build
|
||||||
ln -s `find build/ -name wings.so` .
|
ln -sf `find build/ -name wings.so` .
|
||||||
|
|
||||||
install: WINGs.c
|
install: WINGs.c
|
||||||
python setup.py install
|
python setup.py install
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// This cleans up the char ** array we mallocd before the function call
|
// This cleans up the char ** array we malloc-ed before the function call
|
||||||
%typemap(python, freearg) char ** {
|
%typemap(python, freearg) char ** {
|
||||||
wfree($1);
|
wfree($1);
|
||||||
}
|
}
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
$1 = PyFile_AsFile($input);
|
$1 = PyFile_AsFile($input);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* These are for freeing the return of functions that need to be freed
|
/* These are for free-ing the return of functions that need to be freed
|
||||||
* before returning control to python. */
|
* before returning control to python. */
|
||||||
%typemap(python, ret) char* WMGetTextFieldText { wfree($1); };
|
%typemap(python, ret) char* WMGetTextFieldText { wfree($1); };
|
||||||
|
|
||||||
@@ -173,6 +173,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//%rename WMScreenMainLoop _WMScreenMainLoop;
|
//%rename WMScreenMainLoop _WMScreenMainLoop;
|
||||||
|
//%rename(_WMScreenMainLoop) WMScreenMainLoop;
|
||||||
//%rename WMRunModalLoop _WMRunModalLoop;
|
//%rename WMRunModalLoop _WMRunModalLoop;
|
||||||
|
|
||||||
|
|
||||||
@@ -529,14 +530,34 @@
|
|||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
/* ignore structures we will not use */
|
||||||
|
%ignore ConnectionDelegate;
|
||||||
|
|
||||||
|
/* ignore functions we don't need */
|
||||||
|
// should we ignore vararg functions, or just convert them to functions with
|
||||||
|
// a fixed number of parameters?
|
||||||
|
%varargs(char*) wmessage;
|
||||||
|
//%ignore wmessage;
|
||||||
|
%ignore wwarning;
|
||||||
|
%ignore wfatal;
|
||||||
|
%ignore wsyserror;
|
||||||
|
%ignore wsyserrorwithcode;
|
||||||
|
%ignore WMCreatePLArray;
|
||||||
|
%ignore WMCreatePLDictionary;
|
||||||
|
|
||||||
%apply int *INPUT { int *argc };
|
%apply int *INPUT { int *argc };
|
||||||
|
|
||||||
#define Bool int
|
#define Bool int
|
||||||
|
|
||||||
%include "WINGs/WUtil.h"
|
%include "WINGs/WUtil.h"
|
||||||
|
|
||||||
|
/* ignore structures we will not use */
|
||||||
|
|
||||||
|
/* ignore functions we don't need */
|
||||||
|
|
||||||
%include "WINGs/WINGs.h"
|
%include "WINGs/WINGs.h"
|
||||||
|
|
||||||
|
|
||||||
%{
|
%{
|
||||||
void
|
void
|
||||||
WHandleEvents()
|
WHandleEvents()
|
||||||
@@ -558,6 +579,7 @@ WHandleEvents()
|
|||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
/* rewrite functions originally defined as macros */
|
/* rewrite functions originally defined as macros */
|
||||||
%inline %{
|
%inline %{
|
||||||
#undef WMDuplicateArray
|
#undef WMDuplicateArray
|
||||||
|
|||||||
@@ -2,23 +2,27 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
import wings
|
import wings
|
||||||
import exceptions
|
from exceptions import Exception, StandardError
|
||||||
from types import *
|
from types import *
|
||||||
|
|
||||||
|
|
||||||
|
# Some useful constants
|
||||||
|
|
||||||
|
False = 0
|
||||||
|
True = 1
|
||||||
|
|
||||||
# check about None as action for buttonAction/windowCloseAction ...
|
# check about None as action for buttonAction/windowCloseAction ...
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Exceptions
|
# Exceptions
|
||||||
################################################################################
|
################################################################################
|
||||||
class Error(exceptions.Exception):
|
class Error(StandardError):
|
||||||
def __init__(self, msg):
|
pass
|
||||||
self.msg = msg
|
|
||||||
def __str__(self):
|
del Exception, StandardError
|
||||||
return self.msg
|
|
||||||
__repr__ = __str__
|
|
||||||
|
|
||||||
class WMTimer:
|
class WMTimer:
|
||||||
def __init__(self, milliseconds, callback, cdata=None, persistent=0):
|
def __init__(self, milliseconds, callback, cdata=None, persistent=False):
|
||||||
if persistent:
|
if persistent:
|
||||||
self._o = wings.pyWMAddPersistentTimerHandler(milliseconds, (callback, cdata))
|
self._o = wings.pyWMAddPersistentTimerHandler(milliseconds, (callback, cdata))
|
||||||
else:
|
else:
|
||||||
@@ -30,15 +34,17 @@ class WMTimer:
|
|||||||
|
|
||||||
class WMPersistentTimer(WMTimer):
|
class WMPersistentTimer(WMTimer):
|
||||||
def __init__(self, milliseconds, callback, cdata=None):
|
def __init__(self, milliseconds, callback, cdata=None):
|
||||||
WMTimer.__init__(self, milliseconds, callback, cdata, persistent=1)
|
WMTimer.__init__(self, milliseconds, callback, cdata, persistent=True)
|
||||||
|
|
||||||
|
|
||||||
class WMScreen:
|
class WMScreen:
|
||||||
__readonly = ('display', 'width', 'height', 'depth')
|
__readonly = ('display', 'width', 'height', 'depth')
|
||||||
|
|
||||||
def __init__(self, appname, display="", simpleapp=0):
|
def __init__(self, appname, display="", simpleapp=False):
|
||||||
wings.WMInitializeApplication(appname, len(sys.argv), sys.argv)
|
wings.WMInitializeApplication(appname, len(sys.argv), sys.argv)
|
||||||
self._o = wings.pyWMOpenScreen(display, simpleapp)
|
self._o = wings.pyWMOpenScreen(display, simpleapp)
|
||||||
|
if not self._o:
|
||||||
|
raise Error, "Cannot open display %s" % display
|
||||||
self.__dict__['display'] = wings.WMScreenDisplay(self._o)
|
self.__dict__['display'] = wings.WMScreenDisplay(self._o)
|
||||||
self.__dict__['width'] = wings.WMScreenWidth(self._o)
|
self.__dict__['width'] = wings.WMScreenWidth(self._o)
|
||||||
self.__dict__['height'] = wings.WMScreenHeight(self._o)
|
self.__dict__['height'] = wings.WMScreenHeight(self._o)
|
||||||
@@ -429,7 +435,7 @@ class WMTextField(WMWidget):
|
|||||||
wings.WMSetTextFieldFont(self._o, font)
|
wings.WMSetTextFieldFont(self._o, font)
|
||||||
|
|
||||||
def font(self):
|
def font(self):
|
||||||
return wings.WMGettextFieldFont(self._o)
|
return wings.WMGetTextFieldFont(self._o)
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -509,7 +515,7 @@ if __name__ == "__main__":
|
|||||||
win2.hide()
|
win2.hide()
|
||||||
|
|
||||||
def dc(object, data, action):
|
def dc(object, data, action):
|
||||||
print "didChnage:", object, data, action
|
print "didChange:", object, data, action
|
||||||
|
|
||||||
def dbe(object, data, action):
|
def dbe(object, data, action):
|
||||||
print "didBeginEditing:", object, data, action
|
print "didBeginEditing:", object, data, action
|
||||||
@@ -520,7 +526,7 @@ if __name__ == "__main__":
|
|||||||
object.setFocusTo(txt2)
|
object.setFocusTo(txt2)
|
||||||
else:
|
else:
|
||||||
object.setFocusTo(txt)
|
object.setFocusTo(txt)
|
||||||
print "didEndEditing:", object, data, action, txt.text()
|
print "didEndEditing:", object, data, action, object.text()
|
||||||
|
|
||||||
def tcb(one):
|
def tcb(one):
|
||||||
old = list.selectedItemRow()
|
old = list.selectedItemRow()
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ wings = os.popen("get-wings-flags --cflags", "r")
|
|||||||
lines = [x.strip() for x in wings.readlines()]
|
lines = [x.strip() for x in wings.readlines()]
|
||||||
flags = reduce(lambda x,y: x+y, [x.split() for x in lines if x])
|
flags = reduce(lambda x,y: x+y, [x.split() for x in lines if x])
|
||||||
include_dirs = [x[2:] for x in flags]
|
include_dirs = [x[2:] for x in flags]
|
||||||
|
#include_dirs += [".."]
|
||||||
wings.close()
|
wings.close()
|
||||||
|
|
||||||
## Get the library dirs
|
## Get the library dirs
|
||||||
@@ -18,6 +19,7 @@ wings = os.popen("get-wings-flags --ldflags", "r")
|
|||||||
lines = [x.strip() for x in wings.readlines()]
|
lines = [x.strip() for x in wings.readlines()]
|
||||||
flags = reduce(lambda x,y: x+y, [x.split() for x in lines if x])
|
flags = reduce(lambda x,y: x+y, [x.split() for x in lines if x])
|
||||||
library_dirs = [x[2:] for x in flags]
|
library_dirs = [x[2:] for x in flags]
|
||||||
|
#library_dirs += [".."]
|
||||||
wings.close()
|
wings.close()
|
||||||
|
|
||||||
## Get the libraries
|
## Get the libraries
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ if __name__ == "__main__":
|
|||||||
win2.hide()
|
win2.hide()
|
||||||
|
|
||||||
def dc(object, data, action):
|
def dc(object, data, action):
|
||||||
print "didChnage:", object, data, action
|
print "didChange:", object, data, action
|
||||||
|
|
||||||
def dbe(object, data, action):
|
def dbe(object, data, action):
|
||||||
print "didBeginEditing:", object, data, action
|
print "didBeginEditing:", object, data, action
|
||||||
@@ -35,7 +35,7 @@ if __name__ == "__main__":
|
|||||||
object.setFocusTo(txt2)
|
object.setFocusTo(txt2)
|
||||||
else:
|
else:
|
||||||
object.setFocusTo(txt)
|
object.setFocusTo(txt)
|
||||||
print "didEndEditing:", object, data, action, txt.text()
|
print "didEndEditing:", object, data, action, object.text()
|
||||||
|
|
||||||
def tcb(one):
|
def tcb(one):
|
||||||
old = list.selectedItemRow()
|
old = list.selectedItemRow()
|
||||||
|
|||||||
@@ -193,13 +193,13 @@ WMCreateColorWell(WMWidget *parent)
|
|||||||
WMAddNotificationObserver(colorChangedObserver, cPtr,
|
WMAddNotificationObserver(colorChangedObserver, cPtr,
|
||||||
WMColorPanelColorChangedNotification, NULL);
|
WMColorPanelColorChangedNotification, NULL);
|
||||||
|
|
||||||
WMSetViewDragSourceProcs(cPtr->view, &_DragSourceProcs);
|
WMSetViewDragSourceProcs(cPtr->colorView, &_DragSourceProcs);
|
||||||
WMSetViewDragDestinationProcs(cPtr->view, &_DragDestinationProcs);
|
WMSetViewDragDestinationProcs(cPtr->colorView, &_DragDestinationProcs);
|
||||||
|
|
||||||
{
|
{
|
||||||
char *types[2] = {"application/X-color", NULL};
|
char *types[2] = {"application/X-color", NULL};
|
||||||
|
|
||||||
WMRegisterViewForDraggedTypes(cPtr->view, types);
|
WMRegisterViewForDraggedTypes(cPtr->colorView, types);
|
||||||
}
|
}
|
||||||
|
|
||||||
return cPtr;
|
return cPtr;
|
||||||
@@ -370,12 +370,11 @@ handleDragEvents(XEvent *event, void *data)
|
|||||||
offs.height = 2;
|
offs.height = 2;
|
||||||
pixmap = makeDragPixmap(cPtr);
|
pixmap = makeDragPixmap(cPtr);
|
||||||
|
|
||||||
WMDragImageFromView(cPtr->view, pixmap, types,
|
WMDragImageFromView(cPtr->colorView, pixmap, types,
|
||||||
wmkpoint(event->xmotion.x_root,
|
wmkpoint(event->xmotion.x_root,
|
||||||
event->xmotion.y_root),
|
event->xmotion.y_root),
|
||||||
offs, event, True);
|
offs, event, True);
|
||||||
|
|
||||||
|
|
||||||
WMReleasePixmap(pixmap);
|
WMReleasePixmap(pixmap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,36 +62,31 @@ static WMEventHook *extraEventHandler=NULL;
|
|||||||
* WMCreateEventHandler--
|
* WMCreateEventHandler--
|
||||||
* Create an event handler and put it in the event handler list for the
|
* Create an event handler and put it in the event handler list for the
|
||||||
* view. If the same callback and clientdata are already used in another
|
* view. If the same callback and clientdata are already used in another
|
||||||
* handler, the masks are swapped.
|
* handler, the masks are OR'ed.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
WMCreateEventHandler(WMView *view, unsigned long mask, WMEventProc *eventProc,
|
WMCreateEventHandler(WMView *view, unsigned long mask, WMEventProc *eventProc,
|
||||||
void *clientData)
|
void *clientData)
|
||||||
{
|
{
|
||||||
W_EventHandler *handler, *ptr;
|
W_EventHandler *hPtr;
|
||||||
unsigned long eventMask;
|
|
||||||
WMArrayIterator iter;
|
WMArrayIterator iter;
|
||||||
|
|
||||||
|
WM_ITERATE_ARRAY(view->eventHandlers, hPtr, iter) {
|
||||||
handler = NULL;
|
if (hPtr->clientData==clientData && hPtr->proc==eventProc) {
|
||||||
eventMask = mask;
|
hPtr->eventMask |= mask;
|
||||||
|
return;
|
||||||
WM_ITERATE_ARRAY(view->eventHandlers, ptr, iter) {
|
|
||||||
if (ptr->clientData == clientData && ptr->proc == eventProc) {
|
|
||||||
handler = ptr;
|
|
||||||
eventMask |= ptr->eventMask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!handler) {
|
|
||||||
handler = wmalloc(sizeof(W_EventHandler));
|
|
||||||
|
|
||||||
WMAddToArray(view->eventHandlers, handler);
|
hPtr = wmalloc(sizeof(W_EventHandler));
|
||||||
}
|
|
||||||
/* select events for window */
|
/* select events for window */
|
||||||
handler->eventMask = eventMask;
|
hPtr->eventMask = mask;
|
||||||
handler->proc = eventProc;
|
hPtr->proc = eventProc;
|
||||||
handler->clientData = clientData;
|
hPtr->clientData = clientData;
|
||||||
|
|
||||||
|
WMAddToArray(view->eventHandlers, hPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -387,7 +387,7 @@ void
|
|||||||
WMSetFontPanelAction(WMFontPanel *panel, WMAction2 *action, void *data)
|
WMSetFontPanelAction(WMFontPanel *panel, WMAction2 *action, void *data)
|
||||||
{
|
{
|
||||||
panel->action = action;
|
panel->action = action;
|
||||||
panel->actionData = data;
|
panel->data = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ CATALOGS = @WPMOFILES@
|
|||||||
|
|
||||||
nlsdir = $(NLSDIR)
|
nlsdir = $(NLSDIR)
|
||||||
|
|
||||||
CLEANFILES = $(CATALOGS)
|
CLEANFILES = WPrefs.pot $(CATALOGS)
|
||||||
|
|
||||||
EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po ja.po zh_TW.Big5.po es.po\
|
EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po ja.po zh_TW.Big5.po es.po\
|
||||||
zh_CN.po fi.po it.po ru.po de.po hu.po bg.po sk.po\
|
zh_CN.po fi.po it.po ru.po de.po hu.po bg.po sk.po\
|
||||||
@@ -36,6 +36,8 @@ SUFFIXES = .po .mo
|
|||||||
msgfmt -o $@ $<
|
msgfmt -o $@ $<
|
||||||
|
|
||||||
|
|
||||||
|
all-local: $(CATALOGS)
|
||||||
|
|
||||||
WPrefs.pot: $(POTFILES)
|
WPrefs.pot: $(POTFILES)
|
||||||
xgettext --default-domain=WPrefs \
|
xgettext --default-domain=WPrefs \
|
||||||
--add-comments --keyword=_ $(POTFILES)
|
--add-comments --keyword=_ $(POTFILES)
|
||||||
|
|||||||
@@ -288,7 +288,7 @@ dnl List of supported locales
|
|||||||
dnl -------------------------
|
dnl -------------------------
|
||||||
supported_locales="be bg cs da de el es et fi fr gl hr hu it ja ko ms nl no pl pt ro ru sk sv tr zh_CN zh_TW.Big5"
|
supported_locales="be bg cs da de el es et fi fr gl hr hu it ja ko ms nl no pl pt ro ru sk sv tr zh_CN zh_TW.Big5"
|
||||||
supported_wprefs_locales="bg cs de es et fi fr hr hu it ja ko pt ru sk zh_CN zh_TW.Big5"
|
supported_wprefs_locales="bg cs de es et fi fr hr hu it ja ko pt ru sk zh_CN zh_TW.Big5"
|
||||||
supported_wings_locales="cs de sk"
|
supported_wings_locales="cs de fr sk"
|
||||||
|
|
||||||
for lang in $LINGUAS; do
|
for lang in $LINGUAS; do
|
||||||
ok=0
|
ok=0
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ wmaker developers for any problems with them.
|
|||||||
|
|
||||||
allows single click in dock
|
allows single click in dock
|
||||||
|
|
||||||
for version: 0.65.0
|
for version: 0.80.2
|
||||||
|
|
||||||
author:
|
author:
|
||||||
Sebastien Bauer <seb_bauer@bigfoot.com>
|
Sebastien Bauer <seb_bauer@bigfoot.com>
|
||||||
@@ -16,6 +16,8 @@ John Morrissey <jwm@horde.net>
|
|||||||
updated for Window Maker 0.65.0 by:
|
updated for Window Maker 0.65.0 by:
|
||||||
Daniel Richard G. <skunk@graphics.lcs.mit.edu>
|
Daniel Richard G. <skunk@graphics.lcs.mit.edu>
|
||||||
|
|
||||||
|
updated for Window Maker 0.80.2 by:
|
||||||
|
Martial Daumas <martial@nasgaia.org>
|
||||||
|
|
||||||
|
|
||||||
*** workspace_flip.patch
|
*** workspace_flip.patch
|
||||||
|
|||||||
@@ -1,15 +1,140 @@
|
|||||||
diff -ur WindowMaker-0.65.1/WPrefs.app/Expert.c WindowMaker-0.65.1-patched/WPrefs.app/Expert.c
|
diff -urN WindowMaker-0.80.2/src/appicon.c WindowMaker-0.80.2.modif/src/appicon.c
|
||||||
--- WindowMaker-0.65.1/WPrefs.app/Expert.c Mon Jun 4 13:47:32 2001
|
--- WindowMaker-0.80.2/src/appicon.c 2002-01-08 14:45:07.000000000 +0100
|
||||||
+++ WindowMaker-0.65.1-patched/WPrefs.app/Expert.c Sat Aug 18 03:53:25 2001
|
+++ WindowMaker-0.80.2.modif/src/appicon.c 2002-12-09 08:59:22.000000000 +0100
|
||||||
@@ -33,7 +33,7 @@
|
@@ -596,6 +596,7 @@
|
||||||
|
int shad_x = 0, shad_y = 0, docking=0, dockable, collapsed = 0;
|
||||||
|
int ix, iy;
|
||||||
|
int clickButton = event->xbutton.button;
|
||||||
|
+ Bool hasMoved = False;
|
||||||
|
Pixmap ghost = None;
|
||||||
|
Window wins[2];
|
||||||
|
Bool movingSingle = False;
|
||||||
|
@@ -676,6 +677,7 @@
|
||||||
|
break;
|
||||||
|
|
||||||
WMWidget *parent;
|
case MotionNotify:
|
||||||
|
+ hasMoved = True;
|
||||||
|
if (!grabbed) {
|
||||||
|
if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
|
||||||
|
|| abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
|
||||||
|
@@ -812,7 +814,8 @@
|
||||||
|
|
||||||
- WMButton *swi[8];
|
if (wPreferences.auto_arrange_icons)
|
||||||
+ WMButton *swi[9];
|
wArrangeIcons(scr, True);
|
||||||
|
-
|
||||||
|
+ if (!hasMoved && wPreferences.single_click)
|
||||||
|
+ iconDblClick(desc, event);
|
||||||
|
done = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
diff -urN WindowMaker-0.80.2/src/defaults.c WindowMaker-0.80.2.modif/src/defaults.c
|
||||||
|
--- WindowMaker-0.80.2/src/defaults.c 2002-01-08 14:45:07.000000000 +0100
|
||||||
|
+++ WindowMaker-0.80.2.modif/src/defaults.c 2002-12-09 09:00:01.000000000 +0100
|
||||||
|
@@ -548,6 +548,9 @@
|
||||||
|
{"DisableBlinking", "NO", NULL,
|
||||||
|
&wPreferences.dont_blink, getBool, NULL
|
||||||
|
},
|
||||||
|
+ {"SingleClickLaunch", "NO", NULL,
|
||||||
|
+ &wPreferences.single_click, getBool, NULL
|
||||||
|
+ },
|
||||||
|
/* style options */
|
||||||
|
{"MenuStyle", "normal", seMenuStyles,
|
||||||
|
&wPreferences.menu_style, getEnum, setMenuStyle
|
||||||
|
diff -urN WindowMaker-0.80.2/src/dock.c WindowMaker-0.80.2.modif/src/dock.c
|
||||||
|
--- WindowMaker-0.80.2/src/dock.c 2002-02-21 12:28:48.000000000 +0100
|
||||||
|
+++ WindowMaker-0.80.2.modif/src/dock.c 2002-12-09 09:02:58.000000000 +0100
|
||||||
|
@@ -3773,7 +3773,7 @@
|
||||||
|
|
||||||
} _Panel;
|
|
||||||
|
|
||||||
|
|
||||||
|
-static void
|
||||||
|
+static Bool
|
||||||
|
handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
||||||
|
{
|
||||||
|
WScreen *scr = dock->screen_ptr;
|
||||||
|
@@ -3789,6 +3789,7 @@
|
||||||
|
int tmp;
|
||||||
|
Pixmap ghost = None;
|
||||||
|
Bool docked;
|
||||||
|
+ Bool hasMoved = False;
|
||||||
|
int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */
|
||||||
|
int omnipresent = aicon->omnipresent; /* this must be cached!!! */
|
||||||
|
|
||||||
|
@@ -3843,6 +3844,7 @@
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MotionNotify:
|
||||||
|
+ hasMoved = True;
|
||||||
|
if (!grabbed) {
|
||||||
|
if (abs(ofs_x-ev.xmotion.x)>=MOVE_THRESHOLD
|
||||||
|
|| abs(ofs_y-ev.xmotion.y)>=MOVE_THRESHOLD) {
|
||||||
|
@@ -3992,7 +3994,7 @@
|
||||||
|
#ifdef DEBUG
|
||||||
|
puts("End icon move");
|
||||||
|
#endif
|
||||||
|
- return;
|
||||||
|
+ return hasMoved;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -4131,8 +4133,11 @@
|
||||||
|
handleClipChangeWorkspace(scr, event);
|
||||||
|
else
|
||||||
|
handleDockMove(dock, aicon, event);
|
||||||
|
- } else
|
||||||
|
- handleIconMove(dock, aicon, event);
|
||||||
|
+ } else {
|
||||||
|
+ Bool hasMoved = handleIconMove(dock, aicon, event);
|
||||||
|
+ if (!hasMoved && wPreferences.single_click)
|
||||||
|
+ iconDblClick(desc, event);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
} else if (event->xbutton.button==Button2 && dock->type==WM_CLIP &&
|
||||||
|
aicon==scr->clip_icon) {
|
||||||
|
diff -urN WindowMaker-0.80.2/src/icon.c WindowMaker-0.80.2.modif/src/icon.c
|
||||||
|
--- WindowMaker-0.80.2/src/icon.c 2002-02-21 12:28:48.000000000 +0100
|
||||||
|
+++ WindowMaker-0.80.2.modif/src/icon.c 2002-12-09 09:04:53.000000000 +0100
|
||||||
|
@@ -879,6 +879,7 @@
|
||||||
|
int dx=event->xbutton.x, dy=event->xbutton.y;
|
||||||
|
int grabbed=0;
|
||||||
|
int clickButton=event->xbutton.button;
|
||||||
|
+ Bool hasMoved = False;
|
||||||
|
|
||||||
|
if (WCHECK_STATE(WSTATE_MODAL))
|
||||||
|
return;
|
||||||
|
@@ -930,6 +931,7 @@
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MotionNotify:
|
||||||
|
+ hasMoved = True;
|
||||||
|
if (!grabbed) {
|
||||||
|
if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
|
||||||
|
|| abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
|
||||||
|
@@ -967,6 +969,8 @@
|
||||||
|
|
||||||
|
if (wPreferences.auto_arrange_icons)
|
||||||
|
wArrangeIcons(wwin->screen_ptr, True);
|
||||||
|
+ if (!hasMoved && wPreferences.single_click)
|
||||||
|
+ miniwindowDblClick(desc, event);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
diff -urN WindowMaker-0.80.2/src/WindowMaker.h WindowMaker-0.80.2.modif/src/WindowMaker.h
|
||||||
|
--- WindowMaker-0.80.2/src/WindowMaker.h 2002-02-21 12:28:48.000000000 +0100
|
||||||
|
+++ WindowMaker-0.80.2.modif/src/WindowMaker.h 2002-12-09 08:57:47.000000000 +0100
|
||||||
|
@@ -464,6 +464,9 @@
|
||||||
|
/* shading animation */
|
||||||
|
signed char shade_speed;
|
||||||
|
|
||||||
|
+ /* single click to lauch applications */
|
||||||
|
+ char single_click;
|
||||||
|
+
|
||||||
|
int edge_resistance;
|
||||||
|
char attract;
|
||||||
|
|
||||||
|
diff -urN WindowMaker-0.80.2/WPrefs.app/Expert.c WindowMaker-0.80.2.modif/WPrefs.app/Expert.c
|
||||||
|
--- WindowMaker-0.80.2/WPrefs.app/Expert.c 2002-01-08 14:44:38.000000000 +0100
|
||||||
|
+++ WindowMaker-0.80.2.modif/WPrefs.app/Expert.c 2002-12-09 08:56:09.000000000 +0100
|
||||||
@@ -54,6 +54,7 @@
|
@@ -54,6 +54,7 @@
|
||||||
WMSetButtonSelected(panel->swi[4], GetBoolForKey("WindozeCycling"));
|
WMSetButtonSelected(panel->swi[4], GetBoolForKey("WindozeCycling"));
|
||||||
WMSetButtonSelected(panel->swi[5], GetBoolForKey("DontConfirmKill"));
|
WMSetButtonSelected(panel->swi[5], GetBoolForKey("DontConfirmKill"));
|
||||||
@@ -42,138 +167,3 @@ diff -ur WindowMaker-0.65.1/WPrefs.app/Expert.c WindowMaker-0.65.1-patched/WPref
|
|||||||
+ SetBoolForKey(WMGetButtonSelected(panel->swi[7]), "SingleClickLaunch");
|
+ SetBoolForKey(WMGetButtonSelected(panel->swi[7]), "SingleClickLaunch");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
diff -ur WindowMaker-0.65.1/src/WindowMaker.h WindowMaker-0.65.1-patched/src/WindowMaker.h
|
|
||||||
--- WindowMaker-0.65.1/src/WindowMaker.h Wed Jun 6 15:07:42 2001
|
|
||||||
+++ WindowMaker-0.65.1-patched/src/WindowMaker.h Sat Aug 18 03:47:36 2001
|
|
||||||
@@ -463,6 +463,9 @@
|
|
||||||
/* shading animation */
|
|
||||||
signed char shade_speed;
|
|
||||||
|
|
||||||
+ /* single click to lauch applications */
|
|
||||||
+ char single_click;
|
|
||||||
+
|
|
||||||
int edge_resistance;
|
|
||||||
char attract;
|
|
||||||
|
|
||||||
diff -ur WindowMaker-0.65.1/src/appicon.c WindowMaker-0.65.1-patched/src/appicon.c
|
|
||||||
--- WindowMaker-0.65.1/src/appicon.c Mon Jul 23 14:32:46 2001
|
|
||||||
+++ WindowMaker-0.65.1-patched/src/appicon.c Sat Aug 18 03:47:36 2001
|
|
||||||
@@ -704,6 +704,7 @@
|
|
||||||
int shad_x = 0, shad_y = 0, docking=0, dockable, collapsed = 0;
|
|
||||||
int ix, iy;
|
|
||||||
int clickButton = event->xbutton.button;
|
|
||||||
+ Bool hasMoved = False;
|
|
||||||
Pixmap ghost = None;
|
|
||||||
Window wins[2];
|
|
||||||
Bool movingSingle = False;
|
|
||||||
@@ -794,6 +795,7 @@
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MotionNotify:
|
|
||||||
+ hasMoved = True;
|
|
||||||
if (!grabbed) {
|
|
||||||
if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
|
|
||||||
|| abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
|
|
||||||
@@ -939,6 +941,8 @@
|
|
||||||
|
|
||||||
if (wPreferences.auto_arrange_icons)
|
|
||||||
wArrangeIcons(scr, True);
|
|
||||||
+ if (!hasMoved && wPreferences.single_click)
|
|
||||||
+ iconDblClick(desc, event);
|
|
||||||
|
|
||||||
done = 1;
|
|
||||||
break;
|
|
||||||
diff -ur WindowMaker-0.65.1/src/defaults.c WindowMaker-0.65.1-patched/src/defaults.c
|
|
||||||
--- WindowMaker-0.65.1/src/defaults.c Mon Jul 23 14:31:36 2001
|
|
||||||
+++ WindowMaker-0.65.1-patched/src/defaults.c Sat Aug 18 03:47:36 2001
|
|
||||||
@@ -557,6 +557,9 @@
|
|
||||||
{"DisableBlinking", "NO", NULL,
|
|
||||||
&wPreferences.dont_blink, getBool, NULL
|
|
||||||
},
|
|
||||||
+ {"SingleClickLaunch", "NO", NULL,
|
|
||||||
+ &wPreferences.single_click, getBool, NULL
|
|
||||||
+ },
|
|
||||||
/* style options */
|
|
||||||
{"MenuStyle", "normal", seMenuStyles,
|
|
||||||
&wPreferences.menu_style, getEnum, setMenuStyle
|
|
||||||
diff -ur WindowMaker-0.65.1/src/dock.c WindowMaker-0.65.1-patched/src/dock.c
|
|
||||||
--- WindowMaker-0.65.1/src/dock.c Mon Jul 23 14:37:25 2001
|
|
||||||
+++ WindowMaker-0.65.1-patched/src/dock.c Sat Aug 18 03:47:36 2001
|
|
||||||
@@ -3690,7 +3690,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-static void
|
|
||||||
+static Bool
|
|
||||||
handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
|
||||||
{
|
|
||||||
WScreen *scr = dock->screen_ptr;
|
|
||||||
@@ -3706,6 +3706,7 @@
|
|
||||||
int tmp;
|
|
||||||
Pixmap ghost = None;
|
|
||||||
Bool docked;
|
|
||||||
+ Bool hasMoved = False;
|
|
||||||
int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */
|
|
||||||
int omnipresent = aicon->omnipresent; /* this must be cached!!! */
|
|
||||||
|
|
||||||
@@ -3760,6 +3761,7 @@
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MotionNotify:
|
|
||||||
+ hasMoved = True;
|
|
||||||
if (!grabbed) {
|
|
||||||
if (abs(ofs_x-ev.xmotion.x)>=MOVE_THRESHOLD
|
|
||||||
|| abs(ofs_y-ev.xmotion.y)>=MOVE_THRESHOLD) {
|
|
||||||
@@ -3909,7 +3911,7 @@
|
|
||||||
#ifdef DEBUG
|
|
||||||
puts("End icon move");
|
|
||||||
#endif
|
|
||||||
- return;
|
|
||||||
+ return hasMoved;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4048,8 +4050,11 @@
|
|
||||||
handleClipChangeWorkspace(scr, event);
|
|
||||||
else
|
|
||||||
handleDockMove(dock, aicon, event);
|
|
||||||
- } else
|
|
||||||
- handleIconMove(dock, aicon, event);
|
|
||||||
+ } else {
|
|
||||||
+ Bool hasMoved = handleIconMove(dock, aicon, event);
|
|
||||||
+ if (!hasMoved && wPreferences.single_click)
|
|
||||||
+ iconDblClick(desc, event);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
} else if (event->xbutton.button==Button2 && dock->type==WM_CLIP &&
|
|
||||||
aicon==scr->clip_icon) {
|
|
||||||
diff -ur WindowMaker-0.65.1/src/icon.c WindowMaker-0.65.1-patched/src/icon.c
|
|
||||||
--- WindowMaker-0.65.1/src/icon.c Mon Jul 23 14:20:27 2001
|
|
||||||
+++ WindowMaker-0.65.1-patched/src/icon.c Sat Aug 18 03:47:36 2001
|
|
||||||
@@ -877,6 +877,7 @@
|
|
||||||
int dx=event->xbutton.x, dy=event->xbutton.y;
|
|
||||||
int grabbed=0;
|
|
||||||
int clickButton=event->xbutton.button;
|
|
||||||
+ Bool hasMoved = False;
|
|
||||||
|
|
||||||
if (WCHECK_STATE(WSTATE_MODAL))
|
|
||||||
return;
|
|
||||||
@@ -928,6 +929,7 @@
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MotionNotify:
|
|
||||||
+ hasMoved = True;
|
|
||||||
if (!grabbed) {
|
|
||||||
if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
|
|
||||||
|| abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
|
|
||||||
@@ -965,6 +967,9 @@
|
|
||||||
|
|
||||||
if (wPreferences.auto_arrange_icons)
|
|
||||||
wArrangeIcons(wwin->screen_ptr, True);
|
|
||||||
+ if (!hasMoved && wPreferences.single_click)
|
|
||||||
+ miniwindowDblClick(desc, event);
|
|
||||||
+
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ SUFFIXES = .po .mo
|
|||||||
msgfmt -o $@ $<
|
msgfmt -o $@ $<
|
||||||
|
|
||||||
|
|
||||||
|
all-local: $(CATALOGS)
|
||||||
|
|
||||||
WindowMaker.pot: $(POTFILES)
|
WindowMaker.pot: $(POTFILES)
|
||||||
xgettext --default-domain=WindowMaker \
|
xgettext --default-domain=WindowMaker \
|
||||||
--add-comments --keyword=_ $(POTFILES)
|
--add-comments --keyword=_ $(POTFILES)
|
||||||
|
|||||||
@@ -495,9 +495,7 @@ wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace)
|
|||||||
|
|
||||||
/* windows that have takefocus=False shouldn't take focus at all */
|
/* windows that have takefocus=False shouldn't take focus at all */
|
||||||
if (wwin->focus_mode == WFM_NO_INPUT) {
|
if (wwin->focus_mode == WFM_NO_INPUT) {
|
||||||
/* dont use WSETUFLAG, since this was not an attribute change
|
wwin->client_flags.no_focusable = 1;
|
||||||
* made by the user */
|
|
||||||
wwin->user_flags.no_focusable = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user