mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-18 20:10:29 +01:00
Update for 0.51.0
This commit is contained in:
26
AUTHORS
26
AUTHORS
@@ -24,6 +24,9 @@ ConfigureNotify
|
||||
Olly Betts <olly@muscat.co.uk>
|
||||
shaded window indication in window list
|
||||
|
||||
Tudor Bosman <tudorb@caltech.edu>
|
||||
autoraise bugfix
|
||||
|
||||
Rob Clark <rclark@turing.cs.hmc.edu>
|
||||
Text input field, 15bpp support
|
||||
|
||||
@@ -62,12 +65,15 @@ Better detection of gfx libraries, added IconTitleColor/IconTitleBack
|
||||
Greg Hayes <sdc@choice.net>
|
||||
Twisted miniaturization animation
|
||||
|
||||
Alban Hertroys
|
||||
WINGs color panel
|
||||
|
||||
HIDEKI Fujimoto <hideki70@osk2.threewebnet.or.jp>
|
||||
FreeBSD portability, icon arrangement fixes, dock initialization bug fix,
|
||||
some I18N related fixes
|
||||
|
||||
Pascal Hofstee <daeron@wit401305.student.utwente.nl>
|
||||
WINGs bug fixes
|
||||
WINGs bug fixes, WINGs color panel
|
||||
|
||||
Robert A. Holak <panthar@tradeservices.com>
|
||||
bug fix
|
||||
@@ -108,7 +114,7 @@ Stuart Luppescu <s-luppescu@uchicago.edu>
|
||||
Documentation help
|
||||
|
||||
Marcelo E. Magallon <mmagallo@efis.ucr.ac.cr>
|
||||
CPP search path improvement, man pages
|
||||
CPP search path improvement, man pages, bug fixes
|
||||
|
||||
Tim Malone <mrgone@eskimo.com>
|
||||
bug fix, jpeg bug fix
|
||||
@@ -125,6 +131,9 @@ Andrea Mistrali <andre@ulmo.aleph.it>
|
||||
Jeff Meininger <jeffm@boxybutgood.com>
|
||||
Fix for unassociated alpha tiff
|
||||
|
||||
Craig Nellist <crn@ozemail.com.au>
|
||||
selection in textfield
|
||||
|
||||
Dan Pascu <dan@services.iiruc.ro>
|
||||
dock ghost (superfluous mode) fix, enhancement for scrollable menus,
|
||||
clip, numerous other stuff, project maintainer
|
||||
@@ -174,7 +183,12 @@ Sam Varner <varner@nmr.physics.wm.edu>
|
||||
many fixes and enhancements for move, resize and window placement code.
|
||||
|
||||
Marco van Hylckama Vlieg <fatal@global.uibk.ac.at>
|
||||
house icon for WINGs file dialogs, defaultAppIcon and Clip xpm icon
|
||||
house icon for WINGs file dialogs, defaultAppIcon and Clip xpm tchX.tiff
|
||||
Plus the following icons:
|
||||
DefaultAppIcon.tiff GNUterm.tiff clip2.tiff defaultterm.tiff draw.tiff
|
||||
linuxterm.tiff mixer.tiff notepad.tiff pdf.tiff ps.tiff real.tiff sgiterm.tiff
|
||||
sound.tiff staroffice2.tiff timer.tiff wilber.tiff write.tiff xdvi.tiff
|
||||
xv.tiff
|
||||
|
||||
David Wang <dwang@cisco.com>
|
||||
edge resistance, 8bpp balloon bug fix, other 8bpp related fixes
|
||||
@@ -186,10 +200,12 @@ libproplist. Chooses best depth in screen.
|
||||
FRBall <frb@umr.edu>
|
||||
dgradient fix
|
||||
|
||||
"]d" <mhz@gpf.or.th>
|
||||
|
||||
"]d" <id@maliwan.org>
|
||||
Window list menu miniaturized/hidden hints, XDE support, XKB lock
|
||||
language status, WINGs enhancements, bug fixes, window commands menu
|
||||
enhancement, window move/resize by keyboard
|
||||
enhancement, window move/resize by keyboard. GNUstepGlow.tiff icon,
|
||||
WINGs color panel
|
||||
|
||||
|
||||
Trae Mc Combs <x@themes.org>
|
||||
|
||||
6
BUGFORM
6
BUGFORM
@@ -34,10 +34,10 @@ to bugs@windowmaker.org
|
||||
4. Configure time options you specified:
|
||||
[ ] --enable-kanji
|
||||
[ ] --disable-shape
|
||||
[ ] --disable-xpm
|
||||
[ ] --disable-tiff
|
||||
[ ] --disable-png
|
||||
[ ] --enable-single-icon
|
||||
[ ] --enable-kde
|
||||
[ ] --enable-gnome
|
||||
[ ] --enable-openlook
|
||||
[ ] Others: .......................
|
||||
|
||||
|
||||
|
||||
2
BUGS
2
BUGS
@@ -1,3 +1,5 @@
|
||||
- wmaker will not stop managing a screen even if another window manager
|
||||
requests that, through the ICCCM 2.0 manager selection stuff
|
||||
- the app menu does not update after a style/theme change without restart.
|
||||
- during startup, transient windows should be miniaturized with their owners
|
||||
not in their own icons
|
||||
|
||||
38
ChangeLog
38
ChangeLog
@@ -1,3 +1,41 @@
|
||||
Changes since version 0.50.2:
|
||||
.............................
|
||||
|
||||
- added some new icons made by Marco
|
||||
- kde: fixed stacking order reporting for modules
|
||||
- gnome: fixed state change request handling
|
||||
- fixed handling of file names with non-alphanum characters in wmsetbg
|
||||
- hopefully fixed timestamp problem that caused regeneration of configure
|
||||
- fixed a bug in the auto raise code
|
||||
- made SIGHUP exit wmaker and SIGUSR1 restart for GNOME compatibility
|
||||
- fixed %a() bug (now it really is fixed!)
|
||||
- fixed docking icons in last icon
|
||||
- fixed WMInsertPopUpButtonItem()
|
||||
- fixed bug that caused fonts of themes to be ignored
|
||||
- fixed bug in path handling in getstyle
|
||||
- stop icon explosion animation by clicking on root window
|
||||
- made SAVE_SESSION save the state of the dock
|
||||
- added command line option aliases that adhere to the GNU standards
|
||||
- fixed png gamma bug (actually unmade buggy fix)
|
||||
- fixed bug in property notify handling
|
||||
- removed KeepTransientsOnTop
|
||||
- fixed window focus when switching workspaces
|
||||
- fixed attribute inspector Apply for dont bind keys
|
||||
- fixed bad colormap bug (I hope)
|
||||
- added acceleration to keyboard window move
|
||||
- %W expand to current workspace #
|
||||
- fixed background pixmap color problem (cpixmap etc)
|
||||
- applied drop shadow patch
|
||||
- fixed crash on startup with xconsole and xdm
|
||||
- fixed portability prob with MkLinux/PPC
|
||||
- fixed portability prob with Alpha
|
||||
- added color panel to WINGs
|
||||
- added support for olwm/OPEN LOOK(tm) hints
|
||||
- added SaveYourself support
|
||||
- fixed bug in start maximized
|
||||
- added _WINDOWMAKER_NOTICEBOARD protocol
|
||||
- added docklib
|
||||
|
||||
Changes since version 0.50.1:
|
||||
.............................
|
||||
|
||||
|
||||
22
FAQ
22
FAQ
@@ -58,6 +58,8 @@ Summary of Contents:
|
||||
shaded and I can't run new instances.
|
||||
3.9 When I run wmaker it complains about not being able to load any
|
||||
fonts.
|
||||
3.10 When I set the root background with wmsetbg by hand it works,
|
||||
but when I do that from the configuration files it doesnt!
|
||||
|
||||
4 - Configuration
|
||||
4.1 What are those files inside my ~/GNUstep directory?
|
||||
@@ -680,6 +682,7 @@ the WM_CLASS hint for the window, like the -name parameter for
|
||||
xterm, rxvt and other programs.
|
||||
|
||||
|
||||
|
||||
3.9 When I run wmaker it complains about not being able to load any fonts.
|
||||
----------------------------------
|
||||
Check if the locale settings are correct. If you're not sure what to
|
||||
@@ -687,6 +690,25 @@ do, unset the LANG environment variable before running wmaker.
|
||||
|
||||
TODO: give complete explanation
|
||||
|
||||
|
||||
|
||||
3.10 When I set the root background with wmsetbg by hand it works,
|
||||
but when I do that from the configuration files it doesnt!
|
||||
----------------------------------
|
||||
|
||||
DOH! If you set the root background with wmsetbg by hand, it will obviously
|
||||
find the image, since you have explicitly specified it by hand. But if you
|
||||
simply put it in ~/GNUstep/Defaults/WindowMaker in some option like
|
||||
WorkspaceBack, it will not find the image because Window Maker can't read
|
||||
your mind to figure where you put the image. So, to fix it, you have to
|
||||
either place the full path for the image in the texture specification or put
|
||||
the path for the directory you put your background images in the PixmapPath
|
||||
option. You can also put all your background images in places like
|
||||
~/GNUstep/Library/WindowMaker/Backgrounds or
|
||||
/usr/local/share/WindowMaker/Backgrounds
|
||||
|
||||
|
||||
|
||||
-=-=-=-=-=-=-=-
|
||||
Configuration:
|
||||
-=-=-=-=-=-=-=-
|
||||
|
||||
150
INSTALL
150
INSTALL
@@ -7,11 +7,11 @@ SUPPORTED PLATFORMS
|
||||
===================
|
||||
(ie: I've heard someone has compiled it on...)
|
||||
|
||||
- Intel/Linux Slackware 3.5 (primary platform)
|
||||
- Intel/Linux other distributions
|
||||
- Sparc/Linux RedHat 5.1
|
||||
- PowerPC/MkLinux
|
||||
- Alpha/Linux RedHat 5.1
|
||||
- Intel GNU/Linux Slackware 3.5 (primary platform)
|
||||
- Intel GNU/Linux other distributions
|
||||
- Sparc GNU/Linux RedHat 5.1
|
||||
- PowerPC GNU/MkLinux
|
||||
- Alpha GNU/Linux RedHat 5.1
|
||||
- FreeBSD
|
||||
- NetBSD
|
||||
- Solaris 2.5.1, 2.5.2
|
||||
@@ -30,6 +30,7 @@ SUPPORTED PLATFORMS
|
||||
- Corel NetWinder
|
||||
- SunOS 4.x
|
||||
- PowerMac / Power MachTen 4.1.1 over MacOS
|
||||
- Amiga 3000 running RedHat Linux 5.1 (Rawhide)
|
||||
|
||||
Patches to make it work on other platforms are welcome.
|
||||
|
||||
@@ -59,7 +60,7 @@ The following is required to build Window Maker:
|
||||
program, including Window Maker.
|
||||
|
||||
- autoconf, automake and libtool
|
||||
autoconf and automake are not required, 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
|
||||
with exactly these versions:
|
||||
autoconf 2.12
|
||||
@@ -67,7 +68,8 @@ The following is required to build Window Maker:
|
||||
libtool 1.2
|
||||
If you have a different version, disable them by temporarily
|
||||
renaming them to something else or uninstalling them from your
|
||||
system.
|
||||
system. If you don't develop software you don't need them,
|
||||
so you can safely uninstall.
|
||||
|
||||
- lex (or flex) and yacc (or bison)
|
||||
These are used by libPropList. lex is actually not needed since
|
||||
@@ -127,55 +129,69 @@ support compiled in.
|
||||
|
||||
To get a list of other options, run ./configure --help
|
||||
|
||||
--enable-kanji support to display Kanji characters, Korean, Chinese
|
||||
and other languagues that require special characters.
|
||||
--enable-kanji
|
||||
support to display Kanji characters, Korean, Chinese and other
|
||||
languagues that require special characters.
|
||||
|
||||
--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>
|
||||
--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 necessary due to a bug that manifests as messed
|
||||
icons and textures.
|
||||
--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
|
||||
necessary due to a bug that manifests as messed icons and textures.
|
||||
|
||||
--disable-motif disable support for mwm hints
|
||||
--disable-motif
|
||||
disable support for mwm window manager hints
|
||||
|
||||
--enable-gnome enable support for stuff needed by GNOME
|
||||
(GNOME compliant bla bla bla)
|
||||
--enable-openlook
|
||||
enable support for OPEN LOOK(tm) window manager hints
|
||||
|
||||
--enable-kde enable support for kde/kwm hints
|
||||
--enable-gnome
|
||||
enable support for GNOME window manager hints
|
||||
|
||||
--enable-lite remove things that are already supported in desktop
|
||||
environments, like KDE and GNOME. Disabled things
|
||||
are: window list, root applications menu,
|
||||
multiple window selection. Note that you will not
|
||||
be able to exit Window Maker from itself anymore;
|
||||
you will have to use kill with the SIGTERM signal
|
||||
or exit it from KDE.
|
||||
--enable-kde
|
||||
enable support for kde/kwm window manager hints
|
||||
|
||||
--enable-modelock XKB language status lock support. If you don't know
|
||||
what it is you probably don't need it.
|
||||
--enable-lite
|
||||
remove things that are already supported in desktop environments,
|
||||
like KDE and GNOME. Disabled things are: window list, root
|
||||
applications menu, multiple window selection. Note that you will not
|
||||
be able to exit Window Maker from itself anymore; you will have to
|
||||
use kill with the SIGTERM signal or exit it from KDE. It is not
|
||||
advisable to enable it.
|
||||
|
||||
--enable-sound enable support of sound effects module
|
||||
--enable-modelock
|
||||
XKB language status lock support. If you don't know what it is you
|
||||
probably don't need it.
|
||||
|
||||
--disable-xpm disables use of the XPM library even if it is available on
|
||||
your system.
|
||||
--enable-sound
|
||||
enable support of sound effects module
|
||||
|
||||
--disable-png disables use of PNG library
|
||||
--disable-xpm
|
||||
disables use of the XPM library even if it is available on your
|
||||
system.
|
||||
|
||||
--disable-tiff disable use of TIFF library
|
||||
--disable-png
|
||||
disables use of PNG library
|
||||
|
||||
--disable-gif disable use of GIF library
|
||||
--disable-tiff
|
||||
disable use of TIFF library
|
||||
|
||||
--disable-jpeg disable use of JPEG library
|
||||
--disable-gif
|
||||
disable use of GIF library
|
||||
|
||||
--disable-shape disables shaped windows (for oclock, xeyes etc.)
|
||||
--disable-jpeg
|
||||
disable use of JPEG library
|
||||
|
||||
--enable-debug adds extra debugging information. Do not use it
|
||||
unless you're debugging Window Maker.
|
||||
--disable-shape
|
||||
disables shaped windows (for oclock, xeyes etc.)
|
||||
|
||||
--enable-debug
|
||||
Do not use it unless you know what you're doing.
|
||||
|
||||
|
||||
PLATFORM SPECIFIC NOTES:
|
||||
@@ -194,27 +210,48 @@ PLATFORM SPECIFIC NOTES:
|
||||
If you have a Ultra Creator 3D or some other machine with high-end
|
||||
graphics, be sure to start the X server with the default visual
|
||||
set to 24bpp or you might experience problems with mangled colors.
|
||||
This is a bug and will be fixed.
|
||||
This is a wmaker bug and will be fixed.
|
||||
|
||||
- RedHat Linux
|
||||
Make sure you don't have the LANG and LINGUAS environment variables
|
||||
set to en_RN. Also, make sure you have /usr/local/bin in your
|
||||
PATH environment variable, as for some mysterious reason the folks
|
||||
at RedHat did not include it in the default configuration files
|
||||
in RH 5.{0,1}.
|
||||
Check the TROUBLESHOOTING section if you have problems with libtool.
|
||||
Before trying to install, uninstall libtool-1.2b and install
|
||||
libtool-1.2, which you can get from ftp.gnu.org or it's mirrors.
|
||||
- GNU/Linux in general
|
||||
Make sure you have /usr/local/lib in /etc/ld.so.conf and that you
|
||||
run ldconfig after installing.
|
||||
|
||||
- RedHat GNU/Linux
|
||||
RedHat systems have several annoying problems. If you use it,
|
||||
be sure to follow the steps below or Window Maker will not work:
|
||||
|
||||
* make sure you don't have the LANG and LINGUAS environment variables
|
||||
set to en_RN;
|
||||
|
||||
* make sure you have /usr/local/bin in your PATH environment
|
||||
variable, as for some mysterious reason the folks at RedHat did not
|
||||
include it in the default configuration files in RH 5.x;
|
||||
|
||||
* make sure you have /usr/local/lib in /etc/ld.so.conf before running
|
||||
ldconfig;
|
||||
|
||||
* if you have problems that mention an error message with --no-reexec
|
||||
uninstall libtool-1.2b and install libtool-1.2 instead. libtool-1.2
|
||||
can be found in ftp.gnu.org Also read the TROUBLESHOOTING section;
|
||||
|
||||
* if you installed the Window Maker package from RedHat and are
|
||||
installing a new version of it by hand (compiling yourself), uninstall
|
||||
the package from RedHat before.
|
||||
|
||||
* make a symbolic link from /usr/X11 to /usr/X11R6
|
||||
(type ln -s /usr/X11R6 /usr/X11 ) and make sure you have a symbolic
|
||||
link from /usr/include/X11 to /usr/X11R6/include/X11 (if not,
|
||||
type ln -s /usr/X11R6/include/X11 /usr/include/X11 )
|
||||
|
||||
- PowerPC MkLinux
|
||||
You will need to have the latest version of Xpmac. Older versions
|
||||
seem to have bugs that cause the system to hang.
|
||||
|
||||
- Debian Linux
|
||||
- Debian GNU/Linux
|
||||
If you want JPEG and TIFF support, make sure you have libtiff-dev
|
||||
and libjpeg-dev installed.
|
||||
|
||||
- SuSE Linux
|
||||
- SuSE GNU/Linux
|
||||
If you installed the Window Maker package from SuSE,
|
||||
uninstall it before trying to compile wmaker or you
|
||||
might have problems.
|
||||
@@ -225,7 +262,6 @@ PLATFORM SPECIFIC NOTES:
|
||||
textures, do not use textures in titlebars. Or use a different
|
||||
X server.
|
||||
|
||||
|
||||
INSTALLATION:
|
||||
=============
|
||||
|
||||
@@ -246,14 +282,15 @@ Build Window Maker
|
||||
then, login as root and type:
|
||||
|
||||
make install
|
||||
ldconfig
|
||||
|
||||
or if you want to strip the debugging symbols from the binaries and make them
|
||||
smaller, you can instead type:
|
||||
|
||||
make install-strip
|
||||
ldconfig
|
||||
|
||||
This will build and install Window Maker with default parameters.
|
||||
If you run on a Linux system, also run ldconfig -v
|
||||
|
||||
If you want to customize some compile-time options, you can do the
|
||||
following.
|
||||
@@ -349,10 +386,9 @@ ltconfig: unrecognized option `--no-reexec'
|
||||
Try `ltconfig --help' for more information.
|
||||
configure: error: libtool configure failed
|
||||
|
||||
remove the --no-reexec option from aclocal.m4 and libPropList/aclocal/m4
|
||||
remove the --no-reexec option from aclocal.m4 and libPropList/aclocal.m4
|
||||
and reconfigure
|
||||
Also make sure the autoconf and automake versions you have installed are at
|
||||
least:
|
||||
Also make sure the autoconf and automake versions you have installed are:
|
||||
autoconf 2.12
|
||||
automake 1.3
|
||||
libtool 1.2
|
||||
|
||||
54
Install
54
Install
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# WindowMaker configuration and compilation script.
|
||||
#
|
||||
# Copyright (c) 1997, 1998 Alfredo K. Kojima
|
||||
# Copyright (c) 1997, 1998, 1999 Alfredo K. Kojima
|
||||
#
|
||||
|
||||
export LINGUAS;LINGUAS=""
|
||||
@@ -57,6 +57,35 @@ if [ "$rtfm" != y ]; then
|
||||
echo "Please read the INSTALL file before installing"
|
||||
exit
|
||||
fi
|
||||
echo "Are you lying?"
|
||||
echo -n "<y/n> "
|
||||
read rtfm
|
||||
if [ "$rtfm" != n ]; then
|
||||
echo "What a shame!"
|
||||
echo "Please read the INSTALL file before installing"
|
||||
exit
|
||||
fi
|
||||
echo "Do you *swear* that you really read the INSTALL file?"
|
||||
echo -n "<y/n> "
|
||||
read rtfm
|
||||
if [ "$rtfm" != y ]; then
|
||||
echo "Please read the INSTALL file before installing"
|
||||
exit
|
||||
fi
|
||||
echo "Last chance. You will not get help if you have some problem"
|
||||
echo "because you didn't read that file. Even if your computer explodes."
|
||||
echo "Do you *really* read it?"
|
||||
echo -n "<y/n> "
|
||||
read rtfm
|
||||
if [ "$rtfm" != y ]; then
|
||||
echo "Please read the INSTALL file before installing"
|
||||
exit
|
||||
fi
|
||||
echo
|
||||
echo "Ok, you have been warned."
|
||||
echo
|
||||
perai
|
||||
|
||||
|
||||
if test "$USER" != "root"; then
|
||||
echo
|
||||
@@ -78,13 +107,6 @@ echo -n "<y/n> [n] "
|
||||
read kde
|
||||
if [ "$kde" = y -o "$kde" = Y ]; then
|
||||
OPTIONS="$OPTIONS --enable-kde"
|
||||
echo "Do you want to disable features that become duplicated with"
|
||||
echo "KDE support (like root menus)?"
|
||||
echo -n "<y/n> [n] "
|
||||
read lite
|
||||
if [ "$lite" = y -o "lite" = Y ]; then
|
||||
OPTIONS="$OPTIONS --enable-lite"
|
||||
fi
|
||||
fi
|
||||
|
||||
######################## GNOME
|
||||
@@ -96,6 +118,15 @@ if [ "$gnome" = y -o "$gnome" = Y ]; then
|
||||
OPTIONS="$OPTIONS --enable-gnome"
|
||||
fi
|
||||
|
||||
######################## OLWM
|
||||
echo
|
||||
echo "Do you want OPEN LOOK(tm)/olwm support?"
|
||||
echo -n "<y/n> [n] "
|
||||
read olwm
|
||||
if [ "$olwm" = y -o "$olwm" = Y ]; then
|
||||
OPTIONS="$OPTIONS --enable-openlook"
|
||||
fi
|
||||
|
||||
######################## NLS
|
||||
echo
|
||||
echo "Do you want National Language Support?"
|
||||
@@ -184,8 +215,9 @@ while [ $done = 0 ]; do
|
||||
done=1
|
||||
fi
|
||||
echo
|
||||
echo " $PREFIX/bin must be in the PATH environment variable of all users"
|
||||
echo "will who use Window Maker"
|
||||
echo " $PREFIX/bin must be in the PATH environment variable"
|
||||
echo "of all users who will use Window Maker"
|
||||
echo
|
||||
echo " Make sure $PREFIX/lib is in the /etc/ld.so.conf file"
|
||||
perai
|
||||
done
|
||||
@@ -227,7 +259,7 @@ echo "--------------------------"
|
||||
perform make install
|
||||
|
||||
if [ `uname -s` = "Linux" ]; then
|
||||
/sbin/ldconfig -v
|
||||
/sbin/ldconfig
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
12
MIRRORS
12
MIRRORS
@@ -1,6 +1,6 @@
|
||||
|
||||
WindowMaker FTP Mirror Sites
|
||||
============================
|
||||
Window Maker FTP Mirror Sites
|
||||
=======-=====================
|
||||
|
||||
Official Site (USA):
|
||||
--------------------
|
||||
@@ -43,8 +43,8 @@ ftp://ftp.ameth.org/pub/mirrors/ftp.windowmaker.org/
|
||||
Contact: Chase Phillips <shepard@ameth.org>
|
||||
|
||||
|
||||
Third Party WindowMaker Distribution Packages
|
||||
=============================================
|
||||
Third Party Window Maker Distribution Packages
|
||||
==============================================
|
||||
|
||||
Debian GNU/Linux (deb)
|
||||
----------------------
|
||||
@@ -54,8 +54,8 @@ Sites:
|
||||
http://master.debian.org/~mmagallo/packages/wmaker/
|
||||
|
||||
|
||||
RedHat Linux (RPM)
|
||||
------------------
|
||||
RedHat GNU/Linux (RPM)
|
||||
----------------------
|
||||
|
||||
Contact: Jim Knoble <jmknoble@pobox.com>
|
||||
Sites:
|
||||
|
||||
12
Makefile.am
12
Makefile.am
@@ -3,4 +3,14 @@
|
||||
SUBDIRS = libPropList wrlib WINGs src util po WindowMaker wmlib test WPrefs.app doc
|
||||
|
||||
EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS Install acconfig.h\
|
||||
mkpatch README.KDE README.GNOME
|
||||
mkpatch README.KDE README.GNOME WindowMaker.lsm.in\
|
||||
docklib-0.0.tar.gz
|
||||
|
||||
|
||||
windowmaker.lsm:
|
||||
size=`wc -c $(distdir).tar.gz|cut -d\ -f1`;\
|
||||
size=`echo scale=2\;$$size/1048576|bc`;\
|
||||
sed -e "s/VERSION/"$(VERSION)"/" \
|
||||
-e "s/DATE/`date +%d%b%Y|tr a-z A-Z`/"\
|
||||
-e "s/SIZE/$$size M/"\
|
||||
WindowMaker.lsm.in > WindowMaker.lsm
|
||||
|
||||
19
Makefile.in
19
Makefile.in
@@ -65,8 +65,6 @@ DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLFLAGS = @GFXLFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LD = @LD@
|
||||
@@ -79,25 +77,20 @@ NLSDIR = @NLSDIR@
|
||||
NM = @NM@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
SUBDIRS = libPropList wrlib WINGs src util po WindowMaker wmlib test WPrefs.app doc
|
||||
|
||||
EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS Install acconfig.h\
|
||||
mkpatch README.KDE README.GNOME
|
||||
mkpatch README.KDE README.GNOME WindowMaker.lsm.in\
|
||||
docklib-0.0.tar.gz
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ./src/config.h
|
||||
@@ -315,6 +308,14 @@ installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
windowmaker.lsm:
|
||||
size=`wc -c $(distdir).tar.gz|cut -d\ -f1`;\
|
||||
size=`echo scale=2\;$$size/1048576|bc`;\
|
||||
sed -e "s/VERSION/"$(VERSION)"/" \
|
||||
-e "s/DATE/`date +%d%b%Y|tr a-z A-Z`/"\
|
||||
-e "s/SIZE/$$size M/"\
|
||||
WindowMaker.lsm.in > WindowMaker.lsm
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
||||
56
NEWS
56
NEWS
@@ -2,13 +2,45 @@
|
||||
NEWS for veteran Window Maker users
|
||||
-----------------------------------
|
||||
|
||||
|
||||
--- 0.51.0
|
||||
|
||||
SIGHUP will exit wmaker instead of restarting it!!! This is because
|
||||
GNOME expects the window manager to exit instead of restarting...
|
||||
Complaints should go to gnome people. SIGUSR1 will restart wmaker now.
|
||||
|
||||
|
||||
docklib
|
||||
-------
|
||||
|
||||
docklib is a little library for making dock applets. It's in the
|
||||
docklib-0.0.tar.gz file. Unpack it and read the README file there.
|
||||
|
||||
|
||||
Option Changes
|
||||
--------------
|
||||
|
||||
Removed OnTopTransients option
|
||||
|
||||
Added OpenTransientOnOwnerWorkspace
|
||||
|
||||
|
||||
Olwm Hint Support
|
||||
-----------------
|
||||
|
||||
OPEN LOOK(tm)/olwm hints support was added.
|
||||
|
||||
Read the appropriate section in the README file.
|
||||
|
||||
|
||||
|
||||
--- 0.50.1
|
||||
|
||||
New option for WorkspaceBack. mpixmap is the same as spixmap, but
|
||||
it will scale the pixmap by keeping the aspect ratio (maximize or maxpect).
|
||||
The option only works for workspace backgrounds.
|
||||
|
||||
Also added IGNORE_NOPPOSITION compile time flag, which is equivalent
|
||||
Also added IGNORE_PPOSITION compile time flag, which is equivalent
|
||||
to NoPPosition from fvwm.
|
||||
|
||||
|
||||
@@ -142,28 +174,6 @@ big value, will make the Clip to practically do not auto raise unless clicked,
|
||||
but to be automatically lowered after AUTO_LOWER_DELAY (ms) when leaved.
|
||||
|
||||
|
||||
AutoRaiseLower option for the Clip. This allows automatic Raise/Lower of the
|
||||
Clip icons when the mouse pointer enter/leave the Clip. To avoid unwanted
|
||||
raising/lowering there is a time threshold before raising/lowering.
|
||||
The thresholds can be changed in wconfig.h by changing one or both of
|
||||
AUTO_LOWER_DELAY and AUTO_RAISE_DELAY (expressed in miliseconds).
|
||||
For example if you set AUTO_RAISE_DELAY to 0, then the Clip will be raised as
|
||||
soon as the mouse pointer enters it's area. Setting AUTO_RAISE_DELAY to a very
|
||||
big value, will make the Clip to practically do not auto raise unless clicked,
|
||||
but to be automatically lowered after AUTO_LOWER_DELAY (ms) when leaved.
|
||||
|
||||
|
||||
AutoRaiseLower option for the Clip. This allows automatic Raise/Lower of the
|
||||
Clip icons when the mouse pointer enter/leave the Clip. To avoid unwanted
|
||||
raising/lowering there is a time threshold before raising/lowering.
|
||||
The thresholds can be changed in wconfig.h by changing one or both of
|
||||
AUTO_LOWER_DELAY and AUTO_RAISE_DELAY (expressed in miliseconds).
|
||||
For example if you set AUTO_RAISE_DELAY to 0, then the Clip will be raised as
|
||||
soon as the mouse pointer enters it's area. Setting AUTO_RAISE_DELAY to a very
|
||||
big value, will make the Clip to practically do not auto raise unless clicked,
|
||||
but to be automatically lowered after AUTO_LOWER_DELAY (ms) when leaved.
|
||||
|
||||
|
||||
New ThemePack Format
|
||||
--------------------
|
||||
|
||||
|
||||
51
README
51
README
@@ -41,27 +41,20 @@
|
||||
Description
|
||||
===========
|
||||
|
||||
Window Maker is a window manager designed to emulate the look and feel of
|
||||
part of the NEXTSTEP(tm) GUI. It's supposed to be relatively fast and small,
|
||||
feature rich, easy to configure and easy to use, with a simple and elegant
|
||||
appearance borrowed from NEXTSTEP(tm).
|
||||
Window Maker is the GNU window manager for the X Window System. It was
|
||||
designed to emulate the look and feel of part of the NEXTSTEP(tm) GUI. It's
|
||||
supposed to be relatively fast and small, feature rich, easy to configure and
|
||||
easy to use, with a simple and elegant appearance borrowed from NEXTSTEP(tm).
|
||||
|
||||
Window Maker was designed keeping integration with GNUstep in mind and is the
|
||||
"official" window manager for it. Read more about GNUstep further on this
|
||||
file.
|
||||
|
||||
\begin{marketing babble}
|
||||
Window Maker is also KDE and GNOME compliant, which means you can use
|
||||
it as the window manager of these desktop environments and even fully
|
||||
replace kwm with wmaker if you use KDE. In that case, you would benefit
|
||||
from the best of both worlds, being able to take advantage of the usability
|
||||
and unique features of Window Maker, while still having access to KDE
|
||||
features such as the panel, pager and tight integration with all KDE
|
||||
applications. I've known of many cases where people keep switching KDE
|
||||
and Window Maker depending on their mood or needs of the day, but now
|
||||
you don't need that anymore :)
|
||||
As GNOME components become more available, the same can be said about it.
|
||||
\end{marketing babble}
|
||||
Hints (information given by applications to integrate well with the window
|
||||
manager) for Motif(tm), OPEN LOOK(tm), KDE and GNOME are also supported.
|
||||
So you can replace any of the window managers for these environments
|
||||
with Window Maker while keeping most, if not all, of the window manager
|
||||
functionality.
|
||||
|
||||
Window Maker was previously called WindowMaker.
|
||||
|
||||
@@ -136,6 +129,7 @@ options/features and other stuff.
|
||||
* po/ has message catalogs wich are the translated versions of the messages
|
||||
displayed by Window Maker.
|
||||
|
||||
* docklib-x.x.tar.gz a library for writing dockapps
|
||||
|
||||
|
||||
Mailing List
|
||||
@@ -203,6 +197,31 @@ Note that you must compile Window Maker with the --enable-sound configure
|
||||
flag and set the DisableSound option to NO.
|
||||
|
||||
|
||||
OpenL**k support
|
||||
================
|
||||
|
||||
I guess many users, mainly from the academic world, have to use
|
||||
applications written using the OpenL**k toolkits, so having support
|
||||
for these apps must be of some use.
|
||||
|
||||
To enable, use --enable-openlook when doing the configure. Note that
|
||||
not everything is implemented.
|
||||
|
||||
Implemented stuff include decoration hints and the push-pin. Not implemented
|
||||
stuff include _SUN_WINDOW_STATE (the compose led state stuff), header (not
|
||||
sure what's it) and footer strings.
|
||||
|
||||
Please give me feedback if something doesn't work. If the feature is
|
||||
already implemented, but is not working because of a bug, I'll try to
|
||||
have that fixed. If it's a non-implemented feature and you mention that
|
||||
it's important (ie: not just cosmetical), I'll consider implementing it.
|
||||
|
||||
The "out" state of the pushpin is emulated as a pushed-in close button.
|
||||
Just click on the button to make it pushed-out, which corresponds
|
||||
to the pinned-in state of the pushpin. If you push again in the pushed-out
|
||||
close button, it will act as a normal close button: it will close the window.
|
||||
|
||||
|
||||
Performance Tuning
|
||||
==================
|
||||
|
||||
|
||||
@@ -9,11 +9,10 @@ Status of GNOME support
|
||||
|
||||
GNOME window manager protocols seem to be a work in progress.
|
||||
Things still change fairly frequently, so, the stuff implemented
|
||||
may not reflect the protocol-of-the-day. If something doesn't
|
||||
work, that's because the protocols have changed again and I still
|
||||
may not reflect the latest protocol. If something doesn't work,
|
||||
that's probably because the protocols have changed again and I still
|
||||
didn't have time to reimplement everything or noticed that it
|
||||
changed (there are no version numbers in the specification).
|
||||
If that happens, please tell me exactly what doesn't work.
|
||||
changed. If that happens, please tell me exactly what doesn't work.
|
||||
|
||||
Other than that, the so called "GNOME Window Manager Compliance - How to
|
||||
write a GNOME compliant Window Manager" document, says this:
|
||||
@@ -48,3 +47,4 @@ Also, do not disable mwm hints support (they are enabled by default).
|
||||
|
||||
I am not sure, but using --enable-lite or DisableWSMouseActions=YES;
|
||||
might be a bad idea in case of GNOME.
|
||||
|
||||
|
||||
35
README.KDE
35
README.KDE
@@ -10,8 +10,8 @@ Window Maker, if you think these advantages are worthy:
|
||||
|
||||
Window Maker KWM
|
||||
=============================================================================
|
||||
Looks NEXTSTEP/NEXTSTEP enhanced Original, but reminds
|
||||
Weendoze
|
||||
Looks NEXTSTEP(tm)/NEXTSTEP(tm) Original, but reminds
|
||||
enhanced Windows(tm)
|
||||
|
||||
Decoration solid, gradient, multi-color solid, vertical and
|
||||
Textures gradient, pixmaps, textured horizontal gradient,
|
||||
@@ -23,11 +23,13 @@ Textures gradient, pixmaps, textured horizontal gradient,
|
||||
Configurable No Yes, but not totally
|
||||
Titlebar Buttons
|
||||
|
||||
Window Specific Yes No
|
||||
Configuration
|
||||
Mini CLI Yes, but limited Yes
|
||||
|
||||
Quick Keyboard Yes No
|
||||
Navigation
|
||||
Window Specific Yes In KDE 1.1, yes.
|
||||
Configuration In KDE 1.0, no.
|
||||
|
||||
Quick Keyboard Yes In KDE 1.1, yes
|
||||
Navigation In KDE 1.0, no.
|
||||
|
||||
Pager KDE pagers will work as Yes
|
||||
well as GNOME pagers
|
||||
@@ -35,11 +37,12 @@ Pager KDE pagers will work as Yes
|
||||
Session Not yet supported, but Yes, old (pre-X11R6) style
|
||||
Management X11R6 style SM is being worked.
|
||||
|
||||
Dock kpanel and the Dock kpanel
|
||||
Dock kpanel, GNOME panel and Dock kpanel
|
||||
|
||||
GNOME support Yes No
|
||||
|
||||
Memory Usage(1) 1.85Mb Lite: 1.79Mb 3.13Mb
|
||||
Memory Usage(1) 1.85Mb Lite: 1.79Mb In KDE 1.0, 3.13Mb
|
||||
In KDE 1.1, probably more
|
||||
|
||||
|
||||
(1) Memory usage was tested by running wmaker and kwm at the same machine
|
||||
@@ -56,15 +59,20 @@ To enable KDE support in Window Maker, you must compile it after
|
||||
configuring it as follows:
|
||||
./configure --enable-kde --enable-lite
|
||||
|
||||
The --enable-lite flag is optional, but will reduce some memory
|
||||
The --enable-lite flag is *optional*, but will reduce some memory
|
||||
usage by removing things that are duplicated in Window Maker and KDE.
|
||||
|
||||
Do not enable it if you don't care about a few dozen kbytes of memory
|
||||
savings (see table above). It won't make KDE or Window Maker any
|
||||
slower/faster.
|
||||
|
||||
Then, open WPrefs and turn on the "Disable mouse actions"
|
||||
option in the Mouse related options panel. Or enable the
|
||||
DisableWSMouseActions option by hand.
|
||||
|
||||
Then, just replace kwm with wmaker in your startkde script.
|
||||
If you are going to use Window Makers sound server, comment out
|
||||
kwmsound in startkde. Also if wmaker sets your root window
|
||||
background, comment out kbgndwm, kde's wallpaper setter.
|
||||
|
||||
Make sure to disable workspace background setting in KDE. If you
|
||||
wont be using Window Maker themes anyway, you can set
|
||||
@@ -109,3 +117,10 @@ positioning/maximization code and kpanel's position.
|
||||
* It seems kpanel (and maybe KDE in general) doesn't like dynamically
|
||||
changing the number of workspaces. So, don't create or destroy workspaces
|
||||
while running on KDE, unless you really need.
|
||||
|
||||
* If kpanel, kwmpager or kpager becomes confused about the number of
|
||||
windows present, restart them.
|
||||
|
||||
* Wmaker opens windows by default under/over the panel, when the panel is
|
||||
at top or left of screen. Use the GUI configuration tool WPrefs to change
|
||||
this.
|
||||
|
||||
7
TODO
7
TODO
@@ -2,13 +2,10 @@
|
||||
Do ASAP:
|
||||
========
|
||||
- fix bestvisual selection code. Broken.
|
||||
- add a dialog to let user choose if we should restart, restart twm or continue crashing on crash. Do not forget to check if wmaker is already fully running.
|
||||
- fix RemakeStackList() to account for transient windows
|
||||
- make unhide app map windows in the same stacking order they were before
|
||||
hiding
|
||||
- blink border of clients with UrgencyHint set between red and black
|
||||
- finish session stuff
|
||||
- fix scroller to not jump while dragging knob (lock setparameters() while dragging?)
|
||||
- fix scroller to not jump while dragging knob
|
||||
- add multiline support for balloons
|
||||
- move/add balloon to WINGs
|
||||
- finish XStandardColormap stuff in wrlib
|
||||
@@ -26,8 +23,6 @@ Need to do:
|
||||
functionality provided by the image libraries to load a minimal
|
||||
amount of data.
|
||||
+ investigate memory leaks
|
||||
- make Docked apps with WM_CLIENT_MACHINE be launched from respective
|
||||
machines (also put a marking showing it's remote launched)
|
||||
- rewrite defaults/wdefaults stuff to use WINGs UD stuff. Search list:
|
||||
~/G/D/WindowMaker /u/l/s/W/D/WindowMaker built-in-defaults
|
||||
- remake internal string processing to use wchar? unicode?
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
|
||||
changes since wmaker 0.50.2:
|
||||
............................
|
||||
|
||||
- added wsetabort() - look WUtil.h
|
||||
- fixed bug in WMList resize
|
||||
- added notification sending when changing textfield programatically
|
||||
- removed WMHideWindow()
|
||||
- fixed bug in WMCloseWindow()
|
||||
- added textfield selection patch
|
||||
- added color panel code
|
||||
|
||||
changes since wmaker 0.20.3:
|
||||
............................
|
||||
|
||||
|
||||
@@ -18,9 +18,7 @@ lib_LIBRARIES = libWINGs.a
|
||||
|
||||
include_HEADERS = WINGs.h WUtil.h WINGsP.h
|
||||
|
||||
bin_SCRIPTS = WINGs-flags
|
||||
|
||||
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget
|
||||
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget testcolorpanel
|
||||
|
||||
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
|
||||
|
||||
@@ -40,6 +38,10 @@ wmfile_SOURCES = wmfile.c
|
||||
|
||||
wmfile_LDADD = libWINGs.a $(LIBLIST)
|
||||
|
||||
testcolorpanel_SOURCES = testcolorpanel.c
|
||||
|
||||
testcolorpanel_LDADD = libWINGs.a $(LIBLIST)
|
||||
|
||||
|
||||
wmquery_SOURCES = wmquery.c
|
||||
|
||||
@@ -61,6 +63,7 @@ libWINGs_a_SOURCES = \
|
||||
wbrowser.c \
|
||||
wbutton.c \
|
||||
wcolor.c \
|
||||
wcolorpanel.c \
|
||||
wcolorwell.c \
|
||||
wevent.c \
|
||||
wfilepanel.c \
|
||||
|
||||
@@ -65,8 +65,6 @@ DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLFLAGS = @GFXLFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LD = @LD@
|
||||
@@ -79,19 +77,13 @@ NLSDIR = @NLSDIR@
|
||||
NM = @NM@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
AUTOMAKE_OPTIONS = no-dependencies
|
||||
@@ -110,9 +102,7 @@ lib_LIBRARIES = libWINGs.a
|
||||
|
||||
include_HEADERS = WINGs.h WUtil.h WINGsP.h
|
||||
|
||||
bin_SCRIPTS = WINGs-flags
|
||||
|
||||
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget
|
||||
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget testcolorpanel
|
||||
|
||||
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
|
||||
|
||||
@@ -132,6 +122,10 @@ wmfile_SOURCES = wmfile.c
|
||||
|
||||
wmfile_LDADD = libWINGs.a $(LIBLIST)
|
||||
|
||||
testcolorpanel_SOURCES = testcolorpanel.c
|
||||
|
||||
testcolorpanel_LDADD = libWINGs.a $(LIBLIST)
|
||||
|
||||
wmquery_SOURCES = wmquery.c
|
||||
|
||||
wmquery_LDADD = libWINGs.a $(LIBLIST)
|
||||
@@ -151,6 +145,7 @@ libWINGs_a_SOURCES = \
|
||||
wbrowser.c \
|
||||
wbutton.c \
|
||||
wcolor.c \
|
||||
wcolorpanel.c \
|
||||
wcolorwell.c \
|
||||
wevent.c \
|
||||
wfilepanel.c \
|
||||
@@ -196,10 +191,11 @@ X_PRE_LIBS = @X_PRE_LIBS@
|
||||
libWINGs_a_LIBADD =
|
||||
libWINGs_a_OBJECTS = configuration.o international.o notification.o \
|
||||
selection.o userdefaults.o wapplication.o wbrowser.o wbutton.o wcolor.o \
|
||||
wcolorwell.o wevent.o wfilepanel.o wframe.o wfont.o wfontpanel.o \
|
||||
widgets.o wlabel.o wlist.o wmisc.o wpanel.o wpixmap.o wpopupbutton.o \
|
||||
wscroller.o wscrollview.o wslider.o wsplitview.o wtextfield.o wwindow.o \
|
||||
wview.o error.o findfile.o hashtable.o memory.o usleep.o
|
||||
wcolorpanel.o wcolorwell.o wevent.o wfilepanel.o wframe.o wfont.o \
|
||||
wfontpanel.o widgets.o wlabel.o wlist.o wmisc.o wpanel.o wpixmap.o \
|
||||
wpopupbutton.o wscroller.o wscrollview.o wslider.o wsplitview.o \
|
||||
wtextfield.o wwindow.o wview.o error.o findfile.o hashtable.o memory.o \
|
||||
usleep.o
|
||||
AR = ar
|
||||
PROGRAMS = $(noinst_PROGRAMS)
|
||||
|
||||
@@ -222,8 +218,11 @@ testmywidget_DEPENDENCIES = libWINGs.a \
|
||||
$(top_builddir)/wrlib/libwraster.la \
|
||||
$(top_builddir)/libPropList/libPropList.la
|
||||
testmywidget_LDFLAGS =
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
|
||||
testcolorpanel_OBJECTS = testcolorpanel.o
|
||||
testcolorpanel_DEPENDENCIES = libWINGs.a \
|
||||
$(top_builddir)/wrlib/libwraster.la \
|
||||
$(top_builddir)/libPropList/libPropList.la
|
||||
testcolorpanel_LDFLAGS =
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||
@@ -237,8 +236,8 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
SOURCES = $(libWINGs_a_SOURCES) $(wtest_SOURCES) $(wmquery_SOURCES) $(wmfile_SOURCES) $(fontl_SOURCES) $(testmywidget_SOURCES)
|
||||
OBJECTS = $(libWINGs_a_OBJECTS) $(wtest_OBJECTS) $(wmquery_OBJECTS) $(wmfile_OBJECTS) $(fontl_OBJECTS) $(testmywidget_OBJECTS)
|
||||
SOURCES = $(libWINGs_a_SOURCES) $(wtest_SOURCES) $(wmquery_SOURCES) $(wmfile_SOURCES) $(fontl_SOURCES) $(testmywidget_SOURCES) $(testcolorpanel_SOURCES)
|
||||
OBJECTS = $(libWINGs_a_OBJECTS) $(wtest_OBJECTS) $(wmquery_OBJECTS) $(wmfile_OBJECTS) $(fontl_OBJECTS) $(testmywidget_OBJECTS) $(testcolorpanel_OBJECTS)
|
||||
|
||||
all: all-recursive all-am
|
||||
|
||||
@@ -356,24 +355,9 @@ testmywidget: $(testmywidget_OBJECTS) $(testmywidget_DEPENDENCIES)
|
||||
@rm -f testmywidget
|
||||
$(LINK) $(testmywidget_LDFLAGS) $(testmywidget_OBJECTS) $(testmywidget_LDADD) $(LIBS)
|
||||
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
|
||||
$(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
else if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
|
||||
$(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
else :; fi; fi; \
|
||||
done
|
||||
|
||||
uninstall-binSCRIPTS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
done
|
||||
testcolorpanel: $(testcolorpanel_OBJECTS) $(testcolorpanel_DEPENDENCIES)
|
||||
@rm -f testcolorpanel
|
||||
$(LINK) $(testcolorpanel_LDFLAGS) $(testcolorpanel_OBJECTS) $(testcolorpanel_LDADD) $(LIBS)
|
||||
|
||||
install-includeHEADERS: $(include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@@ -479,13 +463,13 @@ dvi: dvi-recursive
|
||||
check: all-am
|
||||
$(MAKE) check-recursive
|
||||
installcheck: installcheck-recursive
|
||||
all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(HEADERS)
|
||||
all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
|
||||
|
||||
install-exec-am: install-libLIBRARIES install-binSCRIPTS
|
||||
install-exec-am: install-libLIBRARIES
|
||||
|
||||
install-data-am: install-includeHEADERS
|
||||
|
||||
uninstall-am: uninstall-libLIBRARIES uninstall-binSCRIPTS uninstall-includeHEADERS
|
||||
uninstall-am: uninstall-libLIBRARIES uninstall-includeHEADERS
|
||||
|
||||
install-exec: install-exec-recursive install-exec-am
|
||||
@$(NORMAL_INSTALL)
|
||||
@@ -501,8 +485,7 @@ uninstall: uninstall-recursive uninstall-am
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs: installdirs-recursive
|
||||
$(mkinstalldirs) $(DATADIR)$(libdir) $(DATADIR)$(bindir) \
|
||||
$(DATADIR)$(includedir)
|
||||
$(mkinstalldirs) $(DATADIR)$(libdir) $(DATADIR)$(includedir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
@@ -555,12 +538,11 @@ clean-compile maintainer-clean-compile mostlyclean-libtool \
|
||||
distclean-libtool clean-libtool maintainer-clean-libtool \
|
||||
mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
|
||||
clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
|
||||
uninstall-binSCRIPTS install-binSCRIPTS uninstall-includeHEADERS \
|
||||
install-includeHEADERS install-data-recursive uninstall-data-recursive \
|
||||
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
|
||||
uninstalldirs-recursive all-recursive check-recursive \
|
||||
installcheck-recursive info-recursive dvi-recursive \
|
||||
mostlyclean-recursive distclean-recursive clean-recursive \
|
||||
uninstall-includeHEADERS install-includeHEADERS install-data-recursive \
|
||||
uninstall-data-recursive install-exec-recursive \
|
||||
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
|
||||
all-recursive check-recursive installcheck-recursive info-recursive \
|
||||
dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
|
||||
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
|
||||
distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
|
||||
installcheck all-am install-exec-am install-data-am uninstall-am \
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -65,8 +65,6 @@ DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLFLAGS = @GFXLFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LD = @LD@
|
||||
@@ -79,19 +77,13 @@ NLSDIR = @NLSDIR@
|
||||
NM = @NM@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
resdatadir = $(datadir)/WINGs
|
||||
|
||||
@@ -113,7 +113,7 @@ typedef enum {
|
||||
WALeft,
|
||||
WACenter,
|
||||
WARight,
|
||||
WMJustified /* not valid for textfields */
|
||||
WAJustified /* not valid for textfields */
|
||||
} WMAlignment;
|
||||
|
||||
|
||||
@@ -175,6 +175,17 @@ enum {
|
||||
WMDownTextMovement
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
WMGrayModeColorPanel,
|
||||
WMRGBModeColorPanel,
|
||||
WMCMYKModeColorPanel,
|
||||
WMHSBModeColorPanel,
|
||||
WMCustomPaletteModeColorPanel,
|
||||
WMColorListModeColorPanel,
|
||||
WMWheelModeColorPanel
|
||||
} WMColorPanelMode;
|
||||
|
||||
|
||||
|
||||
/* system images */
|
||||
#define WSIReturnArrow 1
|
||||
@@ -282,6 +293,8 @@ typedef WMFilePanel WMSavePanel;
|
||||
|
||||
typedef struct W_FontPanel WMFontPanel;
|
||||
|
||||
typedef struct W_ColorPanel WMColorPanel;
|
||||
|
||||
|
||||
/* item for WMList */
|
||||
typedef struct WMListItem {
|
||||
@@ -370,8 +383,18 @@ typedef WMWidget *WMMatrixCreateCellProc(WMMatrix *mPtr);
|
||||
typedef void WMBrowserFillColumnProc(WMBrowser *bPtr, int column);
|
||||
|
||||
|
||||
typedef Bool WMConvertSelectionProc(WMWidget *w, Atom selection, Atom target,
|
||||
Atom *type, void **value, unsigned *length,
|
||||
int *format);
|
||||
|
||||
typedef void WMLoseSelectionProc(WMWidget *w, Atom selection);
|
||||
|
||||
typedef void WMSelectionDoneProc(WMWidget *w, Atom selection, Atom target);
|
||||
|
||||
/* ....................................................................... */
|
||||
|
||||
|
||||
|
||||
void WMInitializeApplication(char *applicationName, int *argc, char **argv);
|
||||
|
||||
void WMSetApplicationDataPath(char *path);
|
||||
@@ -889,6 +912,20 @@ void WMSetPopUpButtonEnabled(WMPopUpButton *bPtr, Bool flag);
|
||||
|
||||
/* ....................................................................... */
|
||||
|
||||
WMColorPanel *WMGetColorPanel(WMScreen *scrPtr);
|
||||
|
||||
void WMFreeColorPanel(WMColorPanel *panel);
|
||||
|
||||
int WMRunColorPanel(WMColorPanel *panel, WMWindow *owner, RColor color);
|
||||
|
||||
void WMSetColorPanelColor(WMColorPanel *panel, RColor color);
|
||||
|
||||
RColor WMGetColorPanelColor(WMColorPanel *panel);
|
||||
|
||||
void WMSetPickerMode(WMColorPanel *panel, WMColorPanelMode mode);
|
||||
|
||||
/* ....................................................................... */
|
||||
|
||||
WMColorWell *WMCreateColorWell(WMWidget *parent);
|
||||
|
||||
void WMSetColorWellColor(WMColorWell *cPtr, WMColor *color);
|
||||
|
||||
@@ -177,6 +177,25 @@ typedef struct W_Screen {
|
||||
struct W_Pixmap *checkMark;
|
||||
|
||||
struct W_Pixmap *homeIcon;
|
||||
struct W_Pixmap *homeAltIcon;
|
||||
|
||||
struct W_Pixmap *magnifyIcon;
|
||||
struct W_Pixmap *wheelIcon;
|
||||
struct W_Pixmap *grayIcon;
|
||||
struct W_Pixmap *rgbIcon;
|
||||
struct W_Pixmap *cmykIcon;
|
||||
struct W_Pixmap *hsbIcon;
|
||||
struct W_Pixmap *customPaletteIcon;
|
||||
struct W_Pixmap *colorListIcon;
|
||||
|
||||
struct W_Pixmap *magnifyAltIcon;
|
||||
struct W_Pixmap *wheelAltIcon;
|
||||
struct W_Pixmap *grayAltIcon;
|
||||
struct W_Pixmap *rgbAltIcon;
|
||||
struct W_Pixmap *cmykAltIcon;
|
||||
struct W_Pixmap *hsbAltIcon;
|
||||
struct W_Pixmap *customPaletteAltIcon;
|
||||
struct W_Pixmap *colorListAltIcon;
|
||||
|
||||
struct W_Pixmap *defaultObjectIcon;
|
||||
|
||||
@@ -395,3 +414,5 @@ void W_RedisplayView(WMView *view);
|
||||
Bool W_ApplicationInitialized(void);
|
||||
|
||||
char *W_GetTextSelection(WMScreen *scr, Atom selection);
|
||||
|
||||
void W_HandleSelectionEvent(XEvent *event);
|
||||
|
||||
@@ -39,7 +39,8 @@
|
||||
|
||||
#ifdef NDEBUG
|
||||
|
||||
#define wassertr(expr, val) ((void)0)
|
||||
#define wassertr(expr) {}
|
||||
#define wassertrv(expr, val) {}
|
||||
|
||||
#else /* !NDEBUG */
|
||||
|
||||
@@ -118,6 +119,10 @@ typedef void WMNotificationObserverAction(void *observerData,
|
||||
|
||||
/*......................................................................*/
|
||||
|
||||
typedef void (waborthandler)(int);
|
||||
|
||||
waborthandler *wsetabort(waborthandler*);
|
||||
|
||||
|
||||
void wfatal(const char *msg, ...);
|
||||
void wwarning(const char *msg, ...);
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <signal.h>
|
||||
|
||||
#ifndef False
|
||||
# define False 0
|
||||
@@ -37,7 +38,33 @@
|
||||
# define True 1
|
||||
#endif
|
||||
|
||||
extern void wAbort(int);
|
||||
|
||||
static void
|
||||
defaultHandler(int bla)
|
||||
{
|
||||
if (bla)
|
||||
raise(SIGABRT);
|
||||
else
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
static waborthandler *aborthandler = (waborthandler*)defaultHandler;
|
||||
|
||||
#define wAbort(a) (*aborthandler)(a)
|
||||
|
||||
|
||||
waborthandler*
|
||||
wsetabort(waborthandler *handler)
|
||||
{
|
||||
waborthandler *old = aborthandler;
|
||||
|
||||
aborthandler = handler;
|
||||
|
||||
return old;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int Aborting=0; /* if we're in the middle of an emergency exit */
|
||||
|
||||
|
||||
@@ -6,196 +6,260 @@
|
||||
|
||||
#include "WINGsP.h"
|
||||
|
||||
#if 0
|
||||
#define MAX_PROPERTY_SIZE 8*1024
|
||||
|
||||
typedef struct W_SelectionHandler {
|
||||
|
||||
typedef struct SelectionHandler {
|
||||
WMWidget *widget;
|
||||
Atom selection;
|
||||
void *clientData;
|
||||
WMSelectionProc *proc;
|
||||
WMHandlerID timerID;
|
||||
W_SelectionHandler *next;
|
||||
W_SelectionHandler *prev;
|
||||
} W_SelectionHandler;
|
||||
#endif
|
||||
Time timestamp;
|
||||
WMConvertSelectionProc *convProc;
|
||||
WMLoseSelectionProc *loseProc;
|
||||
WMSelectionDoneProc *doneProc;
|
||||
|
||||
#define SELECTION_TIMEOUT 2000
|
||||
#define MAX_PROPERTY_SIZE 10*1024
|
||||
#if 0
|
||||
struct {
|
||||
unsigned delete_pending:1;
|
||||
unsigned done_pending:1;
|
||||
} flags;
|
||||
|
||||
struct SelectionHandler *next;
|
||||
} SelectionHandler;
|
||||
|
||||
|
||||
static SelectionHandler *selHandlers = NULL;
|
||||
|
||||
|
||||
void
|
||||
WMWriteSelectionToClipboard(WMSelection *selection)
|
||||
WMDeleteSelectionHandler(WMWidget *widget, Atom selection)
|
||||
{
|
||||
}
|
||||
SelectionHandler *handler, *tmp;
|
||||
Display *dpy = WMWidgetScreen(widget)->display;
|
||||
Window win = WMWidgetXID(widget);
|
||||
Time timestamp;
|
||||
|
||||
if (!selHandlers)
|
||||
return;
|
||||
|
||||
WMSelection*
|
||||
WMCreateSelectionWithData(WMData *data, Atom type)
|
||||
{
|
||||
tmp = selHandlers;
|
||||
|
||||
}
|
||||
#endif
|
||||
if (tmp->widget == widget) {
|
||||
|
||||
#if 0
|
||||
|
||||
#define MAX_PROPERTY_SIZE 100*1024
|
||||
|
||||
|
||||
static void
|
||||
handleSelectionEvent(XEvent *event, void *data)
|
||||
{
|
||||
W_SelectionHandler *handler = (W_SelectionHandler*)data;
|
||||
char *data = NULL;
|
||||
Atom type;
|
||||
int format, result;
|
||||
unsigned long numItems, bytesAfter;
|
||||
WMScreen *scr = WMWidgetScreen(handler->widget);
|
||||
|
||||
WMDeleteTimerHandler(handler->timerID);
|
||||
|
||||
if (handler->next)
|
||||
handler->next->prev = handler->prev;
|
||||
if (handler->prev)
|
||||
handler->prev->next = handler->next;
|
||||
if (handler == WMWidgetScreen(handler->widget)->selectionHandlerList)
|
||||
WMWidgetScreen(handler->widget)->selectionHandlerList = handler->next;
|
||||
|
||||
if (event->xselection.property == None) {
|
||||
char *name = XGetAtomName(event->xselection.display,
|
||||
handler->selection);
|
||||
char *form = XGetAtomName(event->xselection.display, handler->type);
|
||||
wwarning("error retrieving selection %s with form %s\n", name, form);
|
||||
if (name)
|
||||
XFree(name);
|
||||
if (form)
|
||||
XFree(form);
|
||||
free(handler);
|
||||
if (tmp->flags.done_pending) {
|
||||
tmp->flags.delete_pending = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (XGetWindowProperty(event->xselection.display,
|
||||
event->xselection.requestor, handler->property,
|
||||
0, MAX_PROPERTY_SIZE, False, AnyPropertyType,
|
||||
&type, &format, &numItems, &bytesAfter,
|
||||
&data) != Success || type == None) {
|
||||
if (data)
|
||||
XFree(data);
|
||||
free(handler);
|
||||
return;
|
||||
}
|
||||
if (bytesAfter!=0) {
|
||||
wwarning("data in selection is too large");
|
||||
if (data)
|
||||
XFree(data);
|
||||
free(handler);
|
||||
return;
|
||||
}
|
||||
if (type == XA_STRING || type == scr->compoundTextAtom) {
|
||||
if (format!=8) {
|
||||
wwarning("string in selection has format %i, which is invalid",
|
||||
format);
|
||||
if (data)
|
||||
XFree(data);
|
||||
free(handler);
|
||||
return;
|
||||
}
|
||||
(*handler->proc)();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
timeoutHandler(void *data)
|
||||
{
|
||||
W_SelectionHandler *handler = (W_SelectionHandler*)data;
|
||||
|
||||
wwarning("selection timed out");
|
||||
WMDeleteEventHandler(WMWidgetView(handler->widget), SelectionNotifyMask,
|
||||
handleSelectionEvent, data);
|
||||
if (handler->next)
|
||||
handler->next->prev = handler->prev;
|
||||
if (handler->prev)
|
||||
handler->prev->next = handler->next;
|
||||
if (handler == WMWidgetScreen(handler->widget)->selectionHandlerList)
|
||||
WMWidgetScreen(handler->widget)->selectionHandlerList = handler->next;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
WMGetSelection(WMWidget *widget, Atom selection, Atom type, Atom property,
|
||||
WMSelectionProc *proc, void *clientData, Time time)
|
||||
{
|
||||
WMScreen *scr = WMWidgetScreen(widget);
|
||||
void *data;
|
||||
Atom rtype;
|
||||
int bits;
|
||||
unsigned long len, bytes;
|
||||
unsigned char *data;
|
||||
int buffer = -1;
|
||||
|
||||
switch (selection) {
|
||||
case XA_CUT_BUFFER0:
|
||||
buffer = 0;
|
||||
break;
|
||||
case XA_CUT_BUFFER1:
|
||||
buffer = 1;
|
||||
break;
|
||||
case XA_CUT_BUFFER2:
|
||||
buffer = 2;
|
||||
break;
|
||||
case XA_CUT_BUFFER3:
|
||||
buffer = 3;
|
||||
break;
|
||||
case XA_CUT_BUFFER4:
|
||||
buffer = 4;
|
||||
break;
|
||||
case XA_CUT_BUFFER5:
|
||||
buffer = 5;
|
||||
break;
|
||||
case XA_CUT_BUFFER6:
|
||||
buffer = 6;
|
||||
break;
|
||||
case XA_CUT_BUFFER7:
|
||||
buffer = 7;
|
||||
break;
|
||||
}
|
||||
if (buffer >= 0) {
|
||||
char *data;
|
||||
int size;
|
||||
|
||||
data = XFetchBuffer(scr->display, &size, buffer);
|
||||
|
||||
selHandlers = tmp->next;
|
||||
timestamp = tmp->timestamp;
|
||||
free(tmp);
|
||||
} else {
|
||||
W_SelectionHandler *handler;
|
||||
while (tmp->next) {
|
||||
if (tmp->next->widget == widget) {
|
||||
|
||||
XDeleteProperty(scr->display, WMWidgetXID(widget), selection);
|
||||
XConvertSelection(scr->display, selection, type, property,
|
||||
WMWidgetXID(widget), time);
|
||||
if (tmp->next->flags.done_pending) {
|
||||
tmp->next->flags.delete_pending = 1;
|
||||
return;
|
||||
}
|
||||
handler = tmp->next;
|
||||
tmp->next = handler->next;
|
||||
timestamp = handler->timestamp;
|
||||
free(handler);
|
||||
break;
|
||||
}
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
|
||||
handler = wmalloc(sizeof(W_SelectionHandler));
|
||||
handler->widget = widget;
|
||||
handler->selection = selection;
|
||||
handler->type = type;
|
||||
handler->property = property;
|
||||
handler->clientData = clientData;
|
||||
handler->proc = proc;
|
||||
handler->timerID = WMAddTimerHandler(SELECTION_TIMEOUT,
|
||||
timeoutHandler, handler);
|
||||
XGrabServer(dpy);
|
||||
if (XGetSelectionOwner(dpy, selection) == win) {
|
||||
XSetSelectionOwner(dpy, selection, None, timestamp);
|
||||
}
|
||||
XUngrabServer(dpy);
|
||||
}
|
||||
|
||||
handler->next = scr->selectionHandlerList;
|
||||
handler->prev = NULL;
|
||||
if (scr->selectionHandlerList)
|
||||
scr->selectionHandlerList->prev = handler;
|
||||
scr->selectionHandlerList = handler;
|
||||
|
||||
WMCreateEventHandler(WMWidgetView(widget), SelectionNotifyMask,
|
||||
handleSelectionEvent, handler);
|
||||
static int gotError = 0;
|
||||
/*
|
||||
static int
|
||||
errorHandler(XErrorEvent *error)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
|
||||
static Bool
|
||||
writeSelection(Display *dpy, Window requestor, Atom property, Atom type,
|
||||
void *value, long length, int format)
|
||||
{
|
||||
/*
|
||||
printf("write to %x: %s\n", requestor, XGetAtomName(dpy, property));
|
||||
*/
|
||||
gotError = 0;
|
||||
|
||||
if (!XChangeProperty(dpy, requestor, property, type, format,
|
||||
PropModeReplace, value, length))
|
||||
return 0;
|
||||
XFlush(dpy);
|
||||
|
||||
return !gotError;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
notifySelection(XEvent *event, Atom prop)
|
||||
{
|
||||
XEvent ev;
|
||||
/*
|
||||
printf("envent to %x\n", event->xselectionrequest.requestor);
|
||||
*/
|
||||
ev.xselection.type = SelectionNotify;
|
||||
ev.xselection.serial = 0;
|
||||
ev.xselection.send_event = True;
|
||||
ev.xselection.display = event->xselectionrequest.display;
|
||||
ev.xselection.requestor = event->xselectionrequest.requestor;
|
||||
ev.xselection.target = event->xselectionrequest.target;
|
||||
ev.xselection.property = prop;
|
||||
ev.xselection.time = event->xselectionrequest.time;
|
||||
|
||||
XSendEvent(event->xany.display, event->xselectionrequest.requestor,
|
||||
False, 0, &ev);
|
||||
XFlush(event->xany.display);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
W_HandleSelectionEvent(XEvent *event)
|
||||
{
|
||||
SelectionHandler *handler;
|
||||
|
||||
handler = selHandlers;
|
||||
|
||||
while (handler) {
|
||||
if (WMWidgetXID(handler->widget)==event->xany.window
|
||||
/* && handler->selection == event->selection*/) {
|
||||
|
||||
switch (event->type) {
|
||||
case SelectionClear:
|
||||
if (handler->loseProc)
|
||||
(*handler->loseProc)(handler->widget, handler->selection);
|
||||
break;
|
||||
|
||||
case SelectionRequest:
|
||||
if (handler->convProc) {
|
||||
Atom atom;
|
||||
void *data;
|
||||
unsigned length;
|
||||
int format;
|
||||
Atom prop;
|
||||
|
||||
/* they're requesting for something old */
|
||||
if (event->xselectionrequest.time < handler->timestamp
|
||||
&& event->xselectionrequest.time != CurrentTime) {
|
||||
|
||||
notifySelection(event, None);
|
||||
break;
|
||||
}
|
||||
|
||||
handler->flags.done_pending = 1;
|
||||
|
||||
if (!(*handler->convProc)(handler->widget,
|
||||
handler->selection,
|
||||
event->xselectionrequest.target,
|
||||
&atom, &data, &length, &format)) {
|
||||
|
||||
notifySelection(event, None);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
prop = event->xselectionrequest.property;
|
||||
/* obsolete clients that don't set the property field */
|
||||
if (prop == None)
|
||||
prop = event->xselectionrequest.target;
|
||||
|
||||
if (!writeSelection(event->xselectionrequest.display,
|
||||
event->xselectionrequest.requestor,
|
||||
prop, atom, data, length, format)) {
|
||||
|
||||
free(data);
|
||||
notifySelection(event, None);
|
||||
break;
|
||||
}
|
||||
free(data);
|
||||
|
||||
notifySelection(event, prop);
|
||||
|
||||
if (handler->doneProc) {
|
||||
(*handler->doneProc)(handler->widget,
|
||||
handler->selection,
|
||||
event->xselectionrequest.target);
|
||||
}
|
||||
|
||||
handler->flags.done_pending = 0;
|
||||
|
||||
/* in case the handler was deleted from some
|
||||
* callback */
|
||||
if (handler->flags.delete_pending) {
|
||||
WMDeleteSelectionHandler(handler->widget,
|
||||
handler->selection);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SelectionNotify:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
handler = handler->next;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Bool
|
||||
WMCreateSelectionHandler(WMWidget *w, Atom selection, Time timestamp,
|
||||
WMConvertSelectionProc *convProc,
|
||||
WMLoseSelectionProc *loseProc,
|
||||
WMSelectionDoneProc *doneProc)
|
||||
{
|
||||
SelectionHandler *handler, *tmp;
|
||||
Display *dpy = WMWidgetScreen(w)->display;
|
||||
|
||||
XSetSelectionOwner(dpy, selection, WMWidgetXID(w), timestamp);
|
||||
if (XGetSelectionOwner(dpy, selection) != WMWidgetXID(w))
|
||||
return False;
|
||||
|
||||
handler = malloc(sizeof(SelectionHandler));
|
||||
if (!handler)
|
||||
return False;
|
||||
|
||||
handler->widget = w;
|
||||
handler->selection = selection;
|
||||
handler->timestamp = timestamp;
|
||||
handler->convProc = convProc;
|
||||
handler->loseProc = loseProc;
|
||||
handler->doneProc = doneProc;
|
||||
memset(&handler->flags, 0, sizeof(handler->flags));
|
||||
|
||||
if (!selHandlers) {
|
||||
/* first in the queue */
|
||||
handler->next = selHandlers;
|
||||
selHandlers = handler;
|
||||
} else {
|
||||
tmp = selHandlers;
|
||||
while (tmp->next) {
|
||||
tmp = tmp->next;
|
||||
}
|
||||
handler->next = tmp->next;
|
||||
tmp->next = handler;
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -270,7 +334,8 @@ W_GetTextSelection(WMScreen *scr, Atom selection)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* nobody owns the selection */
|
||||
/* nobody owns the selection or the current owner has
|
||||
* nothing to do with what we need */
|
||||
if (ev.xselection.property == None) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
53
WINGs/testcolorpanel.c
Normal file
53
WINGs/testcolorpanel.c
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Author: Pascal Hofstee <daeron@shadowmere.student.utwente.nl>
|
||||
*/
|
||||
|
||||
|
||||
#include "WINGs.h"
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "logo.xpm"
|
||||
|
||||
void
|
||||
wAbort()
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
|
||||
char *ProgName;
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
Display *dpy = XOpenDisplay("");
|
||||
WMScreen *scr;
|
||||
WMPixmap *pixmap;
|
||||
WMColorPanel *panel;
|
||||
RColor startcolor;
|
||||
|
||||
WMInitializeApplication("WMColorPicker", &argc, argv);
|
||||
|
||||
ProgName = argv[0];
|
||||
|
||||
if (!dpy) {
|
||||
puts("could not open display");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
scr = WMCreateSimpleApplicationScreen(dpy);
|
||||
|
||||
|
||||
|
||||
pixmap = WMCreatePixmapFromXPMData(scr, GNUSTEP_XPM);
|
||||
WMSetApplicationIconImage(scr, pixmap); WMReleasePixmap(pixmap);
|
||||
panel = WMGetColorPanel(scr);
|
||||
|
||||
startcolor.red = 0;
|
||||
startcolor.green = 0;
|
||||
startcolor.blue = 255;
|
||||
|
||||
WMRunColorPanel(panel, NULL, startcolor);
|
||||
return 0;
|
||||
}
|
||||
@@ -4,6 +4,9 @@
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
||||
|
||||
#include "../src/config.h"
|
||||
|
||||
#include "WUtil.h"
|
||||
|
||||
#include <proplist.h>
|
||||
@@ -168,7 +171,7 @@ WMGetStandardUserDefaults(void)
|
||||
/* set to save changes in defaults when program is exited */
|
||||
|
||||
|
||||
#if !defined(HAVE_ATEXIT) && defined(HAVE_ON_EXIT)
|
||||
#ifndef HAVE_ATEXIT
|
||||
on_exit(saveDefaultsChanges,0);
|
||||
#else
|
||||
atexit(saveDefaultsChanges);
|
||||
|
||||
@@ -159,7 +159,7 @@ WMPathForResourceOfType(char *resource, char *ext)
|
||||
return path;
|
||||
}
|
||||
|
||||
appdir = wmalloc(strlen(WMApplication.applicationName)+8);
|
||||
appdir = wmalloc(strlen(WMApplication.applicationName)+10);
|
||||
sprintf(appdir, "Apps/%s.app", WMApplication.applicationName);
|
||||
|
||||
if (getenv("GNUSTEP_USER_ROOT")) {
|
||||
|
||||
2792
WINGs/wcolorpanel.c
Normal file
2792
WINGs/wcolorpanel.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -16,18 +16,18 @@
|
||||
#endif
|
||||
|
||||
|
||||
#include <X11/Xos.h>
|
||||
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
# include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GETTIMEOFDAY
|
||||
# include <sys/time.h>
|
||||
# ifdef TIME_WITH_SYS_TIME
|
||||
# include <time.h>
|
||||
# endif
|
||||
#else /* ! HAVE_GETTIMEOFDAY */
|
||||
# include <time.h>
|
||||
#endif /* ! HAVE_GETTIMEOFDAY */
|
||||
#include <time.h>
|
||||
|
||||
#ifndef X_GETTIMEOFDAY
|
||||
#define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
extern _WINGsConfiguration WINGsConfiguration;
|
||||
@@ -119,15 +119,10 @@ static WMEventHook *extraEventHandler=NULL;
|
||||
#define idlePending() (idleHandler)
|
||||
|
||||
|
||||
#ifdef HAVE_GETTIMEOFDAY
|
||||
static void
|
||||
rightNow(struct timeval *tv) {
|
||||
gettimeofday(tv, NULL);
|
||||
X_GETTIMEOFDAY(tv);
|
||||
}
|
||||
#else /* !HAVE_GETTIMEOFDAY */
|
||||
# define rightNow(tv) (tv)->tv_sec==time(NULL),(tv)->tv_usec=0
|
||||
#endif /* !HAVE_GETTIMEOFDAY */
|
||||
|
||||
|
||||
/* is t1 after t2 ? */
|
||||
#define IS_AFTER(t1, t2) (((t1).tv_sec > (t2).tv_sec) || \
|
||||
@@ -591,6 +586,12 @@ WMHandleEvent(XEvent *event)
|
||||
|
||||
toplevel = W_TopLevelOfView(view);
|
||||
|
||||
if (event->type == SelectionNotify || event->type == SelectionClear
|
||||
|| event->type == SelectionRequest) {
|
||||
/* handle selection related events */
|
||||
W_HandleSelectionEvent(event);
|
||||
}
|
||||
|
||||
/* if it's a key event, redispatch it to the focused control */
|
||||
if (mask & (KeyPressMask|KeyReleaseMask)) {
|
||||
W_View *focused = W_FocusedViewOfToplevel(toplevel);
|
||||
|
||||
@@ -194,6 +194,7 @@ makeFilePanel(WMScreen *scrPtr, char *name, char *title)
|
||||
WMResizeWidget(fPtr->homeButton, 28, 28);
|
||||
WMSetButtonImagePosition(fPtr->homeButton, WIPImageOnly);
|
||||
WMSetButtonImage(fPtr->homeButton, scrPtr->homeIcon);
|
||||
WMSetButtonAltImage(fPtr->homeButton, scrPtr->homeAltIcon);
|
||||
WMSetButtonAction(fPtr->homeButton, goHome, fPtr);
|
||||
|
||||
WMRealizeWidget(fPtr->win);
|
||||
@@ -281,6 +282,9 @@ WMRunModalSavePanelForDirectory(WMFilePanel *panel, WMWindow *owner,
|
||||
WMHandleEvent(&event);
|
||||
}
|
||||
|
||||
/* Must withdraw window because the next time we map
|
||||
* it, it might have a different transient owner.
|
||||
*/
|
||||
WMCloseWindow(panel->win);
|
||||
|
||||
return (panel->flags.canceled ? False : True);
|
||||
|
||||
151
WINGs/widgets.c
151
WINGs/widgets.c
@@ -455,6 +455,157 @@ loadPixmaps(WMScreen *scr)
|
||||
scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* Magnifying Glass Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 24, 0, 40, 32);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->magnifyIcon = NULL;
|
||||
} else {
|
||||
scr->magnifyIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 32, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* ColorWheel Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 0, 25, 24, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->wheelIcon = NULL;
|
||||
} else {
|
||||
scr->wheelIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 24, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* GrayScale Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 65, 0, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->grayIcon = NULL;
|
||||
} else {
|
||||
scr->grayIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* RGB Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 25, 33, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->rgbIcon = NULL;
|
||||
} else {
|
||||
scr->rgbIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* CMYK Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 65, 25, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->cmykIcon = NULL;
|
||||
} else {
|
||||
scr->cmykIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* HSB Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 0, 57, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->hsbIcon = NULL;
|
||||
} else {
|
||||
scr->hsbIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* CustomColorPalette Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 81, 57, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->customPaletteIcon = NULL;
|
||||
} else {
|
||||
scr->customPaletteIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* ColorList Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 41, 57, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->colorListIcon = NULL;
|
||||
} else {
|
||||
scr->colorListIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
|
||||
RDestroyImage(image);
|
||||
|
||||
image = RLoadImage(scr->rcontext, WINGS_IMAGES_FILE, 0);
|
||||
if (!image) {
|
||||
wwarning("WINGs: could not load widget images file: %s",
|
||||
RMessageForError(RErrorCode));
|
||||
return False;
|
||||
}
|
||||
/* make it have a white background */
|
||||
gray.red = 0xff;
|
||||
gray.green = 0xff;
|
||||
gray.blue = 0xff;
|
||||
RCombineImageWithColor(image, &gray);
|
||||
tmp = RGetSubImage(image, 0, 0, 24, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->homeAltIcon = NULL;
|
||||
} else {
|
||||
scr->homeAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 24, 24,
|
||||
scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* Magnifying Glass Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 25, 0, 40, 32);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->magnifyAltIcon = NULL;
|
||||
} else {
|
||||
scr->magnifyAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 32, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* ColorWheel Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 0, 25, 24, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->wheelAltIcon = NULL;
|
||||
} else {
|
||||
scr->wheelAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 24, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* GrayScale Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 65, 0, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->grayAltIcon = NULL;
|
||||
} else {
|
||||
scr->grayAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* RGB Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 25, 33, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->rgbAltIcon = NULL;
|
||||
} else {
|
||||
scr->rgbAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* CMYK Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 65, 25, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->cmykAltIcon = NULL;
|
||||
} else {
|
||||
scr->cmykAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* HSB Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 0, 57, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->hsbAltIcon = NULL;
|
||||
} else {
|
||||
scr->hsbAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* CustomColorPalette Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 81, 57, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->customPaletteAltIcon = NULL;
|
||||
} else {
|
||||
scr->customPaletteAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
/* ColorList Icon for ColorPanel */
|
||||
tmp = RGetSubImage(image, 41, 57, 40, 24);
|
||||
if (!RConvertImage(scr->rcontext, tmp, &pixmap)) {
|
||||
scr->colorListAltIcon = NULL;
|
||||
} else {
|
||||
scr->colorListAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth);
|
||||
}
|
||||
RDestroyImage(tmp);
|
||||
|
||||
RDestroyImage(image);
|
||||
|
||||
#if 0
|
||||
|
||||
@@ -752,16 +752,16 @@ handleActionEvents(XEvent *event, void *data)
|
||||
if (event->xbutton.x > WMWidgetWidth(lPtr->vScroller)) {
|
||||
tmp = getItemIndexAt(lPtr, event->xbutton.y);
|
||||
|
||||
if (tmp>=0) {
|
||||
WMSelectListItem(lPtr, tmp);
|
||||
lPtr->selectedItem = tmp;
|
||||
}
|
||||
lPtr->flags.buttonPressed = 1;
|
||||
|
||||
if (WMIsDoubleClick(event)) {
|
||||
if (tmp >= 0) {
|
||||
WMSelectListItem(lPtr, tmp);
|
||||
if (tmp == lPtr->selectedItem && WMIsDoubleClick(event)) {
|
||||
if (lPtr->doubleAction)
|
||||
(*lPtr->doubleAction)(lPtr, lPtr->doubleClientData);
|
||||
}
|
||||
lPtr->selectedItem = tmp;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -793,6 +793,14 @@ resizeList(WMList *lPtr, unsigned int width, unsigned int height)
|
||||
} else {
|
||||
lPtr->flags.dontFitAll = 0;
|
||||
}
|
||||
|
||||
if (lPtr->itemCount - lPtr->topItem <= lPtr->fullFitLines) {
|
||||
lPtr->topItem = lPtr->itemCount - lPtr->fullFitLines;
|
||||
if (lPtr->topItem < 0)
|
||||
lPtr->topItem = 0;
|
||||
}
|
||||
|
||||
updateScroller(lPtr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -190,8 +190,8 @@ WMInsertPopUpButtonItem(WMPopUpButton *bPtr, int index, char *title)
|
||||
while (--i > 0) {
|
||||
tmp = tmp->nextPtr;
|
||||
}
|
||||
bPtr->items->nextPtr = tmp->nextPtr;
|
||||
tmp->nextPtr = bPtr->items;
|
||||
itemPtr->nextPtr = tmp->nextPtr;
|
||||
tmp->nextPtr = itemPtr;
|
||||
}
|
||||
|
||||
bPtr->itemCount++;
|
||||
|
||||
@@ -37,6 +37,7 @@ typedef struct W_TextField {
|
||||
short offsetWidth; /* offset of text from border */
|
||||
|
||||
WMRange selection;
|
||||
WMRange prevselection;
|
||||
|
||||
#if 0
|
||||
WMHandlerID timerID; /* for cursor blinking */
|
||||
@@ -131,6 +132,7 @@ incrToFit(TextField *tPtr)
|
||||
return vp!=tPtr->viewPosition;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
incrToFit2(TextField *tPtr)
|
||||
{
|
||||
@@ -248,6 +250,8 @@ WMInsertTextFieldText(WMTextField *tPtr, char *text, int position)
|
||||
}
|
||||
|
||||
paintTextField(tPtr);
|
||||
|
||||
WMPostNotificationName(WMTextDidChangeNotification, tPtr, NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -281,6 +285,8 @@ WMDeleteTextFieldRange(WMTextField *tPtr, WMRange range)
|
||||
}
|
||||
|
||||
paintTextField(tPtr);
|
||||
|
||||
WMPostNotificationName(WMTextDidChangeNotification, tPtr, NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -318,6 +324,8 @@ WMSetTextFieldText(WMTextField *tPtr, char *text)
|
||||
|
||||
if (tPtr->view->flags.realized)
|
||||
paintTextField(tPtr);
|
||||
|
||||
WMPostNotificationName(WMTextDidChangeNotification, tPtr, NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -405,6 +413,8 @@ paintCursor(TextField *tPtr)
|
||||
case WALeft:
|
||||
cx += tPtr->offsetWidth;
|
||||
break;
|
||||
case WAJustified:
|
||||
/* not supported */
|
||||
case WACenter:
|
||||
textWidth = WMWidthOfString(screen->normalFont, tPtr->text,
|
||||
tPtr->textLen);
|
||||
@@ -463,6 +473,7 @@ paintTextField(TextField *tPtr)
|
||||
W_Screen *screen = tPtr->view->screen;
|
||||
W_View *view = tPtr->view;
|
||||
int tx, ty, tw, th;
|
||||
int rx;
|
||||
int bd;
|
||||
int totalWidth;
|
||||
|
||||
@@ -520,6 +531,29 @@ paintTextField(TextField *tPtr)
|
||||
&(tPtr->text[tPtr->viewPosition]),
|
||||
tPtr->textLen - tPtr->viewPosition);
|
||||
|
||||
if (tPtr->selection.count) {
|
||||
int count;
|
||||
|
||||
count = tPtr->selection.count < 0
|
||||
? tPtr->selection.position + tPtr->selection.count
|
||||
: tPtr->selection.position;
|
||||
|
||||
rx = tx + WMWidthOfString(screen->normalFont,
|
||||
&(tPtr->text[tPtr->viewPosition]),
|
||||
count);
|
||||
|
||||
XSetBackground(screen->display, screen->textFieldGC,
|
||||
screen->gray->color.pixel);
|
||||
|
||||
WMDrawImageString(screen, view->window, screen->textFieldGC,
|
||||
screen->normalFont, rx, ty,
|
||||
&(tPtr->text[count]),
|
||||
abs(tPtr->selection.count));
|
||||
|
||||
XSetBackground(screen->display, screen->textFieldGC,
|
||||
screen->white->color.pixel);
|
||||
}
|
||||
|
||||
if (!tPtr->flags.enabled)
|
||||
WMSetColorInGC(screen->black, screen->textFieldGC);
|
||||
}
|
||||
@@ -559,6 +593,7 @@ blinkCursor(void *data)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static void
|
||||
handleEvents(XEvent *event, void *data)
|
||||
{
|
||||
@@ -632,6 +667,14 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
||||
count = XLookupString(&event->xkey, buffer, 63, &ksym, NULL);
|
||||
buffer[count] = '\0';
|
||||
|
||||
if (!event->xkey.state & ShiftMask) {
|
||||
if (tPtr->selection.count)
|
||||
refresh = 1;
|
||||
tPtr->prevselection = tPtr->selection;
|
||||
tPtr->selection.position = tPtr->cursorPosition;
|
||||
tPtr->selection.count = 0;
|
||||
}
|
||||
|
||||
switch (ksym) {
|
||||
case XK_Tab:
|
||||
if (event->xkey.state & ShiftMask) {
|
||||
@@ -666,7 +709,16 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
||||
case XK_Left:
|
||||
if (tPtr->cursorPosition > 0) {
|
||||
paintCursor(tPtr);
|
||||
if (event->xkey.state & ControlMask) {
|
||||
int i;
|
||||
for (i = tPtr->cursorPosition - 1; i >= 0; i--)
|
||||
if (tPtr->text[i] == ' ' || i == 0) {
|
||||
tPtr->cursorPosition = i;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
tPtr->cursorPosition--;
|
||||
}
|
||||
if (tPtr->cursorPosition < tPtr->viewPosition) {
|
||||
tPtr->viewPosition = tPtr->cursorPosition;
|
||||
refresh = 1;
|
||||
@@ -684,7 +736,16 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
||||
case XK_Right:
|
||||
if (tPtr->cursorPosition < tPtr->textLen) {
|
||||
paintCursor(tPtr);
|
||||
if (event->xkey.state & ControlMask) {
|
||||
int i;
|
||||
for (i = tPtr->cursorPosition + 1; i <= tPtr->textLen; i++)
|
||||
if (tPtr->text[i] == ' ' || i == tPtr->textLen) {
|
||||
tPtr->cursorPosition = i;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
tPtr->cursorPosition++;
|
||||
}
|
||||
while (WMWidthOfString(scr->normalFont,
|
||||
&(tPtr->text[tPtr->viewPosition]),
|
||||
tPtr->cursorPosition-tPtr->viewPosition)
|
||||
@@ -728,7 +789,7 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
||||
while (WMWidthOfString(scr->normalFont,
|
||||
&(tPtr->text[tPtr->viewPosition]),
|
||||
tPtr->textLen-tPtr->viewPosition)
|
||||
>= tPtr->usableWidth) {
|
||||
> tPtr->usableWidth) {
|
||||
tPtr->viewPosition++;
|
||||
refresh = 1;
|
||||
}
|
||||
@@ -745,8 +806,16 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
||||
if (tPtr->cursorPosition > 0) {
|
||||
WMRange range;
|
||||
changed = 1;
|
||||
range.position = tPtr->cursorPosition-1;
|
||||
if (tPtr->prevselection.count) {
|
||||
range.position = tPtr->prevselection.count < 0
|
||||
? tPtr->prevselection.position + tPtr->prevselection.count
|
||||
: tPtr->prevselection.position;
|
||||
|
||||
range.count = abs(tPtr->prevselection.count);
|
||||
} else {
|
||||
range.position = tPtr->cursorPosition - 1;
|
||||
range.count = 1;
|
||||
}
|
||||
WMDeleteTextFieldRange(tPtr, range);
|
||||
}
|
||||
break;
|
||||
@@ -757,11 +826,19 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
||||
}
|
||||
case XK_KP_Delete:
|
||||
case XK_Delete:
|
||||
if (tPtr->cursorPosition < tPtr->textLen) {
|
||||
if (tPtr->cursorPosition < tPtr->textLen || tPtr->prevselection.count) {
|
||||
WMRange range;
|
||||
changed = 1;
|
||||
if (tPtr->prevselection.count) {
|
||||
range.position = tPtr->prevselection.count < 0
|
||||
? tPtr->prevselection.position + tPtr->prevselection.count
|
||||
: tPtr->prevselection.position;
|
||||
|
||||
range.count = abs(tPtr->prevselection.count);
|
||||
} else {
|
||||
range.position = tPtr->cursorPosition;
|
||||
range.count = 1;
|
||||
}
|
||||
WMDeleteTextFieldRange(tPtr, range);
|
||||
}
|
||||
break;
|
||||
@@ -769,10 +846,33 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
|
||||
normal_key:
|
||||
default:
|
||||
if (count > 0 && !iscntrl(buffer[0])) {
|
||||
WMRange range;
|
||||
changed = 1;
|
||||
if (tPtr->prevselection.count) {
|
||||
range.position = tPtr->prevselection.count < 0
|
||||
? tPtr->prevselection.position + tPtr->prevselection.count
|
||||
: tPtr->prevselection.position;
|
||||
|
||||
range.count = abs(tPtr->prevselection.count);
|
||||
} else {
|
||||
range.position = tPtr->cursorPosition;
|
||||
range.count = 1;
|
||||
}
|
||||
if (tPtr->prevselection.count)
|
||||
WMDeleteTextFieldRange(tPtr, range);
|
||||
WMInsertTextFieldText(tPtr, buffer, tPtr->cursorPosition);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (event->xkey.state & ShiftMask) {
|
||||
if (tPtr->selection.count == 0)
|
||||
tPtr->selection.position = tPtr->cursorPosition;
|
||||
tPtr->selection.count = tPtr->cursorPosition - tPtr->selection.position;
|
||||
refresh = 1;
|
||||
}
|
||||
tPtr->prevselection.count = 0;
|
||||
if (refresh) {
|
||||
paintTextField(tPtr);
|
||||
}
|
||||
@@ -829,8 +929,17 @@ handleTextFieldActionEvents(XEvent *event, void *data)
|
||||
|
||||
case MotionNotify:
|
||||
if (tPtr->flags.enabled && (event->xmotion.state & Button1Mask)) {
|
||||
|
||||
if (!tPtr->selection.count) {
|
||||
tPtr->selection.position = tPtr->cursorPosition;
|
||||
}
|
||||
|
||||
tPtr->cursorPosition = pointToCursorPosition(tPtr,
|
||||
event->xmotion.x);
|
||||
|
||||
tPtr->selection.count = tPtr->cursorPosition
|
||||
- tPtr->selection.position;
|
||||
|
||||
paintTextField(tPtr);
|
||||
}
|
||||
break;
|
||||
@@ -844,12 +953,14 @@ handleTextFieldActionEvents(XEvent *event, void *data)
|
||||
} else if (tPtr->flags.focused) {
|
||||
tPtr->cursorPosition = pointToCursorPosition(tPtr,
|
||||
event->xbutton.x);
|
||||
tPtr->selection.count = 0;
|
||||
paintTextField(tPtr);
|
||||
}
|
||||
if (event->xbutton.button == Button2 && tPtr->flags.enabled) {
|
||||
char *text;
|
||||
|
||||
text = W_GetTextSelection(tPtr->view->screen, XA_PRIMARY);
|
||||
text = W_GetTextSelection(tPtr->view->screen,
|
||||
tPtr->view->screen->clipboardAtom);
|
||||
if (!text) {
|
||||
text = W_GetTextSelection(tPtr->view->screen, XA_CUT_BUFFER0);
|
||||
}
|
||||
|
||||
@@ -431,15 +431,6 @@ realizeWindow(WMWindow *win)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMHideWindow(WMWindow *win)
|
||||
{
|
||||
WMUnmapWidget(win);
|
||||
XWithdrawWindow(win->view->screen->display, win->view->window,
|
||||
win->view->screen->screen);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetWindowMinSize(WMWindow *win, unsigned width, unsigned height)
|
||||
{
|
||||
@@ -564,6 +555,7 @@ WMSetWindowMiniwindowTitle(WMWindow *win, char *title)
|
||||
void
|
||||
WMCloseWindow(WMWindow *win)
|
||||
{
|
||||
WMUnmapWidget(win);
|
||||
/* withdraw the window */
|
||||
if (win->view->flags.realized)
|
||||
XWithdrawWindow(win->view->screen->display, win->view->window,
|
||||
@@ -588,6 +580,9 @@ handleEvents(XEvent *event, void *clientData)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case UnmapNotify:
|
||||
WMUnmapWidget(win);
|
||||
break;
|
||||
case DestroyNotify:
|
||||
destroyWindow(win);
|
||||
break;
|
||||
|
||||
@@ -80,7 +80,7 @@ renderTexture(_Panel *panel, char *texture, int width, int height,
|
||||
return None;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
static void
|
||||
updatePreviewBox(_Panel *panel, int elements)
|
||||
{
|
||||
@@ -134,7 +134,7 @@ getStrArrayForKey(char *key)
|
||||
|
||||
return PLGetDescription(v);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
@@ -157,7 +157,8 @@ createPanel(Panel *p)
|
||||
panel->secP = WMCreatePopUpButton(panel->frame);
|
||||
WMResizeWidget(panel->secP, 242, 20);
|
||||
WMMoveWidget(panel->secP, 10, 207);
|
||||
// WMSetPopUpButtonAction(panel->secP, changePage, panel);
|
||||
/* WMSetPopUpButtonAction(panel->secP, changePage, panel);
|
||||
*/
|
||||
|
||||
|
||||
/* texture list */
|
||||
|
||||
@@ -43,16 +43,13 @@ WPrefs_SOURCES = \
|
||||
xmodifier.c
|
||||
|
||||
CPPFLAGS = \
|
||||
@CPPFLAGS@ \
|
||||
@SHAPE@ @I18N@ @X_LOCALE@ \
|
||||
-DNLSDIR="\"$(nlsdir)\""
|
||||
@CPPFLAGS@
|
||||
|
||||
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir)/wrlib \
|
||||
-I$(top_srcdir)/WINGs \
|
||||
-I$(top_srcdir)/libPropList \
|
||||
@XCFLAGS@
|
||||
-I$(top_srcdir)/libPropList @XCFLAGS@
|
||||
|
||||
WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
|
||||
|
||||
|
||||
@@ -65,8 +65,6 @@ DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLFLAGS = @GFXLFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LD = @LD@
|
||||
@@ -79,19 +77,13 @@ NLSDIR = @NLSDIR@
|
||||
NM = @NM@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
SUBDIRS = xpm tiff po
|
||||
@@ -139,15 +131,12 @@ WPrefs_SOURCES = \
|
||||
xmodifier.c
|
||||
|
||||
CPPFLAGS = \
|
||||
@CPPFLAGS@ \
|
||||
@SHAPE@ @I18N@ @X_LOCALE@ \
|
||||
-DNLSDIR="\"$(nlsdir)\""
|
||||
@CPPFLAGS@
|
||||
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir)/wrlib \
|
||||
-I$(top_srcdir)/WINGs \
|
||||
-I$(top_srcdir)/libPropList \
|
||||
@XCFLAGS@
|
||||
-I$(top_srcdir)/libPropList @XCFLAGS@
|
||||
|
||||
WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
|
||||
|
||||
|
||||
@@ -636,8 +636,8 @@ fillBrowserColumn(WMBrowser *bPtr, int column)
|
||||
else
|
||||
WMSetTextFieldText(panel->tit1T, getItemTitle(menuList));
|
||||
} else {
|
||||
WMSetTextFieldText(panel->tit1T, getItemTitle(panel->menu));
|
||||
menuList = panel->menu;
|
||||
WMSetTextFieldText(panel->tit1T, getItemTitle(panel->menu));
|
||||
}
|
||||
|
||||
WMHangData(WMGetBrowserListInColumn(bPtr, column), menuList);
|
||||
@@ -743,6 +743,8 @@ changedTitle(void *observerData, WMNotification *notification)
|
||||
}
|
||||
|
||||
menu = (proplist_t)WMGetHangedData(list);
|
||||
if (!menu)
|
||||
return;
|
||||
|
||||
txt = WMGetTextFieldText(t);
|
||||
changeItemTitle(menu, txt);
|
||||
@@ -1272,6 +1274,48 @@ postProcessMenu(proplist_t menu)
|
||||
}
|
||||
|
||||
|
||||
static proplist_t
|
||||
getDefaultMenu(_Panel *panel, int *hasWSMenu)
|
||||
{
|
||||
proplist_t menu, pmenu;
|
||||
char *menuPath, *gspath;
|
||||
|
||||
gspath = wusergnusteppath();
|
||||
|
||||
menuPath = wmalloc(strlen(gspath)+128);
|
||||
/* if there is a localized plmenu for the tongue put it's filename here */
|
||||
sprintf(menuPath, _("%s/Library/WindowMaker/plmenu"), gspath);
|
||||
|
||||
menu = PLGetProplistWithPath(menuPath);
|
||||
if (!menu) {
|
||||
wwarning("%s:could not read property list menu", menuPath);
|
||||
|
||||
if (strcmp("%s/Library/WindowMaker/plmenu",
|
||||
_("%s/Library/WindowMaker/plmenu"))!=0) {
|
||||
|
||||
sprintf(menuPath, "%s/Library/WindowMaker/plmenu", gspath);
|
||||
menu = PLGetProplistWithPath(menuPath);
|
||||
wwarning("%s:could not read property list menu", menuPath);
|
||||
}
|
||||
if (!menu) {
|
||||
WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win,
|
||||
_("Error"), _("Could not copy default plmenu file "
|
||||
"from ~/GNUstep/Library/WindowMaker"),
|
||||
_("OK"), NULL, NULL);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
free(gspath);
|
||||
free(menuPath);
|
||||
|
||||
pmenu = preProcessMenu(menu, hasWSMenu);
|
||||
PLRelease(menu);
|
||||
|
||||
return pmenu;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
@@ -1289,25 +1333,31 @@ showData(_Panel *panel)
|
||||
strcat(menuPath, "/Defaults/WMRootMenu");
|
||||
|
||||
menu = PLGetProplistWithPath(menuPath);
|
||||
pmenu = NULL;
|
||||
|
||||
if (!menu || !PLIsArray(menu)) {
|
||||
sprintf(buffer, _("The format of the current menu in ~/G/D/WMRootMenu "
|
||||
"is not supported by WPrefs. A new menu will be created.\n"
|
||||
"You can also replace ~/G/D/WMRootMenu with ~/G/L/W/plmenu "
|
||||
"to get the default menu."));
|
||||
sprintf(buffer, _("The format of the menu in ~/G/D/WMRootMenu is "
|
||||
"not recognized by WPrefs. It might be in a format different "
|
||||
"than the one supported by WPrefs or contain a syntax error. "
|
||||
"Do you want to continue using the current menu to edit "
|
||||
"it by hand later or replace it with a default menu in the new "
|
||||
"format?"));
|
||||
if (WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win,
|
||||
_("Warning"), buffer, _("OK"), _("Cancel"),
|
||||
NULL)==WAPRDefault) {
|
||||
_("Warning"), buffer, _("Keep current menu"),
|
||||
_("Install default menu"), NULL)!=WAPRDefault) {
|
||||
panel->dontSave = 0;
|
||||
|
||||
pmenu = getDefaultMenu(panel, &hasWSMenu);
|
||||
} else {
|
||||
WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win,
|
||||
_("Warning"), _("Any changes made in this section will not be saved"),
|
||||
_("OK"), NULL, NULL);
|
||||
panel->dontSave = 1;
|
||||
}
|
||||
|
||||
if (!pmenu) {
|
||||
pmenu = PLMakeArrayFromElements(PLMakeString("Applications"),
|
||||
NULL);
|
||||
}
|
||||
} else {
|
||||
pmenu = preProcessMenu(menu, &hasWSMenu);
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ typedef struct _Panel {
|
||||
WMLabel *speedL;
|
||||
WMButton *speedB[5];
|
||||
WMLabel *acceL;
|
||||
WMTextField *acceT;
|
||||
WMLabel *threL;
|
||||
WMTextField *threT;
|
||||
|
||||
@@ -137,25 +138,40 @@ speedClick(WMWidget *w, void *data)
|
||||
int threshold;
|
||||
char *tmp;
|
||||
|
||||
if (w == NULL) {
|
||||
float accel;
|
||||
|
||||
tmp = WMGetTextFieldText(panel->acceT);
|
||||
if (sscanf(tmp, "%f", &accel)!=1 || accel < 0) {
|
||||
WMRunAlertPanel(WMWidgetScreen(w), GetWindow(panel), _("Error"),
|
||||
_("Invalid mouse acceleration value. Must be a positive real value."),
|
||||
_("OK"), NULL, NULL);
|
||||
free(tmp);
|
||||
return;
|
||||
}
|
||||
panel->acceleration = accel;
|
||||
free(tmp);
|
||||
} else {
|
||||
for (i=0; i<5; i++) {
|
||||
if (panel->speedB[i]==w)
|
||||
break;
|
||||
}
|
||||
|
||||
panel->lastClickedSpeed = panel->speedB[i];
|
||||
panel->acceleration = 0.5+(i*0.5);
|
||||
|
||||
sprintf(buffer, _("Accel.: %.2f"), 0.5+(i*0.5));
|
||||
WMSetLabelText(panel->acceL, buffer);
|
||||
sprintf(buffer, "%.2f", 0.5+(i*0.5));
|
||||
WMSetTextFieldText(panel->acceT, buffer);
|
||||
}
|
||||
|
||||
tmp = WMGetTextFieldText(panel->threT);
|
||||
if (sscanf(tmp, "%i", &threshold)!=1 || threshold < 0
|
||||
|| threshold > panel->maxThreshold) {
|
||||
WMRunAlertPanel(WMWidgetScreen(w), GetWindow(panel), _("Error"),
|
||||
WMRunAlertPanel(WMWidgetScreen(panel->win), GetWindow(panel), _("Error"),
|
||||
_("Invalid mouse acceleration threshold value. Must be the number of pixels to travel before accelerating."),
|
||||
_("OK"), NULL, NULL);
|
||||
} else {
|
||||
setMouseAccel(WMWidgetScreen(w), 0.5+(i*0.5), threshold);
|
||||
setMouseAccel(WMWidgetScreen(panel->win), panel->acceleration,
|
||||
threshold);
|
||||
}
|
||||
free(tmp);
|
||||
}
|
||||
@@ -166,7 +182,7 @@ returnPressed(void *observerData, WMNotification *notification)
|
||||
{
|
||||
_Panel *panel = (_Panel*)observerData;
|
||||
|
||||
speedClick(panel->lastClickedSpeed, panel);
|
||||
speedClick(NULL, panel);
|
||||
}
|
||||
|
||||
|
||||
@@ -554,8 +570,15 @@ createPanel(Panel *p)
|
||||
free(buf2);
|
||||
|
||||
panel->acceL = WMCreateLabel(panel->speedF);
|
||||
WMResizeWidget(panel->acceL, 100, 16);
|
||||
WMResizeWidget(panel->acceL, 80, 16);
|
||||
WMMoveWidget(panel->acceL, 10, 67);
|
||||
WMSetLabelText(panel->acceL, _("Acceler.:"));
|
||||
|
||||
panel->acceT = WMCreateTextField(panel->speedF);
|
||||
WMResizeWidget(panel->acceT, 35, 20);
|
||||
WMMoveWidget(panel->acceT, 85, 65);
|
||||
WMAddNotificationObserver(returnPressed, panel,
|
||||
WMTextDidEndEditingNotification, panel->acceT);
|
||||
|
||||
|
||||
panel->threL = WMCreateLabel(panel->speedF);
|
||||
@@ -564,8 +587,8 @@ createPanel(Panel *p)
|
||||
WMSetLabelText(panel->threL, _("Threshold:"));
|
||||
|
||||
panel->threT = WMCreateTextField(panel->speedF);
|
||||
WMResizeWidget(panel->threT, 40, 20);
|
||||
WMMoveWidget(panel->threT, 190, 65);
|
||||
WMResizeWidget(panel->threT, 30, 20);
|
||||
WMMoveWidget(panel->threT, 200, 65);
|
||||
WMAddNotificationObserver(returnPressed, panel,
|
||||
WMTextDidEndEditingNotification, panel->threT);
|
||||
|
||||
|
||||
@@ -564,7 +564,7 @@ loadConfigurations(WMScreen *scr, WMWindow *mainw)
|
||||
}
|
||||
free(path);
|
||||
|
||||
file = popen("wmaker -version", "r");
|
||||
file = popen("wmaker --version", "r");
|
||||
if (!file || !fgets(buffer, 1023, file)) {
|
||||
wsyserror(_("could not extract version information from Window Maker"));
|
||||
wfatal(_("Make sure wmaker is in your search path."));
|
||||
@@ -597,9 +597,9 @@ loadConfigurations(WMScreen *scr, WMWindow *mainw)
|
||||
WMRunAlertPanel(scr, mainw, _("Warning"), mbuf, _("OK"), NULL, NULL);
|
||||
}
|
||||
|
||||
file = popen("wmaker -global_defaults_path", "r");
|
||||
file = popen("wmaker --global_defaults_path", "r");
|
||||
if (!file || !fgets(buffer, 1023, file)) {
|
||||
wsyserror(_("could not run \"wmaker -global_defaults_path\"."));
|
||||
wsyserror(_("could not run \"wmaker --global_defaults_path\"."));
|
||||
exit(1);
|
||||
}
|
||||
if (file)
|
||||
|
||||
@@ -140,7 +140,7 @@ showData(_Panel *panel)
|
||||
|
||||
sliderCallback(NULL, panel);
|
||||
|
||||
WMSetButtonSelected(panel->tranB, GetBoolForKey("OnTopTransients"));
|
||||
WMSetButtonSelected(panel->tranB, GetBoolForKey("OpenTransientOnOwnerWorkspace"));
|
||||
|
||||
WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove"));
|
||||
|
||||
@@ -159,7 +159,7 @@ storeData(_Panel *panel)
|
||||
SetBoolForKey(WMGetButtonSelected(panel->miconB), "NoWindowOverIcons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->mdockB), "NoWindowOverDock");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->opaqB), "OpaqueMove");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->tranB), "OnTopTransients");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->tranB), "OpenTransientOnOwnerWorkspace");
|
||||
SetStringForKey(placements[WMGetPopUpButtonSelectedItem(panel->placP)],
|
||||
"WindowPlacement");
|
||||
sprintf(x, "%i", WMGetSliderValue(panel->hsli));
|
||||
@@ -317,7 +317,7 @@ createPanel(Panel *p)
|
||||
panel->tranB = WMCreateSwitchButton(panel->tranF);
|
||||
WMMoveWidget(panel->tranB, 10, 5);
|
||||
WMResizeWidget(panel->tranB, 250, 30);
|
||||
WMSetButtonText(panel->tranB, _("Keep transients above their owners"));
|
||||
WMSetButtonText(panel->tranB, _("Open transients in same workspace as their owners"));
|
||||
|
||||
WMMapSubwidgets(panel->tranF);
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@ struct {
|
||||
static pid_t DeadChildren[MAX_DEATHS];
|
||||
static int DeadChildrenCount = 0;
|
||||
|
||||
|
||||
void
|
||||
wAbort(Bool foo)
|
||||
{
|
||||
@@ -72,11 +71,12 @@ print_help(char *progname)
|
||||
printf(_("usage: %s [options]\n"), progname);
|
||||
puts(_("options:"));
|
||||
puts(_(" -display <display> display to be used"));
|
||||
puts(_(" -version print version number and exit"));
|
||||
puts(_(" --version print version number and exit"));
|
||||
puts(_(" --help print this message and exit"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
static RETSIGTYPE
|
||||
handleDeadChild(int sig)
|
||||
{
|
||||
@@ -88,7 +88,7 @@ handleDeadChild(int sig)
|
||||
DeadChildren[DeadChildrenCount++] = pid;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
AddDeadChildHandler(pid_t pid, void (*handler)(void*), void *data)
|
||||
@@ -107,7 +107,6 @@ AddDeadChildHandler(pid_t pid, void (*handler)(void*), void *data)
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
@@ -117,14 +116,17 @@ main(int argc, char **argv)
|
||||
int i;
|
||||
char *display_name="";
|
||||
|
||||
wsetabort(wAbort);
|
||||
|
||||
memset(DeadHandlers, 0, sizeof(DeadHandlers));
|
||||
|
||||
WMInitializeApplication("WPrefs", &argc, argv);
|
||||
|
||||
if (argc>1) {
|
||||
for (i=1; i<argc; i++) {
|
||||
if (strcmp(argv[i], "-version")==0) {
|
||||
printf("WPrefs %s\n", WVERSION);
|
||||
if (strcmp(argv[i], "-version")==0
|
||||
|| strcmp(argv[i], "--version")==0) {
|
||||
printf("WPrefs (Window Maker) %s\n", WVERSION);
|
||||
exit(0);
|
||||
} else if (strcmp(argv[i], "-display")==0) {
|
||||
i++;
|
||||
|
||||
@@ -45,8 +45,8 @@ WPrefs.pot: $(POTFILES)
|
||||
|
||||
|
||||
install-data-local: $(CATALOGS)
|
||||
$(mkinstalldirs) $(nlsdir)
|
||||
chmod 755 $(nlsdir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(nlsdir)
|
||||
chmod 755 $(DESTDIR)$(nlsdir)
|
||||
for n in $(CATALOGS) __DuMmY ; do \
|
||||
if test "$$n" -a "$$n" != "__DuMmY" ; then \
|
||||
l=`basename $$n .mo`; \
|
||||
|
||||
@@ -65,8 +65,6 @@ DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLFLAGS = @GFXLFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LD = @LD@
|
||||
@@ -79,19 +77,13 @@ NLSDIR = @NLSDIR@
|
||||
NM = @NM@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
nlsdir = @NLSDIR@
|
||||
@@ -227,8 +219,8 @@ WPrefs.pot: $(POTFILES)
|
||||
fi
|
||||
|
||||
install-data-local: $(CATALOGS)
|
||||
$(mkinstalldirs) $(nlsdir)
|
||||
chmod 755 $(nlsdir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(nlsdir)
|
||||
chmod 755 $(DESTDIR)$(nlsdir)
|
||||
for n in $(CATALOGS) __DuMmY ; do \
|
||||
if test "$$n" -a "$$n" != "__DuMmY" ; then \
|
||||
l=`basename $$n .mo`; \
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1271,4 +1271,3 @@ msgstr "ne mogu inicijalizirati aplikaciju"
|
||||
# msgid "Icon Size"
|
||||
# msgstr "Veli<6C>ina ikone"
|
||||
#
|
||||
| ||||