mirror of
https://github.com/gryf/wmaker.git
synced 2026-07-09 20:26:37 +02:00
Compare commits
222 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 93b049356f | |||
| 75f353bef4 | |||
| 2264ed9de6 | |||
| d0aa2cefcd | |||
| a52d13c8b8 | |||
| 215b6ee2e6 | |||
| ab45c6c6c2 | |||
| 3344f2b040 | |||
| ecef2b2890 | |||
| 802cbc0d75 | |||
| 157d1ba85f | |||
| 91e7f37074 | |||
| 18a539b372 | |||
| eae9200c5d | |||
| 25cb9d208a | |||
| 23471b2e21 | |||
| 258ffc8b97 | |||
| 86b7ec1a58 | |||
| 9831e3f72a | |||
| 0a55facac0 | |||
| 0ecf7d3540 | |||
| 4576b5bf1e | |||
| 0526ddfc54 | |||
| 4c52232ee7 | |||
| 43edd37ee2 | |||
| e95aea2e30 | |||
| 038a3588d6 | |||
| 0b2fd6a8c8 | |||
| 3e991badf7 | |||
| ac6d284269 | |||
| 83b94b1616 | |||
| d045ffcf7d | |||
| 6c69dc32a0 | |||
| 3b1c00ad06 | |||
| dd6fe27858 | |||
| 45f3f5d0ae | |||
| 7185af15cf | |||
| 80e8dd43f7 | |||
| a383074c99 | |||
| 52a623729d | |||
| d4ee17f0b5 | |||
| 7475bc5d0a | |||
| 35f87b5592 | |||
| 5e37d13eb6 | |||
| 4b1aee3e79 | |||
| 0ccc5bbde7 | |||
| 59a686d22e | |||
| 26d46f6e16 | |||
| ceafbf0629 | |||
| cf178d011b | |||
| 682c2767c2 | |||
| 0e00c6b605 | |||
| e9717ed719 | |||
| 9e59d19507 | |||
| 94f98dcd25 | |||
| 6c7266c338 | |||
| b4bd6d0cad | |||
| c7f7c10d7c | |||
| d831766572 | |||
| e2ecfbfd54 | |||
| a8ec32d41a | |||
| 1215680b6d | |||
| 77df89396c | |||
| c8883fdbb0 | |||
| 3cc5808dcd | |||
| 8ca89f0141 | |||
| 76fa91d21e | |||
| d2d5297a1e | |||
| 7b317a5fba | |||
| 9f8dc6f5dc | |||
| bc56db0776 | |||
| 15d06ff064 | |||
| 2dd98666f1 | |||
| d1a7db8aea | |||
| 64a8ecb390 | |||
| a9e336256b | |||
| e9b20b51e9 | |||
| 1d8b38b6e0 | |||
| 82ad19d420 | |||
| 492b22d975 | |||
| 62405fbb75 | |||
| f1fef40f0d | |||
| 2fb9308a67 | |||
| d902477efd | |||
| 5ee19c2308 | |||
| fabd4252ab | |||
| 630e9292c2 | |||
| 14d1b8197a | |||
| 4d658341d2 | |||
| ac75047aef | |||
| 6d6f9f6ff5 | |||
| 370adc94e7 | |||
| 532acdc443 | |||
| d7d38aa443 | |||
| a6209cc89b | |||
| 01bd523cee | |||
| 45ab72a78a | |||
| 437b76812d | |||
| e3ee459a78 | |||
| d70b546f2e | |||
| 812930b7cd | |||
| 2a14004fc3 | |||
| 04e9f33437 | |||
| 150816c687 | |||
| ddacfa5d63 | |||
| 0718297e9a | |||
| 9cc16182d3 | |||
| f6165d6e80 | |||
| 10c36d244e | |||
| 515eb652c7 | |||
| 8ed92efa3c | |||
| cc839f8bc5 | |||
| 48d4820dee | |||
| d4f5f3ec7f | |||
| 83f7fa43ce | |||
| 55a816bdbc | |||
| 7639fa1c15 | |||
| 93b411f258 | |||
| 326a67e18f | |||
| c089c6aea4 | |||
| 66b0ee3c4d | |||
| a6c8577eb4 | |||
| 094001a53d | |||
| deba131857 | |||
| a9bc9751a2 | |||
| 58b6728743 | |||
| 894d096d6e | |||
| a41b0aa21d | |||
| d4cc033379 | |||
| 308b9f4975 | |||
| 1d1c904126 | |||
| ca4ae5068b | |||
| 26491867a3 | |||
| dce34e926b | |||
| a0b283a60f | |||
| 671db45007 | |||
| 0c6ad643c8 | |||
| 5076b6f496 | |||
| 54c8535365 | |||
| 24f5b32469 | |||
| 85169642ca | |||
| 9f9ef6417e | |||
| fb2a6d2e61 | |||
| 8219c36488 | |||
| bd38778bef | |||
| 1e45ff2305 | |||
| 7e1cdf2d59 | |||
| 43f0474013 | |||
| a079544647 | |||
| 03ec24502d | |||
| 5c90ed9d2d | |||
| 735651df55 | |||
| bfab769065 | |||
| c060477d57 | |||
| 75f133285f | |||
| a6ec6a30a3 | |||
| 6afa419b01 | |||
| a2bf67f54c | |||
| 351e05dca9 | |||
| ae78e88eef | |||
| f049635fa5 | |||
| 4221e30bd2 | |||
| 71558f4ce3 | |||
| 4b61081353 | |||
| 4138c57631 | |||
| 0bbb122b94 | |||
| 0e274dc979 | |||
| 4dfb0dd059 | |||
| bcb53700d6 | |||
| e5f7ef23a6 | |||
| 70f89fd9c5 | |||
| 19202fd2db | |||
| aadd694a6b | |||
| fbec3a728f | |||
| 944bb49997 | |||
| 0ac6827a9b | |||
| f030ab7664 | |||
| 2a8fc1df9a | |||
| 296456f361 | |||
| f2cd2c9f03 | |||
| d125f80dee | |||
| 8e47ca8e62 | |||
| 29cf48b934 | |||
| 816fa00625 | |||
| 6ebec0bb9f | |||
| 7c50721747 | |||
| 4559cbbccc | |||
| e828e1c074 | |||
| 97a9300aa4 | |||
| fd56152202 | |||
| 58862300f9 | |||
| 1612d2f345 | |||
| 920c6d16b1 | |||
| 8aecba27d1 | |||
| fc63d72032 | |||
| eb2a9d97a2 | |||
| 9abe4165d1 | |||
| 82ab2d2d06 | |||
| bbf24d1d39 | |||
| 224cb403a7 | |||
| 1cd8fea423 | |||
| a98680cd14 | |||
| 7d423a3a0f | |||
| 033d2d9a6f | |||
| 6e2075f3df | |||
| 5d2fd7bf7e | |||
| f6742662ec | |||
| 583f66ec4e | |||
| cd23e77fd1 | |||
| 230a501d36 | |||
| 3022edd060 | |||
| 1713a88656 | |||
| 00a25db9ea | |||
| c678580621 | |||
| 44bc9cc264 | |||
| dfa92906c0 | |||
| 27dc5efd2e | |||
| 86659be668 | |||
| e314f10909 | |||
| 54a24ab6f7 | |||
| a17d131da3 | |||
| 6320bb6219 |
+14
@@ -30,6 +30,8 @@ m4/ltversion.m4
|
|||||||
m4/lt~obsolete.m4
|
m4/lt~obsolete.m4
|
||||||
|
|
||||||
src/wconfig.h
|
src/wconfig.h
|
||||||
|
WINGs/WINGs/WINGsP.h
|
||||||
|
wrlib/wraster.h
|
||||||
|
|
||||||
# These files are generated by scripts
|
# These files are generated by scripts
|
||||||
INSTALL-WMAKER
|
INSTALL-WMAKER
|
||||||
@@ -120,6 +122,18 @@ WindowMaker/Defaults/WMWindowAttributes
|
|||||||
WindowMaker/Defaults/WindowMaker
|
WindowMaker/Defaults/WindowMaker
|
||||||
WindowMaker/IconSets/Default.iconset
|
WindowMaker/IconSets/Default.iconset
|
||||||
|
|
||||||
|
WPrefs.app/WPrefs.desktop
|
||||||
|
|
||||||
|
# These files are generated by the i18n process
|
||||||
|
/po/WindowMaker.pot
|
||||||
|
/po/*.mo
|
||||||
|
/WINGs/po/WINGs.pot
|
||||||
|
/WINGs/po/*.mo
|
||||||
|
/WPrefs.app/po/WPrefs.pot
|
||||||
|
/WPrefs.app/po/*.mo
|
||||||
|
/util/po/*.pot
|
||||||
|
/util/po/*.mo
|
||||||
|
|
||||||
# Some text editors generate backup files
|
# Some text editors generate backup files
|
||||||
*~
|
*~
|
||||||
|
|
||||||
|
|||||||
@@ -4063,7 +4063,7 @@ Changes since version 0.17.5:
|
|||||||
icons
|
icons
|
||||||
- fixed bug in focusfollowmouse that made windows under the currently
|
- fixed bug in focusfollowmouse that made windows under the currently
|
||||||
focused window that close, to not get the focus
|
focused window that close, to not get the focus
|
||||||
- if the app is a .app, it will try to find it's icon in the .app
|
- if the app is a .app, it will try to find its icon in the .app
|
||||||
directory and save it in the WMWindowAttributes, so that the dock can use it.
|
directory and save it in the WMWindowAttributes, so that the dock can use it.
|
||||||
- drag docklets that select for mouse events to with Alt+drag
|
- drag docklets that select for mouse events to with Alt+drag
|
||||||
|
|
||||||
@@ -4934,7 +4934,7 @@ Changes since version 0.3.2:
|
|||||||
|
|
||||||
- application icons (not mini-windows) like I think how it is on NEXTSTEP(tm)
|
- application icons (not mini-windows) like I think how it is on NEXTSTEP(tm)
|
||||||
- fixed "slippery" icon movement
|
- fixed "slippery" icon movement
|
||||||
- added a Dock (not for GNUstep, as it will have it's own)
|
- added a Dock (not for GNUstep, as it will have its own)
|
||||||
|
|
||||||
Changes since version 0.3.1:
|
Changes since version 0.3.1:
|
||||||
............................
|
............................
|
||||||
@@ -4964,7 +4964,7 @@ it's opened to select items, just drag the pointer
|
|||||||
- transient owners get a different titlebar color when the focus
|
- transient owners get a different titlebar color when the focus
|
||||||
is in the transient (e.g, in NeXTese: mainWindow is highlighted correctly when
|
is in the transient (e.g, in NeXTese: mainWindow is highlighted correctly when
|
||||||
the keyWindow is a panel)
|
the keyWindow is a panel)
|
||||||
- when transient is closed, it's owner always get the focus
|
- when transient is closed, its owner always get the focus
|
||||||
- fixed XGrabButton/BadAccess bug
|
- fixed XGrabButton/BadAccess bug
|
||||||
- fixed window_count error (this time I'm 90% sure)
|
- fixed window_count error (this time I'm 90% sure)
|
||||||
- fixed focusNextWindow through Alt-Tab bug with non-focusable windows
|
- fixed focusNextWindow through Alt-Tab bug with non-focusable windows
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ Window Maker distribution.
|
|||||||
|
|
||||||
The author Anthony Quinn <southgat@frontiernet.net> has released a
|
The author Anthony Quinn <southgat@frontiernet.net> has released a
|
||||||
version that works with Window Maker >= 0.15.x. It is available from
|
version that works with Window Maker >= 0.15.x. It is available from
|
||||||
it's home page at http://www.frontiernet.net/~southgat/wmsound/
|
its home page at http://www.frontiernet.net/~southgat/wmsound/
|
||||||
or on Largo's site at http://wm.current.nu/files.html#wmsound
|
or on Largo's site at http://wm.current.nu/files.html#wmsound
|
||||||
for your convenience.
|
for your convenience.
|
||||||
|
|
||||||
@@ -352,7 +352,7 @@ GNOME application they have no title bar" below.
|
|||||||
To use it with CDE, read the answer for "How do I switch
|
To use it with CDE, read the answer for "How do I switch
|
||||||
CDE's window manager to use Window Maker?"
|
CDE's window manager to use Window Maker?"
|
||||||
|
|
||||||
To use it with KDE, read it's documentation to get rid of kwm (and possibly
|
To use it with KDE, read its documentation to get rid of kwm (and possibly
|
||||||
kpanel) and replace it with wmaker. Then, start WPrefs.app, go to "Mouse
|
kpanel) and replace it with wmaker. Then, start WPrefs.app, go to "Mouse
|
||||||
Preferences" and set the "Disable mouse actions" check box. You will
|
Preferences" and set the "Disable mouse actions" check box. You will
|
||||||
need to restart Window Maker to make this change take effect. The
|
need to restart Window Maker to make this change take effect. The
|
||||||
@@ -1283,7 +1283,7 @@ WM_NORMAL_HINTS(WM_SIZE_HINTS):
|
|||||||
user specified size: 400 by 300
|
user specified size: 400 by 300
|
||||||
program specified minimum size: 400 by 300
|
program specified minimum size: 400 by 300
|
||||||
|
|
||||||
Now, when scilab opens it's window, Window Maker nicely does exactly what it
|
Now, when scilab opens its window, Window Maker nicely does exactly what it
|
||||||
is told, that is, map the window at position 136679205, 1074468360 which
|
is told, that is, map the window at position 136679205, 1074468360 which
|
||||||
obviously falls outside the screen no matter how big is your monitor ;)
|
obviously falls outside the screen no matter how big is your monitor ;)
|
||||||
|
|
||||||
|
|||||||
+40
-4
@@ -19,10 +19,19 @@ config-paths.h: Makefile
|
|||||||
@echo '#define PIXMAPDIR "$(pixmapdir)"' >> $@
|
@echo '#define PIXMAPDIR "$(pixmapdir)"' >> $@
|
||||||
@echo '' >> $@
|
@echo '' >> $@
|
||||||
@echo '/* where shared data is stored */' >> $@
|
@echo '/* where shared data is stored */' >> $@
|
||||||
@echo '#define PKGDATADIR "$(datadir)/WindowMaker"' >> $@
|
@echo '#define PKGDATADIR "$(datadir)/$(PACKAGE_TARNAME)"' >> $@
|
||||||
@echo '' >> $@
|
@echo '' >> $@
|
||||||
@echo '/* where the global defaults are stored */' >> $@
|
@echo '/* where the global defaults are stored */' >> $@
|
||||||
@echo '#define DEFSDATADIR "$(defsdatadir)"' >> $@
|
@echo '#define PKGCONFDIR "$(pkgconfdir)"' >> $@
|
||||||
|
@echo '' >> $@
|
||||||
|
@echo '/* where the user data root is located */' >> $@
|
||||||
|
@echo '#define GSUSER_SUBDIR "GNUstep"' >> $@
|
||||||
|
@echo '' >> $@
|
||||||
|
@echo '/* where the user defaults are stored */' >> $@
|
||||||
|
@echo '#define DEFAULTS_SUBDIR "Defaults"' >> $@
|
||||||
|
@echo '' >> $@
|
||||||
|
@echo '/* where the user data are stored */' >> $@
|
||||||
|
@echo '#define USERDATA_SUBDIR "Library"' >> $@
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
@@ -41,11 +50,13 @@ EXTRA_DIST = TODO BUGS BUGFORM FAQ INSTALL \
|
|||||||
script/check-cmdline-options-doc.sh \
|
script/check-cmdline-options-doc.sh \
|
||||||
script/check-translation-sources.sh \
|
script/check-translation-sources.sh \
|
||||||
script/check-wmaker-loaddef-callbacks.sh \
|
script/check-wmaker-loaddef-callbacks.sh \
|
||||||
|
script/generate-html-from-man.sh \
|
||||||
script/generate-mapfile-from-header.sh \
|
script/generate-mapfile-from-header.sh \
|
||||||
script/generate-po-from-template.sh \
|
script/generate-po-from-template.sh \
|
||||||
script/generate-txt-from-texi.sh \
|
script/generate-txt-from-texi.sh \
|
||||||
script/nested-func-to-macro.sh \
|
script/nested-func-to-macro.sh \
|
||||||
script/replace-ac-keywords.sh
|
script/replace-ac-keywords.sh \
|
||||||
|
script/replace-generated-content.sh
|
||||||
|
|
||||||
|
|
||||||
.PHONY: coverage-reset coverage
|
.PHONY: coverage-reset coverage
|
||||||
@@ -62,6 +73,10 @@ coverage:
|
|||||||
genhtml --output-directory @lcov_output_directory@ coverage/coverage.info
|
genhtml --output-directory @lcov_output_directory@ coverage/coverage.info
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Section for the I18N processing
|
||||||
|
################################################################################
|
||||||
|
|
||||||
# make update-lang PO=<lang>
|
# make update-lang PO=<lang>
|
||||||
# ==========================
|
# ==========================
|
||||||
# Update the PO files against the POT file in all the translation sub-directories
|
# Update the PO files against the POT file in all the translation sub-directories
|
||||||
@@ -80,13 +95,34 @@ if HAVE_XGETTEXT
|
|||||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) update-lang || exit $$?); \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) update-lang || exit $$?); \
|
||||||
done
|
done
|
||||||
|
|
||||||
SUBDIRS_PO = WINGs/po po util/po WPrefs.app/po
|
SUBDIRS_PO = wrlib/po WINGs/po po util/po WPrefs.app/po
|
||||||
else
|
else
|
||||||
@echo "Error: the program 'xgettext' was not found by configure, it is mandatory for this operation" >&2 ; exit 1
|
@echo "Error: the program 'xgettext' was not found by configure, it is mandatory for this operation" >&2 ; exit 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: update-lang
|
.PHONY: update-lang
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Section related to generating HTML content for the website
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
if WITH_WEB_REPO
|
||||||
|
|
||||||
|
SUBDIRS_WEB = doc
|
||||||
|
|
||||||
|
website:
|
||||||
|
@for subdir in $(SUBDIRS_WEB); do \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) website || exit $$?); \
|
||||||
|
done
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: website
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Section for the automated checks
|
||||||
|
################################################################################
|
||||||
|
|
||||||
# Create a 'silent-rule' for our make check the same way automake does
|
# Create a 'silent-rule' for our make check the same way automake does
|
||||||
AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V))
|
AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V))
|
||||||
am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY))
|
am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
|||||||
@@ -1,6 +1,61 @@
|
|||||||
NEWS for veteran Window Maker users
|
NEWS for veteran Window Maker users
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
|
-- 0.96.0
|
||||||
|
|
||||||
|
Hot Corners feature
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Screen corners can be assigned an external command to be
|
||||||
|
executed when the mouse pointer is entering those areas.
|
||||||
|
In WPrefs, "Hot Corner Shortcut Preferences" can be used
|
||||||
|
for configuration or by manually adding a "HotCorners" key
|
||||||
|
and value to "YES" in the ~/GNUstep/Defaults/WindowMaker file.
|
||||||
|
Hot Corners feature is disabled by default.
|
||||||
|
Actions are specified by the "HotCornerActions" and are defined
|
||||||
|
as a four entries list ("top left action", "top right action",
|
||||||
|
"bottom left action", "bottom right action").
|
||||||
|
A screen corner area is a cube shape defined by the "HotCornerEdge"
|
||||||
|
which is a number of pixels from 2 (by default) to 10.
|
||||||
|
To lower the risk of triggering that feature accidentally a
|
||||||
|
"HotCornerDelay" key can be used which is the time before the action
|
||||||
|
is triggered while the pointer is in one of the screen corner.
|
||||||
|
Default value is 250 ms.
|
||||||
|
|
||||||
|
|
||||||
|
Screenshot capture feature
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
In WPrefs "Keyboard Shortcut Preferences" tab, three new actions can
|
||||||
|
be configured: "Capture a portion of the screen", "Capture a window",
|
||||||
|
"Capture the entire screen". The file is saved in
|
||||||
|
~/GNUstep/Library/WindowMaker/Screenshots directory under a filename
|
||||||
|
format "screenshot_%Y-%m-%d_at_%H:%M:%S" followed by the extension.
|
||||||
|
Which can be png or jpg based on WRaster dependencies.
|
||||||
|
|
||||||
|
|
||||||
|
libXRes is now an optional dependency
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
XRes the resource extension for the X protocol is used to find the
|
||||||
|
underlying processes (and PIDs) responsible for displaying the windows.
|
||||||
|
|
||||||
|
|
||||||
|
Support for _NET_WM_FULLSCREEN_MONITORS hint
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
That hint allows applications that support it to be set as fullscreen on multiple heads.
|
||||||
|
It depends on Xinerama extension support.
|
||||||
|
|
||||||
|
|
||||||
|
Keep dock on primary head
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
To keep the dock on the primary head in a multi-head setup, set the option
|
||||||
|
"KeepDockOnPrimaryHead" in ~/GNUstep/Defaults/WindowMaker to "YES" or click
|
||||||
|
"Keep dock on primary head" under the WPrefs "Expert User Preferences" tab.
|
||||||
|
|
||||||
|
|
||||||
-- 0.95.9
|
-- 0.95.9
|
||||||
|
|
||||||
Configurable SwitchPanel
|
Configurable SwitchPanel
|
||||||
@@ -1643,7 +1698,7 @@ raising/lowering there is a time threshold before raising/lowering.
|
|||||||
The thresholds can be changed in wconfig.h by changing one or both of
|
The thresholds can be changed in wconfig.h by changing one or both of
|
||||||
AUTO_LOWER_DELAY and AUTO_RAISE_DELAY (expressed in milliseconds).
|
AUTO_LOWER_DELAY and AUTO_RAISE_DELAY (expressed in milliseconds).
|
||||||
For example if you set AUTO_RAISE_DELAY to 0, then the Clip will be raised as
|
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
|
soon as the mouse pointer enters its area. Setting AUTO_RAISE_DELAY to a very
|
||||||
big value, will make the Clip to practically do not auto raise unless clicked,
|
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.
|
but to be automatically lowered after AUTO_LOWER_DELAY (ms) when leaved.
|
||||||
|
|
||||||
@@ -2572,7 +2627,7 @@ The OPEN_MENU command now supports the following syntax:
|
|||||||
// it in current position
|
// it in current position
|
||||||
OPEN_MENU file.menu
|
OPEN_MENU file.menu
|
||||||
2. Pipe menu handling.
|
2. Pipe menu handling.
|
||||||
// opens command and uses it's stdout to construct menu.
|
// opens command and uses its stdout to construct menu.
|
||||||
// Command's output must be a valid menu description.
|
// Command's output must be a valid menu description.
|
||||||
OPEN_MENU | command
|
OPEN_MENU | command
|
||||||
3. Directory handling.
|
3. Directory handling.
|
||||||
@@ -3175,7 +3230,7 @@ when they are first mapped
|
|||||||
titlebar gradients are in a single piece now
|
titlebar gradients are in a single piece now
|
||||||
|
|
||||||
the WMDock file was merged into the WMState file. You can insert this
|
the WMDock file was merged into the WMState file. You can insert this
|
||||||
file in WMState and set it's key to Dock. For example, if your WMDock
|
file in WMState and set its key to Dock. For example, if your WMDock
|
||||||
contains:
|
contains:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ Running multiple instances of Window Maker
|
|||||||
|
|
||||||
It is not a good idea to run more than one instance of Window Maker
|
It is not a good idea to run more than one instance of Window Maker
|
||||||
from the same user (so that wmaker will use the same configuration files) at the
|
from the same user (so that wmaker will use the same configuration files) at the
|
||||||
same time. You might get unexpected behavior when Window Maker updates it's
|
same time. You might get unexpected behavior when Window Maker updates its
|
||||||
configuration files.
|
configuration files.
|
||||||
|
|
||||||
If you really desire to do this, try running Window Maker with the command line
|
If you really desire to do this, try running Window Maker with the command line
|
||||||
@@ -209,7 +209,7 @@ while keeping a nice appearance and good functionality, follow the items bellow:
|
|||||||
- remove support for image formats you don't use
|
- remove support for image formats you don't use
|
||||||
- to reduce memory usage, disable the icon cache, by setting the RIMAGE_CACHE
|
- to reduce memory usage, disable the icon cache, by setting the RIMAGE_CACHE
|
||||||
environment variable to 0. If you want to increase performance at the cost of
|
environment variable to 0. If you want to increase performance at the cost of
|
||||||
memory usage, set it's value to a value like the number of different icons you
|
memory usage, set its value to a value like the number of different icons you
|
||||||
use. Also, disable anti-aliased text support in ~/GNUstep/Defaults/WMGLOBAL.
|
use. Also, disable anti-aliased text support in ~/GNUstep/Defaults/WMGLOBAL.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Changes since wmaker 0.96.0:
|
||||||
|
............................
|
||||||
|
|
||||||
|
- added W_KeycodeToKeysym to replace XKeycodeToKeysym/XkbKeycodeToKeysym calls
|
||||||
|
|
||||||
|
|
||||||
Changes since wmaker 0.92.0:
|
Changes since wmaker 0.92.0:
|
||||||
............................
|
............................
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ noinst_PROGRAMS = fontl puzzle colorpick
|
|||||||
|
|
||||||
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
||||||
$(top_builddir)/WINGs/libWUtil.la \
|
$(top_builddir)/WINGs/libWUtil.la \
|
||||||
@XFTLIBS@ @INTLIBS@ @XLIBS@
|
@XFT_LIBS@ @INTLIBS@ @XLIBS@
|
||||||
|
|
||||||
colorpick_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
colorpick_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ include_HEADERS = wtableview.h wtabledelegates.h
|
|||||||
|
|
||||||
lib_LTLIBRARIES = libExtraWINGs.la
|
lib_LTLIBRARIES = libExtraWINGs.la
|
||||||
|
|
||||||
noinst_PROGRAMS = test
|
noinst_PROGRAMS = tableview
|
||||||
|
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
|
|
||||||
@@ -25,6 +25,6 @@ AM_CPPFLAGS = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \
|
|||||||
|
|
||||||
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
||||||
$(top_builddir)/WINGs/libWUtil.la \
|
$(top_builddir)/WINGs/libWUtil.la \
|
||||||
@XFTLIBS@ @INTLIBS@
|
@XFT_LIBS@ @INTLIBS@ @XLIBS@
|
||||||
|
|
||||||
test_LDADD = wtableview.o wtabledelegates.o $(LDADD)
|
tableview_LDADD = wtableview.o wtabledelegates.o $(LDADD)
|
||||||
|
|||||||
@@ -19,13 +19,18 @@ static char *options[] = {
|
|||||||
|
|
||||||
int numberOfRows(WMTableViewDelegate * self, WMTableView * table)
|
int numberOfRows(WMTableViewDelegate * self, WMTableView * table)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
|
(void) table;
|
||||||
|
|
||||||
return 20;
|
return 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row)
|
void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
/*WMTableView *table = (WMTableView*)WMGetTableColumnTableView(column); */
|
/*WMTableView *table = (WMTableView*)WMGetTableColumnTableView(column); */
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (col1[0] == 0) {
|
if (col1[0] == 0) {
|
||||||
for (i = 0; i < 20; i++) {
|
for (i = 0; i < 20; i++) {
|
||||||
char buf[128];
|
char buf[128];
|
||||||
@@ -44,6 +49,8 @@ void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row)
|
|||||||
|
|
||||||
void setValueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row, void *data)
|
void setValueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row, void *data)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
|
|
||||||
if ((uintptr_t)WMGetTableColumnId(column) == 1)
|
if ((uintptr_t)WMGetTableColumnId(column) == 1)
|
||||||
col1[row] = data;
|
col1[row] = data;
|
||||||
else
|
else
|
||||||
@@ -59,6 +66,7 @@ static WMTableViewDelegate delegate = {
|
|||||||
|
|
||||||
void clickedTable(WMWidget * w, void *self)
|
void clickedTable(WMWidget * w, void *self)
|
||||||
{
|
{
|
||||||
|
(void) w;
|
||||||
int row = WMGetTableViewClickedRow((WMTableView *) self);
|
int row = WMGetTableViewClickedRow((WMTableView *) self);
|
||||||
|
|
||||||
WMEditTableViewRow(self, row);
|
WMEditTableViewRow(self, row);
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
#include <WINGs/WINGsP.h>
|
#include <WINGs/WINGsP.h>
|
||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <float.h>
|
||||||
|
|
||||||
#include "wtableview.h"
|
#include "wtableview.h"
|
||||||
|
|
||||||
@@ -274,7 +276,7 @@ static void adjustScrollers(WMTableView * table)
|
|||||||
prop = 1.0;
|
prop = 1.0;
|
||||||
} else {
|
} else {
|
||||||
oprop = WMGetScrollerKnobProportion(table->hscroll);
|
oprop = WMGetScrollerKnobProportion(table->hscroll);
|
||||||
if (oprop == 0.0)
|
if (fabs(oprop) <= DBL_EPSILON)
|
||||||
oprop = 1.0;
|
oprop = 1.0;
|
||||||
ovalue = WMGetScrollerValue(table->hscroll);
|
ovalue = WMGetScrollerValue(table->hscroll);
|
||||||
|
|
||||||
@@ -290,7 +292,7 @@ static void adjustScrollers(WMTableView * table)
|
|||||||
prop = 1.0;
|
prop = 1.0;
|
||||||
} else {
|
} else {
|
||||||
oprop = WMGetScrollerKnobProportion(table->vscroll);
|
oprop = WMGetScrollerKnobProportion(table->vscroll);
|
||||||
if (oprop == 0.0)
|
if (fabs(oprop) <= DBL_EPSILON)
|
||||||
oprop = 1.0;
|
oprop = 1.0;
|
||||||
ovalue = WMGetScrollerValue(table->vscroll);
|
ovalue = WMGetScrollerValue(table->vscroll);
|
||||||
|
|
||||||
@@ -332,7 +334,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
case WSIncrementWheel:
|
case WSIncrementWheel:
|
||||||
case WSIncrementLine:
|
case WSIncrementLine:
|
||||||
value += (float)table->rowHeight / size;
|
value += (float)table->rowHeight / size;
|
||||||
if (value > 1.0)
|
if (value > (float)1.0)
|
||||||
value = 1.0;
|
value = 1.0;
|
||||||
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
||||||
repaintTable(table);
|
repaintTable(table);
|
||||||
@@ -344,7 +346,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
|
|
||||||
case WSDecrementPage:
|
case WSDecrementPage:
|
||||||
value -= vpsize / size;
|
value -= vpsize / size;
|
||||||
if (value < 0.0)
|
if (value < (float)0.0)
|
||||||
value = 0.0;
|
value = 0.0;
|
||||||
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
||||||
repaintTable(table);
|
repaintTable(table);
|
||||||
@@ -352,7 +354,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
|
|
||||||
case WSIncrementPage:
|
case WSIncrementPage:
|
||||||
value += vpsize / size;
|
value += vpsize / size;
|
||||||
if (value > 1.0)
|
if (value > (float)1.0)
|
||||||
value = 1.0;
|
value = 1.0;
|
||||||
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
||||||
repaintTable(table);
|
repaintTable(table);
|
||||||
@@ -398,6 +400,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
|
|
||||||
static void splitterHandler(XEvent * event, void *data)
|
static void splitterHandler(XEvent * event, void *data)
|
||||||
{
|
{
|
||||||
|
(void) event;
|
||||||
WMTableColumn *column = (WMTableColumn *) data;
|
WMTableColumn *column = (WMTableColumn *) data;
|
||||||
WMTableView *table = column->table;
|
WMTableView *table = column->table;
|
||||||
int done = 0;
|
int done = 0;
|
||||||
@@ -451,6 +454,8 @@ static void splitterHandler(XEvent * event, void *data)
|
|||||||
|
|
||||||
static void realizeTable(void *data, WMNotification * notif)
|
static void realizeTable(void *data, WMNotification * notif)
|
||||||
{
|
{
|
||||||
|
(void) notif;
|
||||||
|
|
||||||
repaintTable(data);
|
repaintTable(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -790,7 +795,6 @@ void WMSetTableViewRowHeight(WMTableView * table, int height)
|
|||||||
|
|
||||||
void WMScrollTableViewRowToVisible(WMTableView * table, int row)
|
void WMScrollTableViewRowToVisible(WMTableView * table, int row)
|
||||||
{
|
{
|
||||||
WMScroller *scroller;
|
|
||||||
WMRange range;
|
WMRange range;
|
||||||
WMRect rect;
|
WMRect rect;
|
||||||
int newY, tmp;
|
int newY, tmp;
|
||||||
@@ -798,7 +802,6 @@ void WMScrollTableViewRowToVisible(WMTableView * table, int row)
|
|||||||
rect = getVisibleRect(table);
|
rect = getVisibleRect(table);
|
||||||
range = rowsInRect(table, rect);
|
range = rowsInRect(table, rect);
|
||||||
|
|
||||||
scroller = table->vscroll;
|
|
||||||
|
|
||||||
if (row < range.position) {
|
if (row < range.position) {
|
||||||
newY = row * table->rowHeight - rect.size.height / 2;
|
newY = row * table->rowHeight - rect.size.height / 2;
|
||||||
@@ -1157,6 +1160,8 @@ static void handleEvents(XEvent * event, void *data)
|
|||||||
|
|
||||||
static void handleResize(W_ViewDelegate * self, WMView * view)
|
static void handleResize(W_ViewDelegate * self, WMView * view)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
|
|
||||||
reorganizeInterior(view->self);
|
reorganizeInterior(view->self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1167,7 +1172,8 @@ static void reorganizeInterior(WMTableView * table)
|
|||||||
WMSize size = getTotalSize(table);
|
WMSize size = getTotalSize(table);
|
||||||
WMView *view = table->view;
|
WMView *view = table->view;
|
||||||
int vw, vh;
|
int vw, vh;
|
||||||
int hsThickness, vsThickness;
|
int hsThickness = 0;
|
||||||
|
int vsThickness = 0;
|
||||||
|
|
||||||
if (table->vscroll)
|
if (table->vscroll)
|
||||||
vsThickness = WMWidgetWidth(table->vscroll);
|
vsThickness = WMWidgetWidth(table->vscroll);
|
||||||
|
|||||||
+7
-6
@@ -12,7 +12,7 @@ lib_LTLIBRARIES = libWUtil.la libWINGs.la
|
|||||||
|
|
||||||
|
|
||||||
LDADD= libWUtil.la libWINGs.la $(top_builddir)/wrlib/libwraster.la @INTLIBS@
|
LDADD= libWUtil.la libWINGs.la $(top_builddir)/wrlib/libwraster.la @INTLIBS@
|
||||||
libWINGs_la_LIBADD = libWUtil.la $(top_builddir)/wrlib/libwraster.la @XLIBS@ @XFTLIBS@ @FCLIBS@ @LIBM@ @PANGOLIBS@
|
libWINGs_la_LIBADD = libWUtil.la $(top_builddir)/wrlib/libwraster.la @XLIBS@ @XFT_LIBS@ @FCLIBS@ @LIBM@ @PANGO_LIBS@
|
||||||
libWUtil_la_LIBADD = @LIBBSD@
|
libWUtil_la_LIBADD = @LIBBSD@
|
||||||
|
|
||||||
EXTRA_DIST = BUGS make-rgb Examples Extras Tests
|
EXTRA_DIST = BUGS make-rgb Examples Extras Tests
|
||||||
@@ -87,11 +87,12 @@ libWUtil_la_SOURCES = \
|
|||||||
wutil.c
|
wutil.c
|
||||||
|
|
||||||
|
|
||||||
AM_CFLAGS =
|
AM_CFLAGS = @PANGO_CFLAGS@
|
||||||
|
|
||||||
AM_CPPFLAGS = -DRESOURCE_PATH=\"$(datadir)/WINGs\" \
|
AM_CPPFLAGS = -DRESOURCE_PATH=\"$(datadir)/WINGs\" \
|
||||||
-I$(top_srcdir)/WINGs/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \
|
-I$(top_srcdir)/WINGs/WINGs -I$(top_builddir)/WINGs/WINGs \
|
||||||
@XFTFLAGS@ @HEADER_SEARCH_PATH@
|
-I$(top_builddir)/wrlib -I$(top_srcdir)/src \
|
||||||
|
@XFT_CFLAGS@ @HEADER_SEARCH_PATH@
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
pkgconfig_DATA = WINGs.pc WUtil.pc
|
pkgconfig_DATA = WINGs.pc WUtil.pc
|
||||||
@@ -105,8 +106,8 @@ WINGs.pc: Makefile
|
|||||||
@echo 'Version: $(VERSION)' >> $@
|
@echo 'Version: $(VERSION)' >> $@
|
||||||
@echo 'Requires: wrlib WUtil' >> $@
|
@echo 'Requires: wrlib WUtil' >> $@
|
||||||
@echo 'Libs: $(lib_search_path) -lWINGs' >> $@
|
@echo 'Libs: $(lib_search_path) -lWINGs' >> $@
|
||||||
@echo 'Libs.private: $(XFTLIBS) $(PANGOLIBS) $(XLIBS) -lm $(INTLIBS)' >> $@
|
@echo 'Libs.private: $(XFT_LIBS) $(PANGOLIBS) $(XLIBS) -lm $(INTLIBS)' >> $@
|
||||||
@echo 'Cflags: $(inc_search_path)' >> $@
|
@echo 'Cflags: $(inc_search_path) @PANGO_CFLAGS@' >> $@
|
||||||
|
|
||||||
WUtil.pc: Makefile
|
WUtil.pc: Makefile
|
||||||
@echo "Generating $@"
|
@echo "Generating $@"
|
||||||
|
|||||||
+3
-1
@@ -1,7 +1,9 @@
|
|||||||
** API and ABI modifications since wmaker 0.92.0
|
** API and ABI modifications since wmaker 0.96.0
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
** libWINGs **
|
** libWINGs **
|
||||||
<WINGsP.h>
|
<WINGsP.h>
|
||||||
|
W_KeycodeToKeysym ADDED
|
||||||
struct W_DragDestinationInfo: new members added SIZE CHANGE
|
struct W_DragDestinationInfo: new members added SIZE CHANGE
|
||||||
|
|
||||||
<WINGs.h>
|
<WINGs.h>
|
||||||
|
|||||||
+6
-6
@@ -8,25 +8,25 @@
|
|||||||
kojima@windowmaker.info
|
kojima@windowmaker.info
|
||||||
|
|
||||||
|
|
||||||
WINGs is a small widget set with the N*XTSTEP look and feel. It's API
|
WINGs is a small widget set with the N*XTSTEP look and feel. Its API
|
||||||
is inspired in OpenStep and it's implementation borrows some ideas
|
is inspired in OpenStep and its implementation borrows some ideas
|
||||||
from Tk. It has a reasonable set of widgets, sufficient for building
|
from Tk. It has a reasonable set of widgets, sufficient for building
|
||||||
small applications (like a CDPlayer or hacking something like rxvt). It
|
small applications (like a CDPlayer or hacking something like rxvt). It
|
||||||
also has other functions that are usefull for applications, like a
|
also has other functions that are usefull for applications, like a
|
||||||
User Defaults alike configuration manager and a notification system.
|
User Defaults alike configuration manager and a notification system.
|
||||||
|
|
||||||
The library is limited and it's design is a little sloppy,
|
The library is limited and its design is a little sloppy,
|
||||||
so it's not intended to build large or complex applications, like
|
so it's not intended to build large or complex applications, like
|
||||||
anything more complex than a CDPlayer. GNUstep should be used for such
|
anything more complex than a CDPlayer. GNUstep should be used for such
|
||||||
applications.
|
applications.
|
||||||
|
|
||||||
Since WINGs is written in C and is sort of low-level it is small
|
Since WINGs is written in C and is sort of low-level it is small
|
||||||
and faster than say, Motif or even Athena. Knowing Xlib will help you to
|
and faster than say, Motif or even Athena. Knowing Xlib will help you to
|
||||||
workaround some of it's limitations, although you'll probably be able to
|
workaround some of its limitations, although you'll probably be able to
|
||||||
write something like a trivial tic-tac-toe game without knowing much Xlib.
|
write something like a trivial tic-tac-toe game without knowing much Xlib.
|
||||||
|
|
||||||
Some of it's functions are designed to support the Window Maker window
|
Some of its functions are designed to support the Window Maker window
|
||||||
manager (see http://windowmaker.info) In fact, it's primary role is to
|
manager (see http://windowmaker.info) In fact, its primary role is to
|
||||||
support Window Maker. All other uses of it are just an added bonus.
|
support Window Maker. All other uses of it are just an added bonus.
|
||||||
|
|
||||||
It will help you to understand the API if you read the ApplicationKit
|
It will help you to understand the API if you read the ApplicationKit
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ noinst_PROGRAMS = wtest wmquery wmfile testmywidget
|
|||||||
|
|
||||||
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
||||||
$(top_builddir)/WINGs/libWUtil.la \
|
$(top_builddir)/WINGs/libWUtil.la \
|
||||||
@XFTLIBS@ @INTLIBS@ @XLIBS@
|
@XFT_LIBS@ @INTLIBS@ @XLIBS@
|
||||||
|
|
||||||
|
|
||||||
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
|
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
|
||||||
@@ -17,4 +17,5 @@ wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
|||||||
EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png
|
EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \
|
AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \
|
||||||
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @XFTFLAGS@ @HEADER_SEARCH_PATH@
|
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @XFT_CFLAGS@ @HEADER_SEARCH_PATH@ \
|
||||||
|
@PANGO_CFLAGS@
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ static W_Class myWidgetClass = 0;
|
|||||||
*/
|
*/
|
||||||
W_Class InitMyWidget(WMScreen * scr)
|
W_Class InitMyWidget(WMScreen * scr)
|
||||||
{
|
{
|
||||||
|
(void)scr;
|
||||||
/* register our widget with WINGs and get our widget class ID */
|
/* register our widget with WINGs and get our widget class ID */
|
||||||
if (!myWidgetClass) {
|
if (!myWidgetClass) {
|
||||||
myWidgetClass = W_RegisterUserWidget();
|
myWidgetClass = W_RegisterUserWidget();
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include "mywidget.h"
|
#include "mywidget.h"
|
||||||
|
|
||||||
void wAbort()
|
_Noreturn void wAbort(void)
|
||||||
{
|
{
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,14 +19,14 @@
|
|||||||
|
|
||||||
#include "logo.xpm"
|
#include "logo.xpm"
|
||||||
|
|
||||||
void wAbort()
|
_Noreturn void wAbort(void)
|
||||||
{
|
{
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *ProgName;
|
char *ProgName;
|
||||||
|
|
||||||
void usage(void)
|
_Noreturn void usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"usage:\n"
|
"usage:\n"
|
||||||
@@ -53,13 +53,10 @@ int main(int argc, char **argv)
|
|||||||
WMPixmap *pixmap;
|
WMPixmap *pixmap;
|
||||||
WMOpenPanel *oPanel;
|
WMOpenPanel *oPanel;
|
||||||
WMSavePanel *sPanel;
|
WMSavePanel *sPanel;
|
||||||
/* RImage *image; */
|
|
||||||
char *title = NULL;
|
char *title = NULL;
|
||||||
char *initial = "/";
|
char *initial = "/";
|
||||||
int ch;
|
int ch;
|
||||||
int panelType = OPEN_PANEL_TYPE;
|
int panelType = OPEN_PANEL_TYPE;
|
||||||
extern char *optarg;
|
|
||||||
extern int optind;
|
|
||||||
|
|
||||||
if (!dpy) {
|
if (!dpy) {
|
||||||
puts("could not open display");
|
puts("could not open display");
|
||||||
@@ -96,14 +93,14 @@ int main(int argc, char **argv)
|
|||||||
if (panelType == SAVE_PANEL_TYPE) {
|
if (panelType == SAVE_PANEL_TYPE) {
|
||||||
sPanel = WMGetSavePanel(scr);
|
sPanel = WMGetSavePanel(scr);
|
||||||
if (WMRunModalFilePanelForDirectory(sPanel, NULL, initial,
|
if (WMRunModalFilePanelForDirectory(sPanel, NULL, initial,
|
||||||
/*title */ NULL, NULL) == True)
|
title, NULL) == True)
|
||||||
printf("%s\n", WMGetFilePanelFileName(sPanel));
|
printf("%s\n", WMGetFilePanelFileName(sPanel));
|
||||||
else
|
else
|
||||||
printf("\n");
|
printf("\n");
|
||||||
} else {
|
} else {
|
||||||
oPanel = WMGetOpenPanel(scr);
|
oPanel = WMGetOpenPanel(scr);
|
||||||
if (WMRunModalFilePanelForDirectory(oPanel, NULL, initial,
|
if (WMRunModalFilePanelForDirectory(oPanel, NULL, initial,
|
||||||
/*title */ NULL, NULL) == True)
|
title, NULL) == True)
|
||||||
printf("%s\n", WMGetFilePanelFileName(oPanel));
|
printf("%s\n", WMGetFilePanelFileName(oPanel));
|
||||||
else
|
else
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|||||||
@@ -11,14 +11,14 @@
|
|||||||
|
|
||||||
#include "logo.xpm"
|
#include "logo.xpm"
|
||||||
|
|
||||||
void wAbort()
|
_Noreturn void wAbort(void)
|
||||||
{
|
{
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *ProgName;
|
char *ProgName;
|
||||||
|
|
||||||
void usage(void)
|
_Noreturn void usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"usage:\n"
|
"usage:\n"
|
||||||
@@ -45,8 +45,6 @@ int main(int argc, char **argv)
|
|||||||
char *initial = NULL;
|
char *initial = NULL;
|
||||||
char *result = NULL;
|
char *result = NULL;
|
||||||
int ch;
|
int ch;
|
||||||
extern char *optarg;
|
|
||||||
extern int optind;
|
|
||||||
|
|
||||||
WMInitializeApplication("WMQuery", &argc, argv);
|
WMInitializeApplication("WMQuery", &argc, argv);
|
||||||
|
|
||||||
|
|||||||
+13
-2
@@ -14,7 +14,7 @@
|
|||||||
* This will be called when the application will be terminated because
|
* This will be called when the application will be terminated because
|
||||||
* of a fatal error (only for memory allocation failures ATM).
|
* of a fatal error (only for memory allocation failures ATM).
|
||||||
*/
|
*/
|
||||||
void wAbort()
|
_Noreturn void wAbort(void)
|
||||||
{
|
{
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -25,6 +25,7 @@ int windowCount = 0;
|
|||||||
|
|
||||||
void closeAction(WMWidget * self, void *data)
|
void closeAction(WMWidget * self, void *data)
|
||||||
{
|
{
|
||||||
|
(void)data;
|
||||||
WMDestroyWidget(self);
|
WMDestroyWidget(self);
|
||||||
windowCount--;
|
windowCount--;
|
||||||
printf("window closed, window count = %d\n", windowCount);
|
printf("window closed, window count = %d\n", windowCount);
|
||||||
@@ -165,10 +166,13 @@ void testBox(WMScreen * scr)
|
|||||||
|
|
||||||
static void singleClick(WMWidget * self, void *data)
|
static void singleClick(WMWidget * self, void *data)
|
||||||
{
|
{
|
||||||
|
(void)self;
|
||||||
|
(void)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void doubleClick(WMWidget * self, void *data)
|
static void doubleClick(WMWidget * self, void *data)
|
||||||
{
|
{
|
||||||
|
(void)data;
|
||||||
WMSelectAllListItems((WMList *) self);
|
WMSelectAllListItems((WMList *) self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,6 +484,7 @@ void testColorPanel(WMScreen * scr)
|
|||||||
|
|
||||||
void sliderCallback(WMWidget * w, void *data)
|
void sliderCallback(WMWidget * w, void *data)
|
||||||
{
|
{
|
||||||
|
(void)data;
|
||||||
printf("SLIDER == %i\n", WMGetSliderValue(w));
|
printf("SLIDER == %i\n", WMGetSliderValue(w));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -749,6 +754,8 @@ void testTabView(WMScreen * scr)
|
|||||||
|
|
||||||
void splitViewConstrainProc(WMSplitView * sPtr, int indView, int *minSize, int *maxSize)
|
void splitViewConstrainProc(WMSplitView * sPtr, int indView, int *minSize, int *maxSize)
|
||||||
{
|
{
|
||||||
|
(void)sPtr;
|
||||||
|
|
||||||
switch (indView) {
|
switch (indView) {
|
||||||
case 0:
|
case 0:
|
||||||
*minSize = 20;
|
*minSize = 20;
|
||||||
@@ -782,6 +789,7 @@ static void resizeSplitView(XEvent * event, void *data)
|
|||||||
|
|
||||||
void appendSubviewButtonAction(WMWidget * self, void *data)
|
void appendSubviewButtonAction(WMWidget * self, void *data)
|
||||||
{
|
{
|
||||||
|
(void)self;
|
||||||
WMSplitView *sPtr = (WMSplitView *) data;
|
WMSplitView *sPtr = (WMSplitView *) data;
|
||||||
char buf[64];
|
char buf[64];
|
||||||
WMLabel *label = WMCreateLabel(sPtr);
|
WMLabel *label = WMCreateLabel(sPtr);
|
||||||
@@ -796,6 +804,7 @@ void appendSubviewButtonAction(WMWidget * self, void *data)
|
|||||||
|
|
||||||
void removeSubviewButtonAction(WMWidget * self, void *data)
|
void removeSubviewButtonAction(WMWidget * self, void *data)
|
||||||
{
|
{
|
||||||
|
(void)self;
|
||||||
WMSplitView *sPtr = (WMSplitView *) data;
|
WMSplitView *sPtr = (WMSplitView *) data;
|
||||||
int count = WMGetSplitViewSubviewsCount(sPtr);
|
int count = WMGetSplitViewSubviewsCount(sPtr);
|
||||||
|
|
||||||
@@ -808,12 +817,14 @@ void removeSubviewButtonAction(WMWidget * self, void *data)
|
|||||||
|
|
||||||
void orientationButtonAction(WMWidget * self, void *data)
|
void orientationButtonAction(WMWidget * self, void *data)
|
||||||
{
|
{
|
||||||
|
(void)self;
|
||||||
WMSplitView *sPtr = (WMSplitView *) data;
|
WMSplitView *sPtr = (WMSplitView *) data;
|
||||||
WMSetSplitViewVertical(sPtr, !WMGetSplitViewVertical(sPtr));
|
WMSetSplitViewVertical(sPtr, !WMGetSplitViewVertical(sPtr));
|
||||||
}
|
}
|
||||||
|
|
||||||
void adjustSubviewsButtonAction(WMWidget * self, void *data)
|
void adjustSubviewsButtonAction(WMWidget * self, void *data)
|
||||||
{
|
{
|
||||||
|
(void)self;
|
||||||
WMAdjustSplitViewSubviews((WMSplitView *) data);
|
WMAdjustSplitViewSubviews((WMSplitView *) data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -902,7 +913,7 @@ void testSplitView(WMScreen * scr)
|
|||||||
WMMapWidget(win);
|
WMMapWidget(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
void testUD()
|
void testUD(void)
|
||||||
{
|
{
|
||||||
WMUserDefaults *defs;
|
WMUserDefaults *defs;
|
||||||
char str[32];
|
char str[32];
|
||||||
|
|||||||
+11
-1
@@ -5,4 +5,14 @@ AUTOMAKE_OPTIONS =
|
|||||||
# is this a kluge? if so, how should i do it?
|
# is this a kluge? if so, how should i do it?
|
||||||
includedir = @includedir@/WINGs
|
includedir = @includedir@/WINGs
|
||||||
|
|
||||||
include_HEADERS = WINGs.h WUtil.h WINGsP.h
|
BUILT_SOURCES = WINGsP.h
|
||||||
|
CLEANFILES = WINGsP.h
|
||||||
|
include_HEADERS = WINGs.h WUtil.h
|
||||||
|
nodist_include_HEADERS = WINGsP.h
|
||||||
|
EXTRA_DIST = WINGsP.h.in
|
||||||
|
|
||||||
|
WINGsP.h: WINGsP.h.in $(top_builddir)/config.h
|
||||||
|
$(AM_V_GEN)$(top_srcdir)/script/replace-ac-keywords.sh \
|
||||||
|
--header "$(top_builddir)/config.h" \
|
||||||
|
--filter "USE_PANGO" \
|
||||||
|
-o $@ $<
|
||||||
|
|||||||
+16
-16
@@ -26,7 +26,7 @@
|
|||||||
#include <WINGs/WUtil.h>
|
#include <WINGs/WUtil.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
#define WINGS_H_VERSION 20150508
|
#define WINGS_H_VERSION 20230226
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -736,7 +736,7 @@ Bool WMRequestSelection(WMView *view, Atom selection, Atom target,
|
|||||||
void *cdata);
|
void *cdata);
|
||||||
|
|
||||||
|
|
||||||
extern char *WMSelectionOwnerDidChangeNotification;
|
extern const char *WMSelectionOwnerDidChangeNotification;
|
||||||
|
|
||||||
/* ---[ WINGs/dragcommon.c ]---------------------------------------------- */
|
/* ---[ WINGs/dragcommon.c ]---------------------------------------------- */
|
||||||
|
|
||||||
@@ -977,11 +977,11 @@ WMPoint WMGetViewScreenPosition(WMView *view);
|
|||||||
WMWidget* WMWidgetOfView(WMView *view);
|
WMWidget* WMWidgetOfView(WMView *view);
|
||||||
|
|
||||||
/* notifications */
|
/* notifications */
|
||||||
extern char *WMViewSizeDidChangeNotification;
|
extern const char *WMViewSizeDidChangeNotification;
|
||||||
|
|
||||||
extern char *WMViewFocusDidChangeNotification;
|
extern const char *WMViewFocusDidChangeNotification;
|
||||||
|
|
||||||
extern char *WMViewRealizedNotification;
|
extern const char *WMViewRealizedNotification;
|
||||||
|
|
||||||
/* ---[ WINGs/wballoon.c ]------------------------------------------------ */
|
/* ---[ WINGs/wballoon.c ]------------------------------------------------ */
|
||||||
|
|
||||||
@@ -1190,9 +1190,9 @@ void WMSetTextFieldDelegate(WMTextField *tPtr, WMTextFieldDelegate *delegate);
|
|||||||
|
|
||||||
WMTextFieldDelegate* WMGetTextFieldDelegate(WMTextField *tPtr);
|
WMTextFieldDelegate* WMGetTextFieldDelegate(WMTextField *tPtr);
|
||||||
|
|
||||||
extern char *WMTextDidChangeNotification;
|
extern const char *WMTextDidChangeNotification;
|
||||||
extern char *WMTextDidBeginEditingNotification;
|
extern const char *WMTextDidBeginEditingNotification;
|
||||||
extern char *WMTextDidEndEditingNotification;
|
extern const char *WMTextDidEndEditingNotification;
|
||||||
|
|
||||||
/* ---[ WINGs/wscroller.c ]----------------------------------------------- */
|
/* ---[ WINGs/wscroller.c ]----------------------------------------------- */
|
||||||
|
|
||||||
@@ -1212,7 +1212,7 @@ void WMSetScrollerAction(WMScroller *sPtr, WMAction *action, void *clientData);
|
|||||||
void WMSetScrollerArrowsPosition(WMScroller *sPtr,
|
void WMSetScrollerArrowsPosition(WMScroller *sPtr,
|
||||||
WMScrollArrowPosition position);
|
WMScrollArrowPosition position);
|
||||||
|
|
||||||
extern char *WMScrollerDidScrollNotification;
|
extern const char *WMScrollerDidScrollNotification;
|
||||||
|
|
||||||
/* ---[ WINGs/wlist.c ]--------------------------------------------------- */
|
/* ---[ WINGs/wlist.c ]--------------------------------------------------- */
|
||||||
|
|
||||||
@@ -1291,8 +1291,8 @@ Bool WMListAllowsMultipleSelection(WMList *lPtr);
|
|||||||
Bool WMListAllowsEmptySelection(WMList *lPtr);
|
Bool WMListAllowsEmptySelection(WMList *lPtr);
|
||||||
|
|
||||||
|
|
||||||
extern char *WMListDidScrollNotification;
|
extern const char *WMListDidScrollNotification;
|
||||||
extern char *WMListSelectionDidChangeNotification;
|
extern const char *WMListSelectionDidChangeNotification;
|
||||||
|
|
||||||
/* ---[ WINGs/wbrowser.c ]------------------------------------------------ */
|
/* ---[ WINGs/wbrowser.c ]------------------------------------------------ */
|
||||||
|
|
||||||
@@ -1324,7 +1324,7 @@ void WMSortBrowserColumnWithComparer(WMBrowser *bPtr, int column,
|
|||||||
WMCompareDataProc *func);
|
WMCompareDataProc *func);
|
||||||
|
|
||||||
/* Don't free the returned string. */
|
/* Don't free the returned string. */
|
||||||
char* WMSetBrowserPath(WMBrowser *bPtr, char *path);
|
const char* WMSetBrowserPath(WMBrowser *bPtr, const char *path);
|
||||||
|
|
||||||
/* free the returned string */
|
/* free the returned string */
|
||||||
char* WMGetBrowserPath(WMBrowser *bPtr);
|
char* WMGetBrowserPath(WMBrowser *bPtr);
|
||||||
@@ -1496,7 +1496,7 @@ void WMSetColorPanelPickerMode(WMColorPanel *panel, WMColorPanelMode mode);
|
|||||||
|
|
||||||
void WMSetColorPanelAction(WMColorPanel *panel, WMAction2 *action, void *data);
|
void WMSetColorPanelAction(WMColorPanel *panel, WMAction2 *action, void *data);
|
||||||
|
|
||||||
extern char *WMColorPanelColorChangedNotification;
|
extern const char *WMColorPanelColorChangedNotification;
|
||||||
|
|
||||||
/* ---[ WINGs/wcolorwell.c ]---------------------------------------------- */
|
/* ---[ WINGs/wcolorwell.c ]---------------------------------------------- */
|
||||||
|
|
||||||
@@ -1509,7 +1509,7 @@ WMColor* WMGetColorWellColor(WMColorWell *cPtr);
|
|||||||
void WSetColorWellBordered(WMColorWell *cPtr, Bool flag);
|
void WSetColorWellBordered(WMColorWell *cPtr, Bool flag);
|
||||||
|
|
||||||
|
|
||||||
extern char *WMColorWellDidChangeNotification;
|
extern const char *WMColorWellDidChangeNotification;
|
||||||
|
|
||||||
|
|
||||||
/* ---[ WINGs/wscrollview.c ]--------------------------------------------- */
|
/* ---[ WINGs/wscrollview.c ]--------------------------------------------- */
|
||||||
@@ -1876,7 +1876,7 @@ void WMSetFilePanelCanChooseFiles(WMFilePanel *panel, Bool flag);
|
|||||||
|
|
||||||
void WMSetFilePanelAutoCompletion(WMFilePanel *panel, Bool flag);
|
void WMSetFilePanelAutoCompletion(WMFilePanel *panel, Bool flag);
|
||||||
|
|
||||||
void WMSetFilePanelDirectory(WMFilePanel *panel, char *path);
|
void WMSetFilePanelDirectory(WMFilePanel *panel, const char *path);
|
||||||
|
|
||||||
/* you can free the returned string */
|
/* you can free the returned string */
|
||||||
char* WMGetFilePanelFileName(WMFilePanel *panel);
|
char* WMGetFilePanelFileName(WMFilePanel *panel);
|
||||||
@@ -1884,7 +1884,7 @@ char* WMGetFilePanelFileName(WMFilePanel *panel);
|
|||||||
void WMFreeFilePanel(WMFilePanel *panel);
|
void WMFreeFilePanel(WMFilePanel *panel);
|
||||||
|
|
||||||
int WMRunModalFilePanelForDirectory(WMFilePanel *panel, WMWindow *owner,
|
int WMRunModalFilePanelForDirectory(WMFilePanel *panel, WMWindow *owner,
|
||||||
char *path, const char *name, char **fileTypes);
|
const char *path, const char *name, char **fileTypes);
|
||||||
|
|
||||||
void WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view);
|
void WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view);
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,7 @@
|
|||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
|
|
||||||
#ifdef USE_PANGO
|
@USE_PANGO@#include <pango/pango.h>
|
||||||
#include <pango/pango.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <WINGs/WINGs.h>
|
#include <WINGs/WINGs.h>
|
||||||
|
|
||||||
@@ -43,7 +41,7 @@ typedef struct _WINGsConfiguration {
|
|||||||
unsigned mouseWheelDown;
|
unsigned mouseWheelDown;
|
||||||
} _WINGsConfiguration;
|
} _WINGsConfiguration;
|
||||||
|
|
||||||
extern char *_WINGS_progname;
|
extern const char *_WINGS_progname;
|
||||||
extern _WINGsConfiguration WINGsConfiguration;
|
extern _WINGsConfiguration WINGsConfiguration;
|
||||||
extern struct W_Application WMApplication;
|
extern struct W_Application WMApplication;
|
||||||
|
|
||||||
@@ -459,9 +457,7 @@ typedef struct W_Font {
|
|||||||
short refCount;
|
short refCount;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
#ifdef USE_PANGO
|
@USE_PANGO@ PangoLayout *layout;
|
||||||
PangoLayout *layout;
|
|
||||||
#endif
|
|
||||||
} W_Font;
|
} W_Font;
|
||||||
|
|
||||||
#define W_FONTID(f) (f)->font->fid
|
#define W_FONTID(f) (f)->font->fid
|
||||||
@@ -498,6 +494,8 @@ void W_SetPreeditPositon(W_View *view, int x, int y);
|
|||||||
int W_LookupString(W_View *view, XKeyPressedEvent *event, char *buffer,
|
int W_LookupString(W_View *view, XKeyPressedEvent *event, char *buffer,
|
||||||
int buflen, KeySym *keysym, Status *status);
|
int buflen, KeySym *keysym, Status *status);
|
||||||
|
|
||||||
|
KeySym W_KeycodeToKeysym(Display *display, KeyCode keycode, int index);
|
||||||
|
|
||||||
|
|
||||||
/* ---[ wmisc.c ]--------------------------------------------------------- */
|
/* ---[ wmisc.c ]--------------------------------------------------------- */
|
||||||
|
|
||||||
+2
-1
@@ -249,7 +249,7 @@ char* wexpandpath(const char *path);
|
|||||||
int wcopy_file(const char *toPath, const char *srcFile, const char *destFile);
|
int wcopy_file(const char *toPath, const char *srcFile, const char *destFile);
|
||||||
|
|
||||||
/* don't free the returned string */
|
/* don't free the returned string */
|
||||||
char* wgethomedir(void);
|
const char* wgethomedir(void);
|
||||||
|
|
||||||
/* ---[ WINGs/proplist.c ]------------------------------------------------ */
|
/* ---[ WINGs/proplist.c ]------------------------------------------------ */
|
||||||
|
|
||||||
@@ -864,6 +864,7 @@ Bool WMWritePropListToFile(WMPropList *plist, const char *path);
|
|||||||
|
|
||||||
/* don't free the returned string */
|
/* don't free the returned string */
|
||||||
const char* wusergnusteppath(void);
|
const char* wusergnusteppath(void);
|
||||||
|
const char* wuserdatapath(void);
|
||||||
|
|
||||||
/* Free the returned string when you no longer need it */
|
/* Free the returned string when you no longer need it */
|
||||||
char* wdefaultspathfordomain(const char *domain);
|
char* wdefaultspathfordomain(const char *domain);
|
||||||
|
|||||||
@@ -599,7 +599,7 @@ static void dragSourceResponseTimeOut(void *destView)
|
|||||||
W_DragDestinationInfoClear(info);
|
W_DragDestinationInfoClear(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void W_DragDestinationStopTimer()
|
void W_DragDestinationStopTimer(void)
|
||||||
{
|
{
|
||||||
if (dndDestinationTimer != NULL) {
|
if (dndDestinationTimer != NULL) {
|
||||||
WMDeleteTimerHandler(dndDestinationTimer);
|
WMDeleteTimerHandler(dndDestinationTimer);
|
||||||
|
|||||||
+1
-1
@@ -1080,7 +1080,7 @@ static void dragSourceResponseTimeOut(void *source)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void W_DragSourceStopTimer()
|
void W_DragSourceStopTimer(void)
|
||||||
{
|
{
|
||||||
if (dndSourceTimer != NULL) {
|
if (dndSourceTimer != NULL) {
|
||||||
WMDeleteTimerHandler(dndSourceTimer);
|
WMDeleteTimerHandler(dndSourceTimer);
|
||||||
|
|||||||
+2
-6
@@ -39,7 +39,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
char *wgethomedir()
|
const char *wgethomedir(void)
|
||||||
{
|
{
|
||||||
static char *home = NULL;
|
static char *home = NULL;
|
||||||
char *tmp;
|
char *tmp;
|
||||||
@@ -48,11 +48,7 @@ char *wgethomedir()
|
|||||||
if (home)
|
if (home)
|
||||||
return home;
|
return home;
|
||||||
|
|
||||||
#ifdef HAVE_SECURE_GETENV
|
tmp = GETENV("HOME");
|
||||||
tmp = secure_getenv("HOME");
|
|
||||||
#else
|
|
||||||
tmp = getenv("HOME");
|
|
||||||
#endif
|
|
||||||
if (tmp) {
|
if (tmp) {
|
||||||
home = wstrdup(tmp);
|
home = wstrdup(tmp);
|
||||||
return home;
|
return home;
|
||||||
|
|||||||
+2
-1
@@ -107,7 +107,8 @@ void *wmalloc(size_t size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
memset(tmp, 0, size);
|
if (tmp != NULL)
|
||||||
|
memset(tmp, 0, size);
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -536,7 +536,7 @@ found_end_define_fname:
|
|||||||
while (*src != '\0') {
|
while (*src != '\0') {
|
||||||
idx = 0;
|
idx = 0;
|
||||||
if (*src == '~') {
|
if (*src == '~') {
|
||||||
char *home = wgethomedir();
|
const char *home = wgethomedir();
|
||||||
while (*home != '\0') {
|
while (*home != '\0') {
|
||||||
if (idx < sizeof(buffer) - 2)
|
if (idx < sizeof(buffer) - 2)
|
||||||
buffer[idx++] = *home;
|
buffer[idx++] = *home;
|
||||||
@@ -612,10 +612,10 @@ static void menu_parser_condition_ifmacro(WMenuParser parser, Bool check_exists)
|
|||||||
macro = menu_parser_find_macro(parser, macro_name);
|
macro = menu_parser_find_macro(parser, macro_name);
|
||||||
parser->cond.stack[0].skip =
|
parser->cond.stack[0].skip =
|
||||||
((check_exists) && (macro == NULL)) ||
|
((check_exists) && (macro == NULL)) ||
|
||||||
((!check_exists) && (macro != NULL)) ;
|
((!check_exists) && (macro != NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(parser->cond.stack[0].name, cmd_name);
|
strncpy(parser->cond.stack[0].name, cmd_name, sizeof(parser->cond.stack[0].name) - 1);
|
||||||
parser->cond.stack[0].line = parser->line_number;
|
parser->cond.stack[0].line = parser->line_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ void menu_parser_define_macro(WMenuParser parser)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
macro = wmalloc(sizeof(*macro));
|
macro = wmalloc(sizeof(*macro));
|
||||||
|
memset(arg_name, 0, MAX_MACRO_ARG_COUNT * sizeof(char *));
|
||||||
|
|
||||||
/* Isolate name of macro */
|
/* Isolate name of macro */
|
||||||
idx = 0;
|
idx = 0;
|
||||||
@@ -279,7 +280,8 @@ WParserMacro *menu_parser_find_macro(WMenuParser parser, const char *name)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
return macro;
|
return macro;
|
||||||
check_next_macro: ;
|
check_next_macro:
|
||||||
|
;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -391,6 +393,8 @@ void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro)
|
|||||||
unsigned int size;
|
unsigned int size;
|
||||||
int i, space_left;
|
int i, space_left;
|
||||||
|
|
||||||
|
memset(arg_value, 0, MAX_MACRO_ARG_COUNT * sizeof(char *));
|
||||||
|
|
||||||
/* Skip the name of the macro, this was not done by caller */
|
/* Skip the name of the macro, this was not done by caller */
|
||||||
for (i = 0; macro->name[i] != '\0'; i++)
|
for (i = 0; macro->name[i] != '\0'; i++)
|
||||||
parser->rd++;
|
parser->rd++;
|
||||||
@@ -692,7 +696,7 @@ static void w_create_macro(WMenuParser parser, const char *name, WParserMacroFun
|
|||||||
WParserMacro *macro;
|
WParserMacro *macro;
|
||||||
|
|
||||||
macro = wmalloc(sizeof(*macro));
|
macro = wmalloc(sizeof(*macro));
|
||||||
strcpy(macro->name, name);
|
strncpy(macro->name, name, sizeof(macro->name) - 1);
|
||||||
macro->function = handler;
|
macro->function = handler;
|
||||||
macro->arg_count = -1;
|
macro->arg_count = -1;
|
||||||
macro->next = parser->macros;
|
macro->next = parser->macros;
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
# Translation into Western Frisian for Window Maker
|
# Translation into Western Frisian for Window Maker
|
||||||
# Copyright (C) 2015-2016 Window Maker Developers Team
|
# Copyright (C) 2015-2019 Window Maker Developers Team
|
||||||
# This file is distributed under the same license as the windowmaker package.
|
# This file is distributed under the same license as the windowmaker package.
|
||||||
# Original by Alwin <translations@ziggo.nl>, 2015.
|
# Original by Alwin <translations@ziggo.nl>, 2015.
|
||||||
#
|
#
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
# New translation into Dutch for Window Maker
|
# New translation into Dutch for Window Maker
|
||||||
# Copyright (C) 2014-2015 Window Maker Developers Team
|
# Copyright (C) 2014-2019 Window Maker Developers Team
|
||||||
# This file is distributed under the same license as the windowmaker package.
|
# This file is distributed under the same license as the windowmaker package.
|
||||||
# Original by Alwin <translations@ziggo.nl>, 2014.
|
# Original by Alwin <translations@ziggo.nl>, 2014.
|
||||||
#
|
#
|
||||||
|
|||||||
+20
-7
@@ -1695,6 +1695,7 @@ Bool WMWritePropListToFile(WMPropList * plist, const char *path)
|
|||||||
if (fprintf(theFile, "%s\n", desc) != strlen(desc) + 1) {
|
if (fprintf(theFile, "%s\n", desc) != strlen(desc) + 1) {
|
||||||
werror(_("writing to file: %s failed"), thePath);
|
werror(_("writing to file: %s failed"), thePath);
|
||||||
wfree(desc);
|
wfree(desc);
|
||||||
|
fclose(theFile);
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1823,7 +1824,7 @@ static int wrmdirhier_fn(const char *path, const struct stat *st,
|
|||||||
/*
|
/*
|
||||||
* remove a directory hierarchy
|
* remove a directory hierarchy
|
||||||
*
|
*
|
||||||
* refuses to remove anything outside $WMAKER_USER_ROOT
|
* refuses to remove anything outside $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library
|
||||||
*
|
*
|
||||||
* returns 1 on success, 0 on failure
|
* returns 1 on success, 0 on failure
|
||||||
*
|
*
|
||||||
@@ -1833,15 +1834,27 @@ static int wrmdirhier_fn(const char *path, const struct stat *st,
|
|||||||
*/
|
*/
|
||||||
int wrmdirhier(const char *path)
|
int wrmdirhier(const char *path)
|
||||||
{
|
{
|
||||||
|
const char *libpath;
|
||||||
|
char *udefpath = NULL;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
int error;
|
int error;
|
||||||
const char *t;
|
|
||||||
|
|
||||||
/* Only remove directories under $WMAKER_USER_ROOT */
|
/* Only remove directories under $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library */
|
||||||
if ((t = wusergnusteppath()) == NULL)
|
libpath = wuserdatapath();
|
||||||
return EPERM;
|
if (strncmp(path, libpath, strlen(libpath)) == 0)
|
||||||
if (strncmp(path, t, strlen(t)) != 0)
|
if (path[strlen(libpath)] == '/')
|
||||||
return EPERM;
|
goto path_in_valid_tree;
|
||||||
|
|
||||||
|
udefpath = wdefaultspathfordomain("");
|
||||||
|
if (strncmp(path, udefpath, strlen(udefpath)) == 0)
|
||||||
|
/* Note: by side effect, 'udefpath' already contains a final '/' */
|
||||||
|
goto path_in_valid_tree;
|
||||||
|
|
||||||
|
wfree(udefpath);
|
||||||
|
return EPERM;
|
||||||
|
|
||||||
|
path_in_valid_tree:
|
||||||
|
wfree(udefpath);
|
||||||
|
|
||||||
/* Shortcut if it doesn't exist to begin with */
|
/* Shortcut if it doesn't exist to begin with */
|
||||||
if (stat(path, &st) == -1)
|
if (stat(path, &st) == -1)
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#define MAX_PROPERTY_SIZE 8*1024
|
#define MAX_PROPERTY_SIZE 8*1024
|
||||||
|
|
||||||
char *WMSelectionOwnerDidChangeNotification = "WMSelectionOwnerDidChange";
|
const char *WMSelectionOwnerDidChangeNotification = "WMSelectionOwnerDidChange";
|
||||||
|
|
||||||
typedef struct SelectionHandler {
|
typedef struct SelectionHandler {
|
||||||
WMView *view;
|
WMView *view;
|
||||||
|
|||||||
+5
-7
@@ -204,7 +204,7 @@ char *wstrndup(const char *str, size_t len)
|
|||||||
char *wstrconcat(const char *str1, const char *str2)
|
char *wstrconcat(const char *str1, const char *str2)
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
size_t slen;
|
size_t slen, slen1;
|
||||||
|
|
||||||
if (!str1 && str2)
|
if (!str1 && str2)
|
||||||
return wstrdup(str2);
|
return wstrdup(str2);
|
||||||
@@ -213,13 +213,11 @@ char *wstrconcat(const char *str1, const char *str2)
|
|||||||
else if (!str1 && !str2)
|
else if (!str1 && !str2)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
slen = strlen(str1) + strlen(str2) + 1;
|
slen1 = strlen(str1);
|
||||||
|
slen = slen1 + strlen(str2) + 1;
|
||||||
str = wmalloc(slen);
|
str = wmalloc(slen);
|
||||||
if (wstrlcpy(str, str1, slen) >= slen ||
|
strcpy(str, str1);
|
||||||
wstrlcat(str, str2, slen) >= slen) {
|
strcpy(str + slen1, str2);
|
||||||
wfree(str);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-20
@@ -40,29 +40,25 @@ char *WMUserDefaultsDidChangeNotification = "WMUserDefaultsDidChangeNotification
|
|||||||
|
|
||||||
static void synchronizeUserDefaults(void *foo);
|
static void synchronizeUserDefaults(void *foo);
|
||||||
|
|
||||||
#define DEFAULTS_DIR "/Defaults"
|
|
||||||
#ifndef HAVE_INOTIFY
|
#ifndef HAVE_INOTIFY
|
||||||
/* Check defaults database for changes every this many milliseconds */
|
/* Check defaults database for changes every this many milliseconds */
|
||||||
/* XXX: this is shared with src/ stuff, put it in some common header */
|
/* XXX: this is shared with src/ stuff, put it in some common header */
|
||||||
#define UD_SYNC_INTERVAL 2000
|
#define UD_SYNC_INTERVAL 2000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *wusergnusteppath()
|
const char *wusergnusteppath(void)
|
||||||
{
|
{
|
||||||
static const char subdir[] = "/GNUstep";
|
static const char subdir[] = "/" GSUSER_SUBDIR;
|
||||||
static char *path = NULL;
|
static char *path = NULL;
|
||||||
char *gspath, *h;
|
char *gspath;
|
||||||
|
const char *h;
|
||||||
int pathlen;
|
int pathlen;
|
||||||
|
|
||||||
if (path)
|
if (path)
|
||||||
/* Value have been already computed, re-use it */
|
/* Value have been already computed, re-use it */
|
||||||
return path;
|
return path;
|
||||||
|
|
||||||
#ifdef HAVE_SECURE_GETENV
|
gspath = GETENV("WMAKER_USER_ROOT");
|
||||||
gspath = secure_getenv("WMAKER_USER_ROOT");
|
|
||||||
#else
|
|
||||||
gspath = getenv("WMAKER_USER_ROOT");
|
|
||||||
#endif
|
|
||||||
if (gspath) {
|
if (gspath) {
|
||||||
gspath = wexpandpath(gspath);
|
gspath = wexpandpath(gspath);
|
||||||
if (gspath) {
|
if (gspath) {
|
||||||
@@ -84,6 +80,19 @@ const char *wusergnusteppath()
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *wuserdatapath(void)
|
||||||
|
{
|
||||||
|
static char *path = NULL;
|
||||||
|
|
||||||
|
if (path)
|
||||||
|
/* Value have been already computed, re-use it */
|
||||||
|
return path;
|
||||||
|
|
||||||
|
path = wstrconcat(wusergnusteppath(), "/" USERDATA_SUBDIR);
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
char *wdefaultspathfordomain(const char *domain)
|
char *wdefaultspathfordomain(const char *domain)
|
||||||
{
|
{
|
||||||
char *path;
|
char *path;
|
||||||
@@ -91,12 +100,11 @@ char *wdefaultspathfordomain(const char *domain)
|
|||||||
size_t slen;
|
size_t slen;
|
||||||
|
|
||||||
gspath = wusergnusteppath();
|
gspath = wusergnusteppath();
|
||||||
slen = strlen(gspath) + strlen(DEFAULTS_DIR) + strlen(domain) + 4;
|
slen = strlen(gspath) + strlen("/" DEFAULTS_SUBDIR "/") + strlen(domain) + 1;
|
||||||
path = wmalloc(slen);
|
path = wmalloc(slen);
|
||||||
|
|
||||||
strcpy(path, gspath);
|
strcpy(path, gspath);
|
||||||
strcat(path, DEFAULTS_DIR);
|
strcat(path, "/" DEFAULTS_SUBDIR "/");
|
||||||
strcat(path, "/");
|
|
||||||
strcat(path, domain);
|
strcat(path, domain);
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
@@ -105,14 +113,7 @@ char *wdefaultspathfordomain(const char *domain)
|
|||||||
/* XXX: doesn't quite belong to *user*defaults.c */
|
/* XXX: doesn't quite belong to *user*defaults.c */
|
||||||
char *wglobaldefaultspathfordomain(const char *domain)
|
char *wglobaldefaultspathfordomain(const char *domain)
|
||||||
{
|
{
|
||||||
char *t = NULL;
|
return wstrconcat(PKGCONFDIR "/", domain);
|
||||||
size_t len;
|
|
||||||
|
|
||||||
len = strlen(DEFSDATADIR) + strlen(domain) + 2;
|
|
||||||
t = wmalloc(len);
|
|
||||||
snprintf(t, len, "%s/%s", DEFSDATADIR, domain);
|
|
||||||
|
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void w_save_defaults_changes(void)
|
void w_save_defaults_changes(void)
|
||||||
|
|||||||
+31
-21
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
struct W_Application WMApplication;
|
struct W_Application WMApplication;
|
||||||
|
|
||||||
char *_WINGS_progname = NULL;
|
const char *_WINGS_progname = NULL;
|
||||||
|
|
||||||
Bool W_ApplicationInitialized(void)
|
Bool W_ApplicationInitialized(void)
|
||||||
{
|
{
|
||||||
@@ -83,7 +83,7 @@ void WMSetResourcePath(const char *path)
|
|||||||
WMApplication.resourcePath = wstrdup(path);
|
WMApplication.resourcePath = wstrdup(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *WMGetApplicationName()
|
char *WMGetApplicationName(void)
|
||||||
{
|
{
|
||||||
return WMApplication.applicationName;
|
return WMApplication.applicationName;
|
||||||
}
|
}
|
||||||
@@ -131,7 +131,9 @@ error:
|
|||||||
|
|
||||||
char *WMPathForResourceOfType(const char *resource, const char *ext)
|
char *WMPathForResourceOfType(const char *resource, const char *ext)
|
||||||
{
|
{
|
||||||
|
const char *gslocapps, *gssysapps, *gsuserapps;
|
||||||
char *path, *appdir;
|
char *path, *appdir;
|
||||||
|
char buffer[PATH_MAX];
|
||||||
size_t slen;
|
size_t slen;
|
||||||
|
|
||||||
path = appdir = NULL;
|
path = appdir = NULL;
|
||||||
@@ -141,11 +143,11 @@ char *WMPathForResourceOfType(const char *resource, const char *ext)
|
|||||||
* - resourcePath/ext
|
* - resourcePath/ext
|
||||||
* - dirname(argv[0])/ext
|
* - dirname(argv[0])/ext
|
||||||
* - WMAKER_USER_ROOT/Applications/ApplicationName.app/ext
|
* - WMAKER_USER_ROOT/Applications/ApplicationName.app/ext
|
||||||
* - ~/GNUstep/Applications/ApplicationName.app/ext
|
* - GNUSTEP_USER_APPS/ApplicationName.app/ext
|
||||||
* - GNUSTEP_LOCAL_ROOT/Applications/ApplicationName.app/ext
|
* - GNUSTEP_LOCAL_APPS/ApplicationName.app/ext
|
||||||
* - /usr/local/GNUstep/Applications/ApplicationName.app/ext
|
* - /usr/local/lib/GNUstep/Applications/ApplicationName.app/ext
|
||||||
* - GNUSTEP_SYSTEM_ROOT/Applications/ApplicationName.app/ext
|
* - GNUSTEP_SYSTEM_APPS/ApplicationName.app/ext
|
||||||
* - /usr/GNUstep/Applications/ApplicationName.app/ext
|
* - /usr/lib/GNUstep/Applications/ApplicationName.app/ext
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (WMApplication.resourcePath) {
|
if (WMApplication.resourcePath) {
|
||||||
@@ -170,32 +172,40 @@ char *WMPathForResourceOfType(const char *resource, const char *ext)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
slen = strlen(WMApplication.applicationName) + sizeof("Applications/.app");
|
snprintf(buffer, sizeof(buffer), "Applications/%s.app", WMApplication.applicationName);
|
||||||
|
path = checkFile(GETENV("WMAKER_USER_ROOT"), buffer, ext, resource);
|
||||||
|
if (path)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
slen = strlen(WMApplication.applicationName) + sizeof("/.app");
|
||||||
appdir = wmalloc(slen);
|
appdir = wmalloc(slen);
|
||||||
if (snprintf(appdir, slen, "Applications/%s.app", WMApplication.applicationName) >= slen)
|
if (snprintf(appdir, slen, "/%s.app", WMApplication.applicationName) >= slen)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
path = checkFile(getenv("WMAKER_USER_ROOT"), appdir, ext, resource);
|
gsuserapps = GETENV("GNUSTEP_USER_APPS");
|
||||||
|
if (!gsuserapps) {
|
||||||
|
snprintf(buffer, sizeof(buffer), "%s/Applications", wusergnusteppath());
|
||||||
|
gsuserapps = buffer;
|
||||||
|
}
|
||||||
|
path = checkFile(gsuserapps, appdir, ext, resource);
|
||||||
if (path)
|
if (path)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
path = checkFile(wusergnusteppath(), appdir, ext, resource);
|
gslocapps = GETENV("GNUSTEP_LOCAL_APPS");
|
||||||
|
if (!gslocapps)
|
||||||
|
gslocapps = "/usr/local/lib/GNUstep/Applications";
|
||||||
|
path = checkFile(gslocapps, appdir, ext, resource);
|
||||||
if (path)
|
if (path)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
path = checkFile(getenv("GNUSTEP_LOCAL_ROOT"), appdir, ext, resource);
|
gssysapps = GETENV("GNUSTEP_SYSTEM_APPS");
|
||||||
|
if (!gssysapps)
|
||||||
|
gssysapps = "/usr/lib/GNUstep/Applications";
|
||||||
|
path = checkFile(gssysapps, appdir, ext, resource);
|
||||||
if (path)
|
if (path)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
path = checkFile("/usr/local/GNUstep", appdir, ext, resource);
|
path = checkFile("/usr/GNUstep/System/Applications", appdir, ext, resource); /* falls through */
|
||||||
if (path)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
path = checkFile(getenv("GNUSTEP_SYSTEM_ROOT"), appdir, ext, resource);
|
|
||||||
if (path)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
path = checkFile("/usr/GNUstep", appdir, ext, resource); /* falls through */
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (appdir)
|
if (appdir)
|
||||||
|
|||||||
+3
-2
@@ -619,11 +619,12 @@ void WMSetBrowserHasScroller(WMBrowser * bPtr, int hasScroller)
|
|||||||
bPtr->flags.hasScroller = hasScroller;
|
bPtr->flags.hasScroller = hasScroller;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *WMSetBrowserPath(WMBrowser * bPtr, char *path)
|
const char *WMSetBrowserPath(WMBrowser * bPtr, const char *path)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *str;
|
char *str;
|
||||||
char *tmp, *retPtr = NULL;
|
char *tmp;
|
||||||
|
const char *retPtr = NULL;
|
||||||
int item;
|
int item;
|
||||||
WMListItem *listItem;
|
WMListItem *listItem;
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -51,7 +51,7 @@ static WMColor *findCloseColor(WMScreen * scr, unsigned short red, unsigned shor
|
|||||||
color->refCount = 1;
|
color->refCount = 1;
|
||||||
color->color = xcolor;
|
color->color = xcolor;
|
||||||
color->alpha = alpha;
|
color->alpha = alpha;
|
||||||
color->flags.exact = 1;
|
color->flags.exact = 0;
|
||||||
color->gc = NULL;
|
color->gc = NULL;
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
@@ -91,7 +91,7 @@ WMColor *WMCreateRGBColor(WMScreen * scr, unsigned short red, unsigned short gre
|
|||||||
color = findCloseColor(scr, red, green, blue, 0xffff);
|
color = findCloseColor(scr, red, green, blue, 0xffff);
|
||||||
}
|
}
|
||||||
if (!color)
|
if (!color)
|
||||||
color = WMBlackColor(scr);
|
color = scr->black;
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
@@ -117,7 +117,7 @@ WMColor *WMCreateRGBAColor(WMScreen * scr, unsigned short red, unsigned short gr
|
|||||||
color = findCloseColor(scr, red, green, blue, alpha);
|
color = findCloseColor(scr, red, green, blue, alpha);
|
||||||
}
|
}
|
||||||
if (!color)
|
if (!color)
|
||||||
color = WMBlackColor(scr);
|
color = scr->black;
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|||||||
+27
-26
@@ -44,7 +44,7 @@
|
|||||||
# include <X11/extensions/shape.h>
|
# include <X11/extensions/shape.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *WMColorPanelColorChangedNotification = "WMColorPanelColorChangedNotification";
|
const char *WMColorPanelColorChangedNotification = "WMColorPanelColorChangedNotification";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bitmaps for magnifying glass cursor
|
* Bitmaps for magnifying glass cursor
|
||||||
@@ -394,7 +394,7 @@ static WMColorPanel *makeColorPanel(WMScreen * scrPtr, const char *name)
|
|||||||
panel->mode = WMWheelModeColorPanel;
|
panel->mode = WMWheelModeColorPanel;
|
||||||
panel->lastChanged = 0;
|
panel->lastChanged = 0;
|
||||||
panel->slidersmode = WMRGBModeColorPanel;
|
panel->slidersmode = WMRGBModeColorPanel;
|
||||||
panel->configurationPath = wstrconcat(wusergnusteppath(), "/Library/Colors/");
|
panel->configurationPath = wstrconcat(wuserdatapath(), "/Colors/");
|
||||||
|
|
||||||
/* Some General Purpose Widgets */
|
/* Some General Purpose Widgets */
|
||||||
panel->colorWell = WMCreateColorWell(panel->win);
|
panel->colorWell = WMCreateColorWell(panel->win);
|
||||||
@@ -1159,21 +1159,18 @@ static void readConfiguration(W_ColorPanel * panel)
|
|||||||
|
|
||||||
DIR *dPtr;
|
DIR *dPtr;
|
||||||
struct dirent *dp;
|
struct dirent *dp;
|
||||||
struct stat stat_buf;
|
|
||||||
int item;
|
int item;
|
||||||
|
|
||||||
if (stat(panel->configurationPath, &stat_buf) != 0) {
|
if (!wmkdirhier(panel->configurationPath)) {
|
||||||
if (mkdir(panel->configurationPath, S_IRWXU | S_IRGRP | S_IROTH | S_IXGRP | S_IXOTH) != 0) {
|
werror(_("Color Panel: Could not create directory %s needed"
|
||||||
werror(_("Color Panel: Could not create directory %s needed"
|
" to store configurations"), panel->configurationPath);
|
||||||
" to store configurations"), panel->configurationPath);
|
WMSetPopUpButtonEnabled(panel->customPaletteMenuBtn, False);
|
||||||
WMSetPopUpButtonEnabled(panel->customPaletteMenuBtn, False);
|
WMSetPopUpButtonEnabled(panel->colorListColorMenuBtn, False);
|
||||||
WMSetPopUpButtonEnabled(panel->colorListColorMenuBtn, False);
|
WMSetPopUpButtonEnabled(panel->colorListListMenuBtn, False);
|
||||||
WMSetPopUpButtonEnabled(panel->colorListListMenuBtn, False);
|
WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win,
|
||||||
WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win,
|
_("File Error"),
|
||||||
_("File Error"),
|
_("Could not create ColorPanel configuration directory"),
|
||||||
_("Could not create ColorPanel configuration directory"),
|
_("OK"), NULL, NULL);
|
||||||
_("OK"), NULL, NULL);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2262,7 +2259,7 @@ static void wheelPositionSelectionOutBounds(W_ColorPanel * panel, int x, int y)
|
|||||||
|
|
||||||
static void wheelUpdateBrightnessGradientFromLocation(W_ColorPanel * panel)
|
static void wheelUpdateBrightnessGradientFromLocation(W_ColorPanel * panel)
|
||||||
{
|
{
|
||||||
CPColor from;
|
CPColor from = {};
|
||||||
unsigned long ofs;
|
unsigned long ofs;
|
||||||
|
|
||||||
ofs = panel->coly * panel->wheelMtrx->width + panel->colx;
|
ofs = panel->coly * panel->wheelMtrx->width + panel->colx;
|
||||||
@@ -2607,7 +2604,7 @@ static void cmykTextFieldCallback(void *observerData, WMNotification * notificat
|
|||||||
|
|
||||||
static void hsbSliderCallback(WMWidget * w, void *data)
|
static void hsbSliderCallback(WMWidget * w, void *data)
|
||||||
{
|
{
|
||||||
CPColor cpColor;
|
CPColor cpColor = {};
|
||||||
int value[3];
|
int value[3];
|
||||||
char tmp[4];
|
char tmp[4];
|
||||||
W_ColorPanel *panel = (W_ColorPanel *) data;
|
W_ColorPanel *panel = (W_ColorPanel *) data;
|
||||||
@@ -2643,9 +2640,9 @@ static void hsbSliderCallback(WMWidget * w, void *data)
|
|||||||
|
|
||||||
static void hsbTextFieldCallback(void *observerData, WMNotification * notification)
|
static void hsbTextFieldCallback(void *observerData, WMNotification * notification)
|
||||||
{
|
{
|
||||||
CPColor cpColor;
|
CPColor cpColor = {};
|
||||||
int value[3];
|
int value[3];
|
||||||
char tmp[4];
|
char tmp[12]; /* We only 4 bytes needed, but compilers cannot know that */
|
||||||
int n;
|
int n;
|
||||||
W_ColorPanel *panel = (W_ColorPanel *) observerData;
|
W_ColorPanel *panel = (W_ColorPanel *) observerData;
|
||||||
|
|
||||||
@@ -3504,13 +3501,17 @@ static void convertCPColor(CPColor * color)
|
|||||||
old_hue = color->hsv.hue;
|
old_hue = color->hsv.hue;
|
||||||
RRGBtoHSV(&(color->rgb), &(color->hsv));
|
RRGBtoHSV(&(color->rgb), &(color->hsv));
|
||||||
|
|
||||||
/* In black the hue is undefined, and may change by conversion
|
/*
|
||||||
* Same for white. */
|
* For pure grey colors, the Hue is generally calculated
|
||||||
if (((color->rgb.red == 0) &&
|
* as 0, but in reality the Hue does not matter.
|
||||||
(color->rgb.green == 0) &&
|
*
|
||||||
(color->rgb.blue == 0)) ||
|
* But in an interactive GUI it is interresting to remember
|
||||||
((color->rgb.red == 0) && (color->rgb.green == 0) && (color->rgb.blue == 255))
|
* the previous Hue because if user moves away from perfect
|
||||||
)
|
* grey then he could be interrested in finding back his
|
||||||
|
* previous tint
|
||||||
|
*/
|
||||||
|
if ((color->rgb.red == color->rgb.green) &&
|
||||||
|
(color->rgb.red == color->rgb.blue) )
|
||||||
color->hsv.hue = old_hue;
|
color->hsv.hue = old_hue;
|
||||||
break;
|
break;
|
||||||
case cpHSV:
|
case cpHSV:
|
||||||
|
|||||||
+4
-4
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#define XDND_COLOR_DATA_TYPE "application/X-color"
|
#define XDND_COLOR_DATA_TYPE "application/X-color"
|
||||||
|
|
||||||
char *WMColorWellDidChangeNotification = "WMColorWellDidChangeNotification";
|
const char *WMColorWellDidChangeNotification = "WMColorWellDidChangeNotification";
|
||||||
|
|
||||||
typedef struct W_ColorWell {
|
typedef struct W_ColorWell {
|
||||||
W_Class widgetClass;
|
W_Class widgetClass;
|
||||||
@@ -173,10 +173,10 @@ WMColorWell *WMCreateColorWell(WMWidget * parent)
|
|||||||
|
|
||||||
void WMSetColorWellColor(WMColorWell * cPtr, WMColor * color)
|
void WMSetColorWellColor(WMColorWell * cPtr, WMColor * color)
|
||||||
{
|
{
|
||||||
if (cPtr->color)
|
if (cPtr->color && cPtr->color != color) {
|
||||||
WMReleaseColor(cPtr->color);
|
WMReleaseColor(cPtr->color);
|
||||||
|
cPtr->color = WMRetainColor(color);
|
||||||
cPtr->color = WMRetainColor(color);
|
}
|
||||||
|
|
||||||
if (cPtr->colorView->flags.realized && cPtr->colorView->flags.mapped)
|
if (cPtr->colorView->flags.realized && cPtr->colorView->flags.mapped)
|
||||||
paintColorWell(cPtr);
|
paintColorWell(cPtr);
|
||||||
|
|||||||
@@ -29,6 +29,12 @@
|
|||||||
# define _(text) (text)
|
# define _(text) (text)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_SECURE_GETENV
|
||||||
|
#define GETENV(x) secure_getenv((x))
|
||||||
|
#else
|
||||||
|
#define GETENV(x) getenv((x))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* WINGS_CONFIG_H_ */
|
#endif /* WINGS_CONFIG_H_ */
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -343,7 +343,7 @@ void WMFreeFilePanel(WMFilePanel * panel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
WMRunModalFilePanelForDirectory(WMFilePanel * panel, WMWindow * owner, char *path, const char *name, char **fileTypes)
|
WMRunModalFilePanelForDirectory(WMFilePanel * panel, WMWindow * owner, const char *path, const char *name, char **fileTypes)
|
||||||
{
|
{
|
||||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||||
|
|
||||||
@@ -387,12 +387,12 @@ WMRunModalFilePanelForDirectory(WMFilePanel * panel, WMWindow * owner, char *pat
|
|||||||
return (panel->flags.canceled ? False : True);
|
return (panel->flags.canceled ? False : True);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WMSetFilePanelDirectory(WMFilePanel * panel, char *path)
|
void WMSetFilePanelDirectory(WMFilePanel * panel, const char *path)
|
||||||
{
|
{
|
||||||
WMList *list;
|
WMList *list;
|
||||||
WMListItem *item;
|
WMListItem *item;
|
||||||
int col;
|
int col;
|
||||||
char *rest;
|
const char *rest;
|
||||||
|
|
||||||
rest = WMSetBrowserPath(panel->browser, path);
|
rest = WMSetBrowserPath(panel->browser, path);
|
||||||
if (strcmp(path, "/") == 0)
|
if (strcmp(path, "/") == 0)
|
||||||
@@ -761,7 +761,7 @@ static void goFloppy(WMWidget *widget, void *p_panel)
|
|||||||
static void goHome(WMWidget *widget, void *p_panel)
|
static void goHome(WMWidget *widget, void *p_panel)
|
||||||
{
|
{
|
||||||
WMFilePanel *panel = p_panel;
|
WMFilePanel *panel = p_panel;
|
||||||
char *home;
|
const char *home;
|
||||||
|
|
||||||
/* Parameter not used, but tell the compiler that it is ok */
|
/* Parameter not used, but tell the compiler that it is ok */
|
||||||
(void) widget;
|
(void) widget;
|
||||||
|
|||||||
@@ -253,6 +253,9 @@ WMFrame *WMCreateFrame(WMWidget * parent)
|
|||||||
|
|
||||||
static void destroyFrame(Frame * fPtr)
|
static void destroyFrame(Frame * fPtr)
|
||||||
{
|
{
|
||||||
|
if (fPtr->textColor)
|
||||||
|
WMReleaseColor(fPtr->textColor);
|
||||||
|
|
||||||
if (fPtr->caption)
|
if (fPtr->caption)
|
||||||
wfree(fPtr->caption);
|
wfree(fPtr->caption);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -945,7 +945,7 @@ void WMSetFocusToWidget(WMWidget * widget)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* WMRealizeWidget-
|
* WMRealizeWidget-
|
||||||
* Realizes the widget and all it's children.
|
* Realizes the widget and all its children.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void WMRealizeWidget(WMWidget * w)
|
void WMRealizeWidget(WMWidget * w)
|
||||||
|
|||||||
@@ -213,3 +213,32 @@ int W_LookupString(W_View *view, XKeyPressedEvent *event, char *buffer, int bufl
|
|||||||
#endif
|
#endif
|
||||||
return XLookupString(event, buffer, buflen, keysym, (XComposeStatus *) status);
|
return XLookupString(event, buffer, buflen, keysym, (XComposeStatus *) status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Map a keycode to the corresponding keysym
|
||||||
|
* To replace the deprecated X11 function XKeycodeToKeysym
|
||||||
|
*/
|
||||||
|
KeySym W_KeycodeToKeysym(Display *display, KeyCode keycode, int index)
|
||||||
|
{
|
||||||
|
static int min_kc = -1;
|
||||||
|
static int max_kc;
|
||||||
|
int num_syms;
|
||||||
|
KeySym *key_syms;
|
||||||
|
KeySym ks;
|
||||||
|
|
||||||
|
XDisplayKeycodes(display, &min_kc, &max_kc);
|
||||||
|
if (keycode < min_kc || keycode > max_kc || index < 0) {
|
||||||
|
return NoSymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
key_syms = XGetKeyboardMapping(display, keycode, 1, &num_syms);
|
||||||
|
if (index >= num_syms) {
|
||||||
|
XFree(key_syms);
|
||||||
|
return NoSymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
ks = key_syms[index];
|
||||||
|
XFree(key_syms);
|
||||||
|
|
||||||
|
return ks;
|
||||||
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
#include "WINGsP.h"
|
#include "WINGsP.h"
|
||||||
|
|
||||||
char *WMListDidScrollNotification = "WMListDidScrollNotification";
|
const char *WMListDidScrollNotification = "WMListDidScrollNotification";
|
||||||
char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification";
|
const char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification";
|
||||||
|
|
||||||
typedef struct W_List {
|
typedef struct W_List {
|
||||||
W_Class widgetClass;
|
W_Class widgetClass;
|
||||||
|
|||||||
+3
-3
@@ -25,7 +25,7 @@ static void handleKeyPress(XEvent * event, void *clientData)
|
|||||||
|
|
||||||
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
|
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
|
||||||
|
|
||||||
if (ksym == XK_Return && panel->defBtn) {
|
if ((ksym == XK_Return || ksym == XK_KP_Enter) && panel->defBtn) {
|
||||||
WMPerformButtonClick(panel->defBtn);
|
WMPerformButtonClick(panel->defBtn);
|
||||||
} else if (ksym == XK_Escape) {
|
} else if (ksym == XK_Escape) {
|
||||||
if (panel->altBtn || panel->othBtn) {
|
if (panel->altBtn || panel->othBtn) {
|
||||||
@@ -421,7 +421,7 @@ static void handleKeyPress2(XEvent * event, void *clientData)
|
|||||||
|
|
||||||
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
|
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
|
||||||
|
|
||||||
if (ksym == XK_Return && panel->defBtn) {
|
if ((ksym == XK_Return || ksym == XK_KP_Enter) && panel->defBtn) {
|
||||||
WMPerformButtonClick(panel->defBtn);
|
WMPerformButtonClick(panel->defBtn);
|
||||||
} else if (ksym == XK_Escape) {
|
} else if (ksym == XK_Escape) {
|
||||||
if (panel->altBtn) {
|
if (panel->altBtn) {
|
||||||
@@ -709,7 +709,7 @@ static void handleKeyPress3(XEvent * event, void *clientData)
|
|||||||
|
|
||||||
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
|
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
|
||||||
|
|
||||||
if (ksym == XK_Return && panel->defBtn) {
|
if ((ksym == XK_Return || ksym == XK_KP_Enter) && panel->defBtn) {
|
||||||
WMPerformButtonClick(panel->defBtn);
|
WMPerformButtonClick(panel->defBtn);
|
||||||
} else if (ksym == XK_Escape) {
|
} else if (ksym == XK_Escape) {
|
||||||
if (panel->altBtn) {
|
if (panel->altBtn) {
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#define AUTOSCROLL_DELAY 40
|
#define AUTOSCROLL_DELAY 40
|
||||||
|
|
||||||
char *WMScrollerDidScrollNotification = "WMScrollerDidScrollNotification";
|
const char *WMScrollerDidScrollNotification = "WMScrollerDidScrollNotification";
|
||||||
|
|
||||||
typedef struct W_Scroller {
|
typedef struct W_Scroller {
|
||||||
W_Class widgetClass;
|
W_Class widgetClass;
|
||||||
|
|||||||
+25
-11
@@ -166,12 +166,15 @@ typedef struct W_Text {
|
|||||||
WMArray *xdndDestinationTypes;
|
WMArray *xdndDestinationTypes;
|
||||||
} Text;
|
} Text;
|
||||||
|
|
||||||
|
/* not used */
|
||||||
|
#if 0
|
||||||
#define NOTIFY(T,C,N,A) {\
|
#define NOTIFY(T,C,N,A) {\
|
||||||
WMNotification *notif = WMCreateNotification(N,T,A);\
|
WMNotification *notif = WMCreateNotification(N,T,A);\
|
||||||
if ((T)->delegate && (T)->delegate->C)\
|
if ((T)->delegate && (T)->delegate->C)\
|
||||||
(*(T)->delegate->C)((T)->delegate,notif);\
|
(*(T)->delegate->C)((T)->delegate,notif);\
|
||||||
WMPostNotification(notif);\
|
WMPostNotification(notif);\
|
||||||
WMReleaseNotification(notif);}
|
WMReleaseNotification(notif);}
|
||||||
|
#endif
|
||||||
|
|
||||||
#define TYPETEXT 0
|
#define TYPETEXT 0
|
||||||
|
|
||||||
@@ -215,6 +218,11 @@ static char *default_bullet[] = {
|
|||||||
" ooo "
|
" ooo "
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* These id are used when sharing the selected text between applications */
|
||||||
|
static Atom XA_Targets = None;
|
||||||
|
static Atom XA_Format_Text = None;
|
||||||
|
static Atom XA_Format_Compound_Text = None;
|
||||||
|
|
||||||
static void handleEvents(XEvent * event, void *data);
|
static void handleEvents(XEvent * event, void *data);
|
||||||
static void layOutDocument(Text * tPtr);
|
static void layOutDocument(Text * tPtr);
|
||||||
static void updateScrollers(Text * tPtr);
|
static void updateScrollers(Text * tPtr);
|
||||||
@@ -617,7 +625,7 @@ static void paintText(Text * tPtr)
|
|||||||
TextBlock *tb;
|
TextBlock *tb;
|
||||||
WMFont *font;
|
WMFont *font;
|
||||||
const char *text;
|
const char *text;
|
||||||
int len, y, c, s, done = False, dir /* 1 = down */ ;
|
int len, y, c, s, done = False, dir; /* dir 1 = down */
|
||||||
WMScreen *scr = tPtr->view->screen;
|
WMScreen *scr = tPtr->view->screen;
|
||||||
Display *dpy = tPtr->view->screen->display;
|
Display *dpy = tPtr->view->screen->display;
|
||||||
Window win = tPtr->view->window;
|
Window win = tPtr->view->window;
|
||||||
@@ -2036,17 +2044,13 @@ static void releaseSelection(Text * tPtr)
|
|||||||
static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *cdata, Atom * type)
|
static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *cdata, Atom * type)
|
||||||
{
|
{
|
||||||
Text *tPtr = view->self;
|
Text *tPtr = view->self;
|
||||||
Display *dpy = tPtr->view->screen->display;
|
|
||||||
Atom _TARGETS;
|
|
||||||
Atom TEXT = XInternAtom(dpy, "TEXT", False);
|
|
||||||
Atom COMPOUND_TEXT = XInternAtom(dpy, "COMPOUND_TEXT", False);
|
|
||||||
WMData *data = NULL;
|
WMData *data = NULL;
|
||||||
|
|
||||||
/* Parameter not used, but tell the compiler that it is ok */
|
/* Parameter not used, but tell the compiler that it is ok */
|
||||||
(void) selection;
|
(void) selection;
|
||||||
(void) cdata;
|
(void) cdata;
|
||||||
|
|
||||||
if (target == XA_STRING || target == TEXT || target == COMPOUND_TEXT) {
|
if (target == XA_STRING || target == XA_Format_Text || target == XA_Format_Compound_Text) {
|
||||||
char *text = WMGetTextSelectedStream(tPtr);
|
char *text = WMGetTextSelectedStream(tPtr);
|
||||||
|
|
||||||
if (text) {
|
if (text) {
|
||||||
@@ -2059,14 +2063,13 @@ static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *
|
|||||||
} else
|
} else
|
||||||
printf("didn't get it\n");
|
printf("didn't get it\n");
|
||||||
|
|
||||||
_TARGETS = XInternAtom(dpy, "TARGETS", False);
|
if (target == XA_Targets) {
|
||||||
if (target == _TARGETS) {
|
|
||||||
Atom array[4];
|
Atom array[4];
|
||||||
|
|
||||||
array[0] = _TARGETS;
|
array[0] = XA_Targets;
|
||||||
array[1] = XA_STRING;
|
array[1] = XA_STRING;
|
||||||
array[2] = TEXT;
|
array[2] = XA_Format_Text;
|
||||||
array[3] = COMPOUND_TEXT;
|
array[3] = XA_Format_Compound_Text;
|
||||||
|
|
||||||
data = WMCreateDataWithBytes(&array, sizeof(array));
|
data = WMCreateDataWithBytes(&array, sizeof(array));
|
||||||
WMSetDataFormat(data, 32);
|
WMSetDataFormat(data, 32);
|
||||||
@@ -2974,6 +2977,17 @@ WMText *WMCreateTextForDocumentType(WMWidget * parent, WMAction * parser, WMActi
|
|||||||
dpy = tPtr->view->screen->display;
|
dpy = tPtr->view->screen->display;
|
||||||
scr = tPtr->view->screen;
|
scr = tPtr->view->screen;
|
||||||
|
|
||||||
|
if (XA_Targets == None) {
|
||||||
|
/*
|
||||||
|
* Because the X protocol guaranties that the value will never change in
|
||||||
|
* the lifespan of the server, we query the values only the first time a
|
||||||
|
* widget is created
|
||||||
|
*/
|
||||||
|
XA_Targets = XInternAtom(dpy, "TARGETS", False);
|
||||||
|
XA_Format_Text = XInternAtom(dpy, "TEXT", False);
|
||||||
|
XA_Format_Compound_Text = XInternAtom(dpy, "COMPOUND_TEXT", False);
|
||||||
|
}
|
||||||
|
|
||||||
tPtr->view->self = tPtr;
|
tPtr->view->self = tPtr;
|
||||||
tPtr->view->attribs.cursor = scr->textCursor;
|
tPtr->view->attribs.cursor = scr->textCursor;
|
||||||
tPtr->view->attribFlags |= CWOverrideRedirect | CWCursor;
|
tPtr->view->attribFlags |= CWOverrideRedirect | CWCursor;
|
||||||
|
|||||||
+5
-5
@@ -10,9 +10,9 @@
|
|||||||
#define CURSOR_BLINK_ON_DELAY 600
|
#define CURSOR_BLINK_ON_DELAY 600
|
||||||
#define CURSOR_BLINK_OFF_DELAY 300
|
#define CURSOR_BLINK_OFF_DELAY 300
|
||||||
|
|
||||||
char *WMTextDidChangeNotification = "WMTextDidChangeNotification";
|
const char *WMTextDidChangeNotification = "WMTextDidChangeNotification";
|
||||||
char *WMTextDidBeginEditingNotification = "WMTextDidBeginEditingNotification";
|
const char *WMTextDidBeginEditingNotification = "WMTextDidBeginEditingNotification";
|
||||||
char *WMTextDidEndEditingNotification = "WMTextDidEndEditingNotification";
|
const char *WMTextDidEndEditingNotification = "WMTextDidEndEditingNotification";
|
||||||
|
|
||||||
typedef struct W_TextField {
|
typedef struct W_TextField {
|
||||||
W_Class widgetClass;
|
W_Class widgetClass;
|
||||||
@@ -661,7 +661,7 @@ static void didResizeTextField(W_ViewDelegate * self, WMView * view)
|
|||||||
|
|
||||||
tPtr->offsetWidth = WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font)) / 2, 1);
|
tPtr->offsetWidth = WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font)) / 2, 1);
|
||||||
|
|
||||||
tPtr->usableWidth = tPtr->view->size.width - 2 * tPtr->offsetWidth /*+ 2 */ ;
|
tPtr->usableWidth = tPtr->view->size.width - 2 * tPtr->offsetWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *makeHiddenString(int length)
|
static char *makeHiddenString(int length)
|
||||||
@@ -942,7 +942,7 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
{
|
{
|
||||||
char buffer[64];
|
char buffer[64];
|
||||||
KeySym ksym;
|
KeySym ksym;
|
||||||
char *textEvent = NULL;
|
const char *textEvent = NULL;
|
||||||
void *data = NULL;
|
void *data = NULL;
|
||||||
int count, refresh = 0;
|
int count, refresh = 0;
|
||||||
int control_pressed = 0;
|
int control_pressed = 0;
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include "WINGsP.h"
|
#include "WINGsP.h"
|
||||||
|
|
||||||
void WHandleEvents()
|
void WHandleEvents(void)
|
||||||
{
|
{
|
||||||
/* Check any expired timers */
|
/* Check any expired timers */
|
||||||
W_CheckTimerHandlers();
|
W_CheckTimerHandlers();
|
||||||
|
|||||||
+3
-3
@@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
/* the notifications about views */
|
/* the notifications about views */
|
||||||
|
|
||||||
char *WMViewSizeDidChangeNotification = "WMViewSizeDidChangeNotification";
|
const char *WMViewSizeDidChangeNotification = "WMViewSizeDidChangeNotification";
|
||||||
char *WMViewFocusDidChangeNotification = "WMViewFocusDidChangeNotification";
|
const char *WMViewFocusDidChangeNotification = "WMViewFocusDidChangeNotification";
|
||||||
char *WMViewRealizedNotification = "WMViewRealizedNotification";
|
const char *WMViewRealizedNotification = "WMViewRealizedNotification";
|
||||||
|
|
||||||
#define EVENT_MASK \
|
#define EVENT_MASK \
|
||||||
KeyPressMask|KeyReleaseMask|ButtonPressMask|ButtonReleaseMask| \
|
KeyPressMask|KeyReleaseMask|ButtonPressMask|ButtonReleaseMask| \
|
||||||
|
|||||||
@@ -395,7 +395,11 @@ static void setWindowMakerHints(WMWindow * win)
|
|||||||
|
|
||||||
memset(&attribs, 0, sizeof(GNUstepWMAttributes));
|
memset(&attribs, 0, sizeof(GNUstepWMAttributes));
|
||||||
attribs.flags = GSWindowStyleAttr | GSWindowLevelAttr | GSExtraFlagsAttr;
|
attribs.flags = GSWindowStyleAttr | GSWindowLevelAttr | GSExtraFlagsAttr;
|
||||||
|
|
||||||
|
if (win->minSize.width == win->maxSize.width && win->minSize.height == win->maxSize.height)
|
||||||
|
win->flags.style &= ~WMResizableWindowMask;
|
||||||
attribs.window_style = win->flags.style;
|
attribs.window_style = win->flags.style;
|
||||||
|
|
||||||
attribs.window_level = win->level;
|
attribs.window_level = win->level;
|
||||||
if (win->flags.documentEdited)
|
if (win->flags.documentEdited)
|
||||||
attribs.extra_flags = GSDocumentEditedFlag;
|
attribs.extra_flags = GSDocumentEditedFlag;
|
||||||
|
|||||||
+30
-12
@@ -446,12 +446,18 @@ static void str2rcolor(RContext * rc, const char *name, RColor * color)
|
|||||||
{
|
{
|
||||||
XColor xcolor;
|
XColor xcolor;
|
||||||
|
|
||||||
XParseColor(rc->dpy, rc->cmap, name, &xcolor);
|
if (XParseColor(rc->dpy, rc->cmap, name, &xcolor) != 0) {
|
||||||
|
color->alpha = 255;
|
||||||
color->alpha = 255;
|
color->red = xcolor.red >> 8;
|
||||||
color->red = xcolor.red >> 8;
|
color->green = xcolor.green >> 8;
|
||||||
color->green = xcolor.green >> 8;
|
color->blue = xcolor.blue >> 8;
|
||||||
color->blue = xcolor.blue >> 8;
|
} else {
|
||||||
|
/* Color Name was not found - Return white instead */
|
||||||
|
color->alpha = 255;
|
||||||
|
color->red = 255;
|
||||||
|
color->green = 255;
|
||||||
|
color->blue = 255;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dumpRImage(const char *path, RImage * image)
|
static void dumpRImage(const char *path, RImage * image)
|
||||||
@@ -1070,6 +1076,8 @@ static void deleteTexture(WMWidget * w, void *data)
|
|||||||
(void) w;
|
(void) w;
|
||||||
|
|
||||||
section = WMGetPopUpButtonSelectedItem(panel->secP);
|
section = WMGetPopUpButtonSelectedItem(panel->secP);
|
||||||
|
if (section < 0)
|
||||||
|
return;
|
||||||
row = WMGetListSelectedItemRow(panel->texLs);
|
row = WMGetListSelectedItemRow(panel->texLs);
|
||||||
item = WMGetListItem(panel->texLs, row);
|
item = WMGetListItem(panel->texLs, row);
|
||||||
titem = (TextureListItem *) item->clientData;
|
titem = (TextureListItem *) item->clientData;
|
||||||
@@ -1128,6 +1136,8 @@ static void changePage(WMWidget * w, void *data)
|
|||||||
|
|
||||||
if (w) {
|
if (w) {
|
||||||
section = WMGetPopUpButtonSelectedItem(panel->secP);
|
section = WMGetPopUpButtonSelectedItem(panel->secP);
|
||||||
|
if (section < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
WMSelectListItem(panel->texLs, panel->textureIndex[section]);
|
WMSelectListItem(panel->texLs, panel->textureIndex[section]);
|
||||||
|
|
||||||
@@ -1227,6 +1237,8 @@ static void textureDoubleClick(WMWidget * w, void *data)
|
|||||||
|
|
||||||
/* unselect old texture */
|
/* unselect old texture */
|
||||||
section = WMGetPopUpButtonSelectedItem(panel->secP);
|
section = WMGetPopUpButtonSelectedItem(panel->secP);
|
||||||
|
if (section < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
item = WMGetListItem(panel->texLs, panel->textureIndex[section]);
|
item = WMGetListItem(panel->texLs, panel->textureIndex[section]);
|
||||||
titem = (TextureListItem *) item->clientData;
|
titem = (TextureListItem *) item->clientData;
|
||||||
@@ -1255,7 +1267,7 @@ static void paintListItem(WMList * lPtr, int index, Drawable d, char *text, int
|
|||||||
{
|
{
|
||||||
_Panel *panel = (_Panel *) WMGetHangedData(lPtr);
|
_Panel *panel = (_Panel *) WMGetHangedData(lPtr);
|
||||||
WMScreen *scr = WMWidgetScreen(lPtr);
|
WMScreen *scr = WMWidgetScreen(lPtr);
|
||||||
int width, height, x, y;
|
int width, height, x, y, tmp;
|
||||||
Display *dpy = WMScreenDisplay(scr);
|
Display *dpy = WMScreenDisplay(scr);
|
||||||
WMColor *back = (state & WLDSSelected) ? WMWhiteColor(scr) : WMGrayColor(scr);
|
WMColor *back = (state & WLDSSelected) ? WMWhiteColor(scr) : WMGrayColor(scr);
|
||||||
WMListItem *item;
|
WMListItem *item;
|
||||||
@@ -1284,7 +1296,8 @@ static void paintListItem(WMList * lPtr, int index, Drawable d, char *text, int
|
|||||||
XCopyArea(dpy, titem->preview, d, WMColorGC(black), 0, 0,
|
XCopyArea(dpy, titem->preview, d, WMColorGC(black), 0, 0,
|
||||||
TEXPREV_WIDTH, TEXPREV_HEIGHT, x + 5, y + 5);
|
TEXPREV_WIDTH, TEXPREV_HEIGHT, x + 5, y + 5);
|
||||||
|
|
||||||
if ((1 << WMGetPopUpButtonSelectedItem(panel->secP)) & titem->selectedFor)
|
tmp = WMGetPopUpButtonSelectedItem(panel->secP);
|
||||||
|
if ((tmp >= 0) && ((1 << tmp) & titem->selectedFor))
|
||||||
WMDrawPixmap(panel->onLed, d, x + TEXPREV_WIDTH + 10, y + 6);
|
WMDrawPixmap(panel->onLed, d, x + TEXPREV_WIDTH + 10, y + 6);
|
||||||
else if (titem->selectedFor)
|
else if (titem->selectedFor)
|
||||||
WMDrawPixmap(panel->offLed, d, x + TEXPREV_WIDTH + 10, y + 6);
|
WMDrawPixmap(panel->offLed, d, x + TEXPREV_WIDTH + 10, y + 6);
|
||||||
@@ -1419,6 +1432,10 @@ static void changeColorPage(WMWidget * w, void *data)
|
|||||||
WMScreen *scr = WMWidgetScreen(panel->box);
|
WMScreen *scr = WMWidgetScreen(panel->box);
|
||||||
RContext *rc = WMScreenRContext(scr);
|
RContext *rc = WMScreenRContext(scr);
|
||||||
|
|
||||||
|
section = WMGetPopUpButtonSelectedItem(panel->colP);
|
||||||
|
if (section < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (panel->preview) {
|
if (panel->preview) {
|
||||||
GC gc;
|
GC gc;
|
||||||
|
|
||||||
@@ -1430,7 +1447,6 @@ static void changeColorPage(WMWidget * w, void *data)
|
|||||||
colorOptions[panel->oldcsection].hand.y);
|
colorOptions[panel->oldcsection].hand.y);
|
||||||
}
|
}
|
||||||
if (w) {
|
if (w) {
|
||||||
section = WMGetPopUpButtonSelectedItem(panel->colP);
|
|
||||||
|
|
||||||
panel->oldcsection = section;
|
panel->oldcsection = section;
|
||||||
if (panel->preview)
|
if (panel->preview)
|
||||||
@@ -1731,6 +1747,8 @@ static void colorWellObserver(void *self, WMNotification * n)
|
|||||||
(void) n;
|
(void) n;
|
||||||
|
|
||||||
p = WMGetPopUpButtonSelectedItem(panel->colP);
|
p = WMGetPopUpButtonSelectedItem(panel->colP);
|
||||||
|
if (p < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
WMReleaseColor(panel->colors[p]);
|
WMReleaseColor(panel->colors[p]);
|
||||||
|
|
||||||
@@ -1822,10 +1840,10 @@ static void createPanel(Panel * p)
|
|||||||
char *tmp;
|
char *tmp;
|
||||||
Bool ok = True;
|
Bool ok = True;
|
||||||
|
|
||||||
panel->fprefix = wstrconcat(wusergnusteppath(), "/Library/WindowMaker");
|
panel->fprefix = wstrconcat(wuserdatapath(), "/" PACKAGE_TARNAME);
|
||||||
|
|
||||||
if (access(panel->fprefix, F_OK) != 0) {
|
if (access(panel->fprefix, F_OK) != 0) {
|
||||||
if (mkdir(panel->fprefix, 0755) < 0) {
|
if (-1 == mkdir(panel->fprefix, 0755) && errno != EEXIST) {
|
||||||
werror("%s", panel->fprefix);
|
werror("%s", panel->fprefix);
|
||||||
ok = False;
|
ok = False;
|
||||||
}
|
}
|
||||||
@@ -1835,7 +1853,7 @@ static void createPanel(Panel * p)
|
|||||||
wfree(panel->fprefix);
|
wfree(panel->fprefix);
|
||||||
panel->fprefix = tmp;
|
panel->fprefix = tmp;
|
||||||
if (access(panel->fprefix, F_OK) != 0) {
|
if (access(panel->fprefix, F_OK) != 0) {
|
||||||
if (mkdir(panel->fprefix, 0755) < 0) {
|
if (-1 == mkdir(panel->fprefix, 0755) && errno != EEXIST) {
|
||||||
werror("%s", panel->fprefix);
|
werror("%s", panel->fprefix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-8
@@ -2,8 +2,9 @@
|
|||||||
*
|
*
|
||||||
* WPrefs - Window Maker Preferences Program
|
* WPrefs - Window Maker Preferences Program
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
* Copyright (c) 1998-2003 Alfredo K. Kojima
|
* Copyright (c) 1998-2003 Alfredo K. Kojima
|
||||||
|
* Copyright (c) 2009-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -25,7 +26,7 @@
|
|||||||
/* This structure containts the list of all the check-buttons to display in the
|
/* This structure containts the list of all the check-buttons to display in the
|
||||||
* expert tab of the window with the corresponding information for effect
|
* expert tab of the window with the corresponding information for effect
|
||||||
*/
|
*/
|
||||||
static const struct {
|
static struct expert_option {
|
||||||
const char *label; /* Text displayed to user */
|
const char *label; /* Text displayed to user */
|
||||||
|
|
||||||
int def_state; /* True/False: the default value, if not defined in current config */
|
int def_state; /* True/False: the default value, if not defined in current config */
|
||||||
@@ -88,7 +89,7 @@ static const struct {
|
|||||||
/* default: */ False, OPTION_WMAKER, "KbdModeLock" },
|
/* default: */ False, OPTION_WMAKER, "KbdModeLock" },
|
||||||
#endif /* XKB_MODELOCK */
|
#endif /* XKB_MODELOCK */
|
||||||
|
|
||||||
{ N_("Maximize (snap) a window to edge or corner by dragging."),
|
{ N_("Snap a window to edge or corner by dragging."),
|
||||||
/* default: */ False, OPTION_WMAKER, "WindowSnapping" },
|
/* default: */ False, OPTION_WMAKER, "WindowSnapping" },
|
||||||
|
|
||||||
{ N_("Distance from edge to begin window snap."),
|
{ N_("Distance from edge to begin window snap."),
|
||||||
@@ -97,7 +98,7 @@ static const struct {
|
|||||||
{ N_("Distance from corner to begin window snap."),
|
{ N_("Distance from corner to begin window snap."),
|
||||||
/* default: */ 10, OPTION_WMAKER_INT, "SnapCornerDetect" },
|
/* default: */ 10, OPTION_WMAKER_INT, "SnapCornerDetect" },
|
||||||
|
|
||||||
{ N_("Snapping a window to the top maximizes it to the full screen."),
|
{ N_("Snap a window to the top to maximize it to the full screen."),
|
||||||
/* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" },
|
/* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" },
|
||||||
|
|
||||||
{ N_("Allow move half-maximized windows between multiple screens."),
|
{ N_("Allow move half-maximized windows between multiple screens."),
|
||||||
@@ -113,7 +114,15 @@ static const struct {
|
|||||||
/* default: */ False, OPTION_WMAKER, "OpenTransientOnOwnerWorkspace" },
|
/* default: */ False, OPTION_WMAKER, "OpenTransientOnOwnerWorkspace" },
|
||||||
|
|
||||||
{ N_("Wrap dock-attached icons around the screen edges."),
|
{ N_("Wrap dock-attached icons around the screen edges."),
|
||||||
/* default: */ True, OPTION_WMAKER, "WrapAppiconsInDock" }
|
/* default: */ True, OPTION_WMAKER, "WrapAppiconsInDock" },
|
||||||
|
|
||||||
|
{ N_("Double click on titlebar maximizes/minimizes a window to/from full screen."),
|
||||||
|
/* default: */ False, OPTION_WMAKER, "DbClickFullScreen" },
|
||||||
|
|
||||||
|
{ N_("Close rootmenu when mouse (left or right) is clicked outside focus."),
|
||||||
|
/* default: */ False, OPTION_WMAKER, "CloseRootMenuByLeftOrRightMouseClick" },
|
||||||
|
{ N_("Keep dock on primary head."),
|
||||||
|
/* default: */ False, OPTION_WMAKER, "KeepDockOnPrimaryHead"},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -140,15 +149,16 @@ typedef struct _Panel {
|
|||||||
static void changeIntTextfield(void *data, int delta)
|
static void changeIntTextfield(void *data, int delta)
|
||||||
{
|
{
|
||||||
WMTextField *textfield;
|
WMTextField *textfield;
|
||||||
char *text;
|
char *text, buffer[12];
|
||||||
int value;
|
int value;
|
||||||
|
|
||||||
textfield = (WMTextField *)data;
|
textfield = (WMTextField *)data;
|
||||||
text = WMGetTextFieldText(textfield);
|
text = WMGetTextFieldText(textfield);
|
||||||
value = atoi(text);
|
value = atoi(text);
|
||||||
|
wfree(text);
|
||||||
value += delta;
|
value += delta;
|
||||||
sprintf(text, "%d", value);
|
sprintf(buffer, "%d", value);
|
||||||
WMSetTextFieldText(textfield, text);
|
WMSetTextFieldText(textfield, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void downButtonCallback(WMWidget *self, void *data)
|
static void downButtonCallback(WMWidget *self, void *data)
|
||||||
@@ -163,6 +173,19 @@ static void upButtonCallback(WMWidget *self, void *data)
|
|||||||
changeIntTextfield(data, 1);
|
changeIntTextfield(data, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cmpExpertOptions(const void *v1, const void *v2)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
const struct expert_option *opt1 = (struct expert_option *)v1;
|
||||||
|
const struct expert_option *opt2 = (struct expert_option *)v2;
|
||||||
|
|
||||||
|
if ((rc = strcmp(opt1->label, opt2->label)) < 0)
|
||||||
|
return -1;
|
||||||
|
else if (rc > 0)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void createPanel(Panel *p)
|
static void createPanel(Panel *p)
|
||||||
{
|
{
|
||||||
_Panel *panel = (_Panel *) p;
|
_Panel *panel = (_Panel *) p;
|
||||||
@@ -186,6 +209,7 @@ static void createPanel(Panel *p)
|
|||||||
WMSetFrameRelief(f, WRFlat);
|
WMSetFrameRelief(f, WRFlat);
|
||||||
|
|
||||||
udb = WMGetStandardUserDefaults();
|
udb = WMGetStandardUserDefaults();
|
||||||
|
qsort(expert_options, wlengthof(expert_options), sizeof(expert_options[0]), cmpExpertOptions);
|
||||||
for (i = 0; i < wlengthof(expert_options); i++) {
|
for (i = 0; i < wlengthof(expert_options); i++) {
|
||||||
if (expert_options[i].class != OPTION_WMAKER_INT) {
|
if (expert_options[i].class != OPTION_WMAKER_INT) {
|
||||||
panel->swi[i] = WMCreateSwitchButton(f);
|
panel->swi[i] = WMCreateSwitchButton(f);
|
||||||
@@ -308,6 +332,7 @@ static void storeDefaults(_Panel *panel)
|
|||||||
|
|
||||||
text = WMGetTextFieldText(panel->textfield[i]);
|
text = WMGetTextFieldText(panel->textfield[i]);
|
||||||
value = atoi(text);
|
value = atoi(text);
|
||||||
|
wfree(text);
|
||||||
|
|
||||||
SetIntegerForKey(value, expert_options[i].op_name);
|
SetIntegerForKey(value, expert_options[i].op_name);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "WPrefs.h"
|
#include "WPrefs.h"
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fontconfig/fontconfig.h>
|
#include <fontconfig/fontconfig.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
/* workaround for older fontconfig, that doesn't define these constants */
|
/* workaround for older fontconfig, that doesn't define these constants */
|
||||||
#ifndef FC_WEIGHT_NORMAL
|
#ifndef FC_WEIGHT_NORMAL
|
||||||
@@ -521,7 +522,7 @@ static void selectedOption(WMWidget * w, void *data)
|
|||||||
WMListItem *item = WMGetListItem(panel->sizeL, i);
|
WMListItem *item = WMGetListItem(panel->sizeL, i);
|
||||||
int distance;
|
int distance;
|
||||||
|
|
||||||
distance = abs(size - atoi(item->text));
|
distance = fabs(size - atoi(item->text));
|
||||||
|
|
||||||
if (i == 0 || distance < closest) {
|
if (i == 0 || distance < closest) {
|
||||||
closest = distance;
|
closest = distance;
|
||||||
|
|||||||
@@ -0,0 +1,465 @@
|
|||||||
|
/* HotCornerShortcuts.c - screen corners actions
|
||||||
|
*
|
||||||
|
* WPrefs - Window Maker Preferences Program
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Window Maker Team
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "WPrefs.h"
|
||||||
|
|
||||||
|
typedef struct _Panel {
|
||||||
|
WMBox *box;
|
||||||
|
|
||||||
|
char *sectionName;
|
||||||
|
|
||||||
|
char *description;
|
||||||
|
|
||||||
|
CallbackRec callbacks;
|
||||||
|
|
||||||
|
WMWidget *parent;
|
||||||
|
WMPixmap *icon;
|
||||||
|
Pixmap quarter[4];
|
||||||
|
|
||||||
|
WMFrame *hcF;
|
||||||
|
WMButton *hcB;
|
||||||
|
WMFrame *hceF;
|
||||||
|
WMSlider *hceS;
|
||||||
|
WMLabel *hceL;
|
||||||
|
WMFrame *hcdescF;
|
||||||
|
WMLabel *hcdescL;
|
||||||
|
|
||||||
|
WMFrame *hcdelayF;
|
||||||
|
WMButton *hcdelayB[5];
|
||||||
|
WMTextField *hcdelayT;
|
||||||
|
WMLabel *hcdelayL;
|
||||||
|
WMLabel *icornerL;
|
||||||
|
|
||||||
|
WMFrame *hcactionsF;
|
||||||
|
WMTextField *hcactionsT[4];
|
||||||
|
|
||||||
|
char hotcornerDelaySelected;
|
||||||
|
} _Panel;
|
||||||
|
|
||||||
|
#define ICON_FILE "hotcorners"
|
||||||
|
|
||||||
|
#define DELAY_ICON "timer%i"
|
||||||
|
#define DELAY_ICON_S "timer%is"
|
||||||
|
|
||||||
|
static void edgeCallback(WMWidget * w, void *data)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) data;
|
||||||
|
char buffer[64];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Parameter not used, but tell the compiler that it is ok */
|
||||||
|
(void) w;
|
||||||
|
|
||||||
|
i = WMGetSliderValue(panel->hceS);
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
sprintf(buffer, _("OFF"));
|
||||||
|
else if (i == 1)
|
||||||
|
sprintf(buffer, _("1 pixel"));
|
||||||
|
else if (i <= 4)
|
||||||
|
/* 2-4 */
|
||||||
|
sprintf(buffer, _("%i pixels"), i);
|
||||||
|
else
|
||||||
|
/* >4 */
|
||||||
|
sprintf(buffer, _("%i pixels "), i); /* note space! */
|
||||||
|
WMSetLabelText(panel->hceL, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void showData(_Panel * panel)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char buffer[32];
|
||||||
|
WMPropList *array;
|
||||||
|
|
||||||
|
if (!GetObjectForKey("HotCornerDelay"))
|
||||||
|
i = 250;
|
||||||
|
else
|
||||||
|
i = GetIntegerForKey("HotCornerDelay");
|
||||||
|
sprintf(buffer, "%i", i);
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, buffer);
|
||||||
|
|
||||||
|
switch (i) {
|
||||||
|
case 0:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[0]);
|
||||||
|
break;
|
||||||
|
case 250:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[1]);
|
||||||
|
break;
|
||||||
|
case 500:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[2]);
|
||||||
|
break;
|
||||||
|
case 750:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[3]);
|
||||||
|
break;
|
||||||
|
case 1000:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[4]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = GetIntegerForKey("HotCornerEdge");
|
||||||
|
i = i < 0 ? 2 : i;
|
||||||
|
i = i > 10 ? 10 : i;
|
||||||
|
WMSetSliderValue(panel->hceS, i);
|
||||||
|
edgeCallback(NULL, panel);
|
||||||
|
|
||||||
|
WMSetButtonSelected(panel->hcB, GetBoolForKey("HotCorners"));
|
||||||
|
|
||||||
|
array = GetObjectForKey("HotCornerActions");
|
||||||
|
if (array && (!WMIsPLArray(array) || WMGetPropListItemCount(array) != sizeof(panel->hcactionsT) / sizeof(WMTextField *))) {
|
||||||
|
wwarning(_("invalid data in option HotCornerActions."));
|
||||||
|
} else {
|
||||||
|
if (array) {
|
||||||
|
for (i = 0; i < sizeof(panel->hcactionsT) / sizeof(WMTextField *); i++)
|
||||||
|
if (strcasecmp(WMGetFromPLString(WMGetFromPLArray(array, i)), "None") != 0)
|
||||||
|
WMSetTextFieldText(panel->hcactionsT[i], WMGetFromPLString(WMGetFromPLArray(array, i)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void storeData(_Panel * panel)
|
||||||
|
{
|
||||||
|
WMPropList *list;
|
||||||
|
WMPropList *tmp;
|
||||||
|
char *str;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
SetBoolForKey(WMGetButtonSelected(panel->hcB), "HotCorners");
|
||||||
|
|
||||||
|
str = WMGetTextFieldText(panel->hcdelayT);
|
||||||
|
if (sscanf(str, "%i", &i) != 1)
|
||||||
|
i = 0;
|
||||||
|
SetIntegerForKey(i, "HotCornerDelay");
|
||||||
|
free(str);
|
||||||
|
|
||||||
|
SetIntegerForKey(WMGetSliderValue(panel->hceS), "HotCornerEdge");
|
||||||
|
|
||||||
|
list = WMCreatePLArray(NULL, NULL);
|
||||||
|
for (i = 0; i < sizeof(panel->hcactionsT) / sizeof(WMTextField *); i++) {
|
||||||
|
str = WMGetTextFieldText(panel->hcactionsT[i]);
|
||||||
|
if (strlen(str) == 0)
|
||||||
|
str = "None";
|
||||||
|
tmp = WMCreatePLString(str);
|
||||||
|
WMAddToPLArray(list, tmp);
|
||||||
|
}
|
||||||
|
SetObjectForKey(list, "HotCornerActions");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pushDelayButton(WMWidget * w, void *data)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) data;
|
||||||
|
|
||||||
|
panel->hotcornerDelaySelected = 1;
|
||||||
|
if (w == panel->hcdelayB[0]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "0");
|
||||||
|
} else if (w == panel->hcdelayB[1]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "250");
|
||||||
|
} else if (w == panel->hcdelayB[2]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "500");
|
||||||
|
} else if (w == panel->hcdelayB[3]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "700");
|
||||||
|
} else if (w == panel->hcdelayB[4]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "1000");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void delayTextChanged(void *observerData, WMNotification * notification)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) observerData;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Parameter not used, but tell the compiler that it is ok */
|
||||||
|
(void) notification;
|
||||||
|
|
||||||
|
if (panel->hotcornerDelaySelected) {
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
WMSetButtonSelected(panel->hcdelayB[i], False);
|
||||||
|
}
|
||||||
|
panel->hotcornerDelaySelected = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void createPanel(Panel * p)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) p;
|
||||||
|
int i;
|
||||||
|
char *buf1, *buf2;
|
||||||
|
WMColor *color;
|
||||||
|
WMFont *font;
|
||||||
|
char *path;
|
||||||
|
RImage *xis = NULL;
|
||||||
|
WMScreen *scr = WMWidgetScreen(panel->parent);
|
||||||
|
RContext *rc = WMScreenRContext(scr);
|
||||||
|
GC gc = XCreateGC(scr->display, WMWidgetXID(panel->parent), 0, NULL);
|
||||||
|
|
||||||
|
path = LocateImage(ICON_FILE);
|
||||||
|
if (path) {
|
||||||
|
xis = RLoadImage(rc, path, 0);
|
||||||
|
if (!xis) {
|
||||||
|
wwarning(_("could not load image file %s"), path);
|
||||||
|
}
|
||||||
|
wfree(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->box = WMCreateBox(panel->parent);
|
||||||
|
WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2);
|
||||||
|
|
||||||
|
|
||||||
|
/***************** Hot Corner lelf side frames *****************/
|
||||||
|
panel->hcF = WMCreateFrame(panel->box);
|
||||||
|
WMResizeWidget(panel->hcF, 240, 53);
|
||||||
|
WMMoveWidget(panel->hcF, 15, 17);
|
||||||
|
|
||||||
|
panel->hcB = WMCreateSwitchButton(panel->hcF);
|
||||||
|
WMResizeWidget(panel->hcB, 150, 30);
|
||||||
|
WMMoveWidget(panel->hcB, 15, 12);
|
||||||
|
WMSetButtonText(panel->hcB, _("Enable Hot Corners"));
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcF);
|
||||||
|
|
||||||
|
panel->hceF = WMCreateFrame(panel->box);
|
||||||
|
WMSetFrameTitle(panel->hceF, _("Hot Corner Edge"));
|
||||||
|
WMResizeWidget(panel->hceF, 240, 40);
|
||||||
|
WMMoveWidget(panel->hceF, 15, 77);
|
||||||
|
|
||||||
|
panel->hceS = WMCreateSlider(panel->hceF);
|
||||||
|
WMResizeWidget(panel->hceS, 80, 15);
|
||||||
|
WMMoveWidget(panel->hceS, 15, 18);
|
||||||
|
WMSetSliderMinValue(panel->hceS, 2);
|
||||||
|
WMSetSliderMaxValue(panel->hceS, 10);
|
||||||
|
WMSetSliderAction(panel->hceS, edgeCallback, panel);
|
||||||
|
|
||||||
|
panel->hceL = WMCreateLabel(panel->hceF);
|
||||||
|
WMResizeWidget(panel->hceL, 100, 15);
|
||||||
|
WMMoveWidget(panel->hceL, 105, 18);
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hceF);
|
||||||
|
|
||||||
|
panel->hcdescF = WMCreateFrame(panel->box);
|
||||||
|
WMResizeWidget(panel->hcdescF, 240, 95);
|
||||||
|
WMMoveWidget(panel->hcdescF, 15, 130);
|
||||||
|
|
||||||
|
panel->hcdescL = WMCreateLabel(panel->hcdescF);
|
||||||
|
WMResizeWidget(panel->hcdescL, 200, 60);
|
||||||
|
WMMoveWidget(panel->hcdescL, 15, 10);
|
||||||
|
WMSetLabelText(panel->hcdescL,
|
||||||
|
_("Instructions:\n\n"
|
||||||
|
" - assign command to corner\n"
|
||||||
|
" - or leave it empty\n"));
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcdescF);
|
||||||
|
|
||||||
|
/***************** Hot Corner Action Delay *****************/
|
||||||
|
panel->hcdelayF = WMCreateFrame(panel->box);
|
||||||
|
WMResizeWidget(panel->hcdelayF, 245, 60);
|
||||||
|
WMMoveWidget(panel->hcdelayF, 265, 10);
|
||||||
|
|
||||||
|
WMSetFrameTitle(panel->hcdelayF, _("Hot Corner Delay"));
|
||||||
|
|
||||||
|
buf1 = wmalloc(strlen(DELAY_ICON) + 1);
|
||||||
|
buf2 = wmalloc(strlen(DELAY_ICON_S) + 1);
|
||||||
|
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
char *path;
|
||||||
|
|
||||||
|
panel->hcdelayB[i] = WMCreateCustomButton(panel->hcdelayF, WBBStateChangeMask);
|
||||||
|
WMResizeWidget(panel->hcdelayB[i], 25, 25);
|
||||||
|
WMMoveWidget(panel->hcdelayB[i], 12 + (30 * i), 25);
|
||||||
|
WMSetButtonBordered(panel->hcdelayB[i], False);
|
||||||
|
WMSetButtonImagePosition(panel->hcdelayB[i], WIPImageOnly);
|
||||||
|
WMSetButtonAction(panel->hcdelayB[i], pushDelayButton, panel);
|
||||||
|
if (i > 0)
|
||||||
|
WMGroupButtons(panel->hcdelayB[0], panel->hcdelayB[i]);
|
||||||
|
sprintf(buf1, DELAY_ICON, i);
|
||||||
|
sprintf(buf2, DELAY_ICON_S, i);
|
||||||
|
path = LocateImage(buf1);
|
||||||
|
if (path) {
|
||||||
|
panel->icon = WMCreatePixmapFromFile(scr, path);
|
||||||
|
if (panel->icon) {
|
||||||
|
WMSetButtonImage(panel->hcdelayB[i], panel->icon);
|
||||||
|
WMReleasePixmap(panel->icon);
|
||||||
|
} else {
|
||||||
|
wwarning(_("could not load icon file %s"), path);
|
||||||
|
}
|
||||||
|
wfree(path);
|
||||||
|
}
|
||||||
|
path = LocateImage(buf2);
|
||||||
|
if (path) {
|
||||||
|
panel->icon = WMCreatePixmapFromFile(scr, path);
|
||||||
|
if (panel->icon) {
|
||||||
|
WMSetButtonAltImage(panel->hcdelayB[i], panel->icon);
|
||||||
|
WMReleasePixmap(panel->icon);
|
||||||
|
} else {
|
||||||
|
wwarning(_("could not load icon file %s"), path);
|
||||||
|
}
|
||||||
|
wfree(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wfree(buf1);
|
||||||
|
wfree(buf2);
|
||||||
|
|
||||||
|
panel->hcdelayT = WMCreateTextField(panel->hcdelayF);
|
||||||
|
|
||||||
|
WMResizeWidget(panel->hcdelayT, 36, 20);
|
||||||
|
WMMoveWidget(panel->hcdelayT, 165, 28);
|
||||||
|
WMAddNotificationObserver(delayTextChanged, panel, WMTextDidChangeNotification, panel->hcdelayT);
|
||||||
|
|
||||||
|
panel->hcdelayL = WMCreateLabel(panel->hcdelayF);
|
||||||
|
WMResizeWidget(panel->hcdelayL, 36, 16);
|
||||||
|
WMMoveWidget(panel->hcdelayL, 205, 32);
|
||||||
|
WMSetLabelText(panel->hcdelayL, _("ms"));
|
||||||
|
|
||||||
|
color = WMDarkGrayColor(scr);
|
||||||
|
font = WMSystemFontOfSize(scr, 10);
|
||||||
|
|
||||||
|
WMSetLabelTextColor(panel->hcdelayL, color);
|
||||||
|
WMSetLabelFont(panel->hcdelayL, font);
|
||||||
|
|
||||||
|
WMReleaseColor(color);
|
||||||
|
WMReleaseFont(font);
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcdelayF);
|
||||||
|
|
||||||
|
/***************** Set Hot Corner Actions ****************/
|
||||||
|
panel->hcactionsF = WMCreateFrame(panel->box);
|
||||||
|
WMSetFrameTitle(panel->hcactionsF, _("Hot Corner Actions"));
|
||||||
|
WMResizeWidget(panel->hcactionsF, 245, 148);
|
||||||
|
WMMoveWidget(panel->hcactionsF, 265, 77);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 18);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
CreateImages(scr, rc, xis, ICON_FILE, &panel->icon, NULL);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[0] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[0], gc, 0, 0, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[0], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->hcactionsT[0] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[0], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[0], 50, 20);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 48);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[1] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[1], gc, panel->icon->width/2, 0, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[1], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->hcactionsT[1] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[1], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[1], 50, 50);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 78);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[2] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[2], gc, 0, panel->icon->height/2, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[2], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
panel->hcactionsT[2] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[2], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[2], 50, 80);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 108);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[3] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[3], gc, panel->icon->width/2, panel->icon->height/2, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[3], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->hcactionsT[3] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[3], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[3], 50, 107);
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcactionsF);
|
||||||
|
|
||||||
|
if (xis)
|
||||||
|
RReleaseImage(xis);
|
||||||
|
XFreeGC(scr->display, gc);
|
||||||
|
|
||||||
|
WMRealizeWidget(panel->box);
|
||||||
|
WMMapSubwidgets(panel->box);
|
||||||
|
|
||||||
|
showData(panel);
|
||||||
|
}
|
||||||
|
static void prepareForClose(_Panel *panel)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
WMScreen *scr = WMWidgetScreen(panel->parent);
|
||||||
|
|
||||||
|
WMReleasePixmap(panel->icon);
|
||||||
|
for (i = 0; i < sizeof(panel->quarter) / sizeof(Pixmap); i++)
|
||||||
|
XFreePixmap(scr->display, panel->quarter[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Panel *InitHotCornerShortcuts(WMWidget *parent)
|
||||||
|
{
|
||||||
|
_Panel *panel;
|
||||||
|
|
||||||
|
panel = wmalloc(sizeof(_Panel));
|
||||||
|
|
||||||
|
panel->sectionName = _("Hot Corner Shortcut Preferences");
|
||||||
|
panel->description = _("Choose actions to perform when you move the\n"
|
||||||
|
"mouse pointer to the screen corners.");
|
||||||
|
panel->parent = parent;
|
||||||
|
|
||||||
|
panel->callbacks.createWidgets = createPanel;
|
||||||
|
panel->callbacks.updateDomain = storeData;
|
||||||
|
panel->callbacks.prepareForClose = prepareForClose;
|
||||||
|
|
||||||
|
AddSection(panel, ICON_FILE);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
+3
-3
@@ -195,8 +195,8 @@ static void showData(_Panel * panel)
|
|||||||
|
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
i = 0;
|
i = 0;
|
||||||
else if (i > 9)
|
else if (i > 29)
|
||||||
i = 9;
|
i = 29;
|
||||||
WMSetPopUpButtonSelectedItem(panel->sizeP, i);
|
WMSetPopUpButtonSelectedItem(panel->sizeP, i);
|
||||||
|
|
||||||
/* Mini-Previews for Icons */
|
/* Mini-Previews for Icons */
|
||||||
@@ -339,7 +339,7 @@ static void createPanel(Panel * p)
|
|||||||
panel->sizeP = WMCreatePopUpButton(panel->sizeF);
|
panel->sizeP = WMCreatePopUpButton(panel->sizeF);
|
||||||
WMResizeWidget(panel->sizeP, 80, 20);
|
WMResizeWidget(panel->sizeP, 80, 20);
|
||||||
WMMoveWidget(panel->sizeP, 10, 19);
|
WMMoveWidget(panel->sizeP, 10, 19);
|
||||||
for (i = 24; i <= 96; i += 8) {
|
for (i = 24; i <= 256; i += 8) {
|
||||||
sprintf(buf, "%ix%i", i, i);
|
sprintf(buf, "%ix%i", i, i);
|
||||||
WMAddPopUpButtonItem(panel->sizeP, buf);
|
WMAddPopUpButtonItem(panel->sizeP, buf);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ typedef struct _Panel {
|
|||||||
* First parameter is the internal keyword known by WMaker
|
* First parameter is the internal keyword known by WMaker
|
||||||
* Second is the text displayed to the user
|
* Second is the text displayed to the user
|
||||||
*/
|
*/
|
||||||
static const struct {
|
static struct keyOption {
|
||||||
const char *key;
|
const char *key;
|
||||||
const char *title;
|
const char *title;
|
||||||
} keyOptions[] = {
|
} keyOptions[] = {
|
||||||
@@ -84,11 +84,12 @@ static const struct {
|
|||||||
{ "RHMaximizeKey", N_("Maximize active window right half") },
|
{ "RHMaximizeKey", N_("Maximize active window right half") },
|
||||||
{ "THMaximizeKey", N_("Maximize active window top half") },
|
{ "THMaximizeKey", N_("Maximize active window top half") },
|
||||||
{ "BHMaximizeKey", N_("Maximize active window bottom half") },
|
{ "BHMaximizeKey", N_("Maximize active window bottom half") },
|
||||||
{ "LTCMaximizeKey", N_("Maximize active window left top corner") },
|
{ "TLCMaximizeKey", N_("Maximize active window top left corner") },
|
||||||
{ "RTCMaximizeKey", N_("Maximize active window right top corner") },
|
{ "TRCMaximizeKey", N_("Maximize active window top right corner") },
|
||||||
{ "LBCMaximizeKey", N_("Maximize active window left bottom corner") },
|
{ "BLCMaximizeKey", N_("Maximize active window bottom left corner") },
|
||||||
{ "RBCMaximizeKey", N_("Maximize active window right bottom corner") },
|
{ "BRCMaximizeKey", N_("Maximize active window bottom right corner") },
|
||||||
{ "MaximusKey", N_("Maximus: Tiled maximization ") },
|
{ "MaximusKey", N_("Tile active window") },
|
||||||
|
{ "CenterKey", N_("Center active window") },
|
||||||
{ "KeepOnTopKey", N_("Toggle window on top status") },
|
{ "KeepOnTopKey", N_("Toggle window on top status") },
|
||||||
{ "KeepAtBottomKey",N_("Toggle window at bottom status") },
|
{ "KeepAtBottomKey",N_("Toggle window at bottom status") },
|
||||||
{ "OmnipresentKey", N_("Toggle window omnipresent status") },
|
{ "OmnipresentKey", N_("Toggle window omnipresent status") },
|
||||||
@@ -154,10 +155,14 @@ static const struct {
|
|||||||
|
|
||||||
/* Misc. */
|
/* Misc. */
|
||||||
{ "WindowRelaunchKey", N_("Launch new instance of application") },
|
{ "WindowRelaunchKey", N_("Launch new instance of application") },
|
||||||
{ "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") },
|
{ "ScreenSwitchKey", N_("Switch to next screen/monitor") },
|
||||||
{ "RunKey", N_("Run application") },
|
{ "RunKey", N_("Run application") },
|
||||||
|
{ "ExitKey", N_("Exit Window Maker") },
|
||||||
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
|
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
|
||||||
{ "ClipRaiseLowerKey", N_("Raise/Lower Clip") }
|
{ "ClipRaiseLowerKey", N_("Raise/Lower Clip") },
|
||||||
|
{ "ScreenCaptureKey", N_("Capture the entire screen") },
|
||||||
|
{ "WindowCaptureKey", N_("Capture a window") },
|
||||||
|
{ "PartialCaptureKey", N_("Capture a portion of the screen") }
|
||||||
#ifdef XKB_MODELOCK
|
#ifdef XKB_MODELOCK
|
||||||
,{ "ToggleKbdModeKey", N_("Toggle keyboard language") }
|
,{ "ToggleKbdModeKey", N_("Toggle keyboard language") }
|
||||||
#endif /* XKB_MODELOCK */
|
#endif /* XKB_MODELOCK */
|
||||||
@@ -316,11 +321,8 @@ char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case)
|
|||||||
if (ev.type == KeyPress && ev.xkey.keycode != 0) {
|
if (ev.type == KeyPress && ev.xkey.keycode != 0) {
|
||||||
numlock_mask = NumLockMask(dpy);
|
numlock_mask = NumLockMask(dpy);
|
||||||
|
|
||||||
if (xext_xkb_supported)
|
/* conditional mask check to get numeric keypad keys */
|
||||||
/* conditional mask check to get numeric keypad keys */
|
ksym = W_KeycodeToKeysym(dpy, ev.xkey.keycode, ev.xkey.state & numlock_mask?1:0);
|
||||||
ksym = XkbKeycodeToKeysym(dpy, ev.xkey.keycode, 0, ev.xkey.state & numlock_mask?1:0);
|
|
||||||
else
|
|
||||||
ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0);
|
|
||||||
|
|
||||||
if (!IsModifierKey(ksym)) {
|
if (!IsModifierKey(ksym)) {
|
||||||
if (convert_case) {
|
if (convert_case) {
|
||||||
@@ -368,6 +370,36 @@ char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case)
|
|||||||
return wstrdup(buffer);
|
return wstrdup(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check if the keystr entered is already set to another action
|
||||||
|
* if found it returns the position in the keyOptions
|
||||||
|
*/
|
||||||
|
static int isKeySet(_Panel *panel, char *keystr)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
for (i = 0; i < panel->actionCount; i++) {
|
||||||
|
str = NULL;
|
||||||
|
if (panel->shortcuts[i]) {
|
||||||
|
str = wtrimspace(panel->shortcuts[i]);
|
||||||
|
if (strlen(str) == 0) {
|
||||||
|
wfree(str);
|
||||||
|
str = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (str) {
|
||||||
|
if (strcmp(keystr, str) == 0) {
|
||||||
|
wfree(str);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
wfree(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static void captureClick(WMWidget * w, void *data)
|
static void captureClick(WMWidget * w, void *data)
|
||||||
{
|
{
|
||||||
_Panel *panel = (_Panel *) data;
|
_Panel *panel = (_Panel *) data;
|
||||||
@@ -382,17 +414,31 @@ static void captureClick(WMWidget * w, void *data)
|
|||||||
XGrabKeyboard(dpy, WMWidgetXID(panel->parent), True, GrabModeAsync, GrabModeAsync, CurrentTime);
|
XGrabKeyboard(dpy, WMWidgetXID(panel->parent), True, GrabModeAsync, GrabModeAsync, CurrentTime);
|
||||||
shortcut = capture_shortcut(dpy, &panel->capturing, 1);
|
shortcut = capture_shortcut(dpy, &panel->capturing, 1);
|
||||||
if (shortcut) {
|
if (shortcut) {
|
||||||
|
int key_idx = -1;
|
||||||
int row = WMGetListSelectedItemRow(panel->actLs);
|
int row = WMGetListSelectedItemRow(panel->actLs);
|
||||||
|
|
||||||
WMSetTextFieldText(panel->shoT, shortcut);
|
key_idx = isKeySet(panel, shortcut);
|
||||||
if (row >= 0) {
|
if (key_idx >= 0 && (key_idx != row)) {
|
||||||
if (panel->shortcuts[row])
|
char *msg;
|
||||||
wfree(panel->shortcuts[row]);
|
|
||||||
panel->shortcuts[row] = shortcut;
|
|
||||||
|
|
||||||
WMRedisplayWidget(panel->actLs);
|
msg = wstrconcat(_("Key shortcut already in use by the "), _(keyOptions[key_idx].title));
|
||||||
} else {
|
WMRunAlertPanel(WMWidgetScreen(w), GetWindow(),
|
||||||
|
_("Error"),
|
||||||
|
msg,
|
||||||
|
_("OK"), NULL, NULL);
|
||||||
|
wfree(msg);
|
||||||
wfree(shortcut);
|
wfree(shortcut);
|
||||||
|
} else {
|
||||||
|
WMSetTextFieldText(panel->shoT, shortcut);
|
||||||
|
if (row >= 0) {
|
||||||
|
if (panel->shortcuts[row])
|
||||||
|
wfree(panel->shortcuts[row]);
|
||||||
|
panel->shortcuts[row] = shortcut;
|
||||||
|
|
||||||
|
WMRedisplayWidget(panel->actLs);
|
||||||
|
} else {
|
||||||
|
wfree(shortcut);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -499,6 +545,20 @@ static void paintItem(WMList * lPtr, int index, Drawable d, char *text, int stat
|
|||||||
WMDrawString(scr, d, panel->black, panel->font, x + 20, y, text, strlen(text));
|
WMDrawString(scr, d, panel->black, panel->font, x + 20, y, text, strlen(text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cmpKeyOptions(const void *v1, const void *v2)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
const struct keyOption *opt1 = (struct keyOption *)v1;
|
||||||
|
const struct keyOption *opt2 = (struct keyOption *)v2;
|
||||||
|
|
||||||
|
if ((rc = strncmp(opt1->title, opt2->title, 20)) < 0)
|
||||||
|
return -1;
|
||||||
|
else if (rc > 0)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void createPanel(Panel * p)
|
static void createPanel(Panel * p)
|
||||||
{
|
{
|
||||||
_Panel *panel = (_Panel *) p;
|
_Panel *panel = (_Panel *) p;
|
||||||
@@ -538,6 +598,7 @@ static void createPanel(Panel * p)
|
|||||||
WMSetListUserDrawProc(panel->actLs, paintItem);
|
WMSetListUserDrawProc(panel->actLs, paintItem);
|
||||||
WMHangData(panel->actLs, panel);
|
WMHangData(panel->actLs, panel);
|
||||||
|
|
||||||
|
qsort(keyOptions, wlengthof(keyOptions), sizeof(keyOptions[0]), cmpKeyOptions);
|
||||||
for (i = 0; i < wlengthof(keyOptions); i++) {
|
for (i = 0; i < wlengthof(keyOptions); i++) {
|
||||||
WMAddListItem(panel->actLs, _(keyOptions[i].title));
|
WMAddListItem(panel->actLs, _(keyOptions[i].title));
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-3
@@ -10,9 +10,20 @@ wpdatadir = @wprefs_datadir@
|
|||||||
|
|
||||||
wpdata_DATA = WPrefs.tiff WPrefs.xpm
|
wpdata_DATA = WPrefs.tiff WPrefs.xpm
|
||||||
|
|
||||||
|
applicationsdir = @datadir@/applications
|
||||||
|
|
||||||
|
applications_DATA = WPrefs.desktop
|
||||||
|
|
||||||
|
WPrefs.desktop: WPrefs.desktop.in
|
||||||
|
$(AM_V_GEN)sed -e "s:#wprefs_bindir#:${wprefs_bindir}:" \
|
||||||
|
-e "s:#wprefs_datadir#:${wprefs_datadir}:" $< > $@
|
||||||
|
|
||||||
EXTRA_DIST = $(wpdata_DATA) \
|
EXTRA_DIST = $(wpdata_DATA) \
|
||||||
KeyboardSettings.c \
|
KeyboardSettings.c \
|
||||||
Themes.c
|
Themes.c \
|
||||||
|
WPrefs.desktop.in
|
||||||
|
|
||||||
|
DISTCLEANFILES = WPrefs.desktop
|
||||||
|
|
||||||
WPrefs_SOURCES = \
|
WPrefs_SOURCES = \
|
||||||
main.c \
|
main.c \
|
||||||
@@ -24,6 +35,7 @@ WPrefs_SOURCES = \
|
|||||||
Expert.c \
|
Expert.c \
|
||||||
Focus.c \
|
Focus.c \
|
||||||
FontSimple.c \
|
FontSimple.c \
|
||||||
|
HotCornerShortcuts.c \
|
||||||
Icons.c \
|
Icons.c \
|
||||||
KeyboardShortcuts.c \
|
KeyboardShortcuts.c \
|
||||||
Menu.c \
|
Menu.c \
|
||||||
@@ -45,10 +57,11 @@ WPrefs_SOURCES = \
|
|||||||
# KeyboardSettings.c \
|
# KeyboardSettings.c \
|
||||||
# Themes.c
|
# Themes.c
|
||||||
|
|
||||||
AM_CFLAGS =
|
AM_CFLAGS = @PANGO_CFLAGS@
|
||||||
|
|
||||||
AM_CPPFLAGS = -DRESOURCE_PATH=\"$(wpdatadir)\" -DWMAKER_RESOURCE_PATH=\"$(pkgdatadir)\" \
|
AM_CPPFLAGS = -DRESOURCE_PATH=\"$(wpdatadir)\" -DWMAKER_RESOURCE_PATH=\"$(pkgdatadir)\" \
|
||||||
-I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@
|
-I$(top_builddir)/wrlib -I$(top_srcdir)/WINGs -I$(top_builddir)/WINGs \
|
||||||
|
@HEADER_SEARCH_PATH@
|
||||||
|
|
||||||
WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
||||||
|
|
||||||
|
|||||||
+31
-12
@@ -291,6 +291,8 @@ static void changedItemPad(WMWidget * w, void *data)
|
|||||||
_Panel *panel = (_Panel *) data;
|
_Panel *panel = (_Panel *) data;
|
||||||
int padn = WMGetPopUpButtonSelectedItem(w);
|
int padn = WMGetPopUpButtonSelectedItem(w);
|
||||||
|
|
||||||
|
if (padn < 0)
|
||||||
|
return;
|
||||||
WMUnmapWidget(panel->itemPad[panel->currentPad]);
|
WMUnmapWidget(panel->itemPad[panel->currentPad]);
|
||||||
WMMapWidget(panel->itemPad[padn]);
|
WMMapWidget(panel->itemPad[padn]);
|
||||||
|
|
||||||
@@ -507,7 +509,7 @@ static void createPanel(_Panel * p)
|
|||||||
WMSetScrollViewContentView(sview, WMWidgetView(pad));
|
WMSetScrollViewContentView(sview, WMWidgetView(pad));
|
||||||
|
|
||||||
data = putNewItem(panel, pad, ExternalInfo, _("Debian Menu"));
|
data = putNewItem(panel, pad, ExternalInfo, _("Debian Menu"));
|
||||||
data->param.pipe.command = "/etc/GNUstep/Defaults/menu.hook";
|
data->param.pipe.command = "/etc/" GSUSER_SUBDIR "/" DEFAULTS_SUBDIR "/menu.hook";
|
||||||
|
|
||||||
data = putNewItem(panel, pad, PipeInfo, _("RedHat Menu"));
|
data = putNewItem(panel, pad, PipeInfo, _("RedHat Menu"));
|
||||||
data->param.pipe.command = "wmconfig --output wmaker";
|
data->param.pipe.command = "wmconfig --output wmaker";
|
||||||
@@ -518,19 +520,25 @@ static void createPanel(_Panel * p)
|
|||||||
data = putNewItem(panel, pad, DirectoryInfo, _("Themes"));
|
data = putNewItem(panel, pad, DirectoryInfo, _("Themes"));
|
||||||
data->param.directory.command = "setstyle";
|
data->param.directory.command = "setstyle";
|
||||||
data->param.directory.directory =
|
data->param.directory.directory =
|
||||||
"/usr/share/WindowMaker/Themes /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes";
|
"/usr/share/" PACKAGE_TARNAME "/Themes"
|
||||||
|
" /usr/local/share/" PACKAGE_TARNAME "/Themes"
|
||||||
|
" $HOME/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Themes";
|
||||||
data->param.directory.stripExt = 1;
|
data->param.directory.stripExt = 1;
|
||||||
|
|
||||||
data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (scale)"));
|
data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (scale)"));
|
||||||
data->param.directory.command = "wmsetbg -u -s";
|
data->param.directory.command = "wmsetbg -u -s";
|
||||||
data->param.directory.directory =
|
data->param.directory.directory =
|
||||||
"/opt/kde2/share/wallpapers /usr/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds";
|
"/opt/kde2/share/wallpapers"
|
||||||
|
" /usr/share/" PACKAGE_TARNAME "/Backgrounds"
|
||||||
|
" $HOME/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Backgrounds";
|
||||||
data->param.directory.stripExt = 1;
|
data->param.directory.stripExt = 1;
|
||||||
|
|
||||||
data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (tile)"));
|
data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (tile)"));
|
||||||
data->param.directory.command = "wmsetbg -u -t";
|
data->param.directory.command = "wmsetbg -u -t";
|
||||||
data->param.directory.directory =
|
data->param.directory.directory =
|
||||||
"/opt/kde2/share/wallpapers /usr/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds";
|
"/opt/kde2/share/wallpapers"
|
||||||
|
" /usr/share/" PACKAGE_TARNAME "/Backgrounds"
|
||||||
|
" $HOME/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Backgrounds";
|
||||||
data->param.directory.stripExt = 1;
|
data->param.directory.stripExt = 1;
|
||||||
|
|
||||||
smenu = putNewSubmenu(pad, _("Assorted XTerms"));
|
smenu = putNewSubmenu(pad, _("Assorted XTerms"));
|
||||||
@@ -619,7 +627,8 @@ static void createPanel(_Panel * p)
|
|||||||
WMSetLabelText(label, _("Enter the path for a file containing a menu\n"
|
WMSetLabelText(label, _("Enter the path for a file containing a menu\n"
|
||||||
"or a list of directories with the programs you\n"
|
"or a list of directories with the programs you\n"
|
||||||
"want to have listed in the menu. Ex:\n"
|
"want to have listed in the menu. Ex:\n"
|
||||||
"~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin"));
|
"~/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/menu\n"
|
||||||
|
"or\n" "/usr/bin ~/xbin"));
|
||||||
|
|
||||||
WMMapSubwidgets(panel->pathF);
|
WMMapSubwidgets(panel->pathF);
|
||||||
|
|
||||||
@@ -914,6 +923,11 @@ static ItemData *parseCommand(WMPropList * item)
|
|||||||
|
|
||||||
data->type = ExecInfo;
|
data->type = ExecInfo;
|
||||||
|
|
||||||
|
if (parameter == NULL) {
|
||||||
|
wfree(data);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
data->param.exec.command = wstrdup(parameter);
|
data->param.exec.command = wstrdup(parameter);
|
||||||
if (shortcut)
|
if (shortcut)
|
||||||
data->param.exec.shortcut = wstrdup(shortcut);
|
data->param.exec.shortcut = wstrdup(shortcut);
|
||||||
@@ -926,6 +940,12 @@ static ItemData *parseCommand(WMPropList * item)
|
|||||||
* |pipe
|
* |pipe
|
||||||
*/
|
*/
|
||||||
p = parameter;
|
p = parameter;
|
||||||
|
|
||||||
|
if (p == NULL) {
|
||||||
|
wfree(data);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
while (isspace(*p) && *p)
|
while (isspace(*p) && *p)
|
||||||
p++;
|
p++;
|
||||||
if (*p == '|') {
|
if (*p == '|') {
|
||||||
@@ -1482,16 +1502,11 @@ static WMPropList *getDefaultMenu(_Panel * panel)
|
|||||||
|
|
||||||
static void showData(_Panel * panel)
|
static void showData(_Panel * panel)
|
||||||
{
|
{
|
||||||
const char *gspath;
|
|
||||||
char *menuPath, *labelText;
|
char *menuPath, *labelText;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
WMPropList *pmenu;
|
WMPropList *pmenu;
|
||||||
|
|
||||||
gspath = wusergnusteppath();
|
menuPath = wdefaultspathfordomain("WMRootMenu");
|
||||||
|
|
||||||
menuPath = wmalloc(strlen(gspath) + 32);
|
|
||||||
strcpy(menuPath, gspath);
|
|
||||||
strcat(menuPath, "/Defaults/WMRootMenu");
|
|
||||||
|
|
||||||
pmenu = WMReadPropListFromFile(menuPath);
|
pmenu = WMReadPropListFromFile(menuPath);
|
||||||
|
|
||||||
@@ -1502,8 +1517,12 @@ static void showData(_Panel * panel)
|
|||||||
|
|
||||||
path = wexpandpath(WMGetFromPLString(pmenu));
|
path = wexpandpath(WMGetFromPLString(pmenu));
|
||||||
|
|
||||||
if (access(path, F_OK) < 0)
|
if (access(path, F_OK) < 0) {
|
||||||
|
char *old_path = path;
|
||||||
|
|
||||||
path = wfindfile(DEF_CONFIG_PATHS, path);
|
path = wfindfile(DEF_CONFIG_PATHS, path);
|
||||||
|
wfree(old_path);
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO: if needed, concatenate locale suffix to path.
|
/* TODO: if needed, concatenate locale suffix to path.
|
||||||
See getLocalizedMenuFile() in src/rootmenu.c. */
|
See getLocalizedMenuFile() in src/rootmenu.c. */
|
||||||
|
|||||||
@@ -381,10 +381,7 @@ static void fillModifierPopUp(WMPopUpButton * pop)
|
|||||||
if (mapping->modifiermap[idx] != 0) {
|
if (mapping->modifiermap[idx] != 0) {
|
||||||
int l;
|
int l;
|
||||||
for (l = 0; l < 4; l++) {
|
for (l = 0; l < 4; l++) {
|
||||||
if (xext_xkb_supported)
|
ksym = W_KeycodeToKeysym(dpy, mapping->modifiermap[idx], l);
|
||||||
ksym = XkbKeycodeToKeysym(dpy, mapping->modifiermap[idx], 0, l);
|
|
||||||
else
|
|
||||||
ksym = XKeycodeToKeysym(dpy, mapping->modifiermap[idx], 0);
|
|
||||||
if (ksym != NoSymbol)
|
if (ksym != NoSymbol)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -650,7 +647,7 @@ static void storeCommandInScript(const char *cmd, const char *line)
|
|||||||
umask(permissions);
|
umask(permissions);
|
||||||
permissions = (S_IRWXU | S_IRWXG | S_IRWXO) & (~permissions);
|
permissions = (S_IRWXU | S_IRWXG | S_IRWXO) & (~permissions);
|
||||||
|
|
||||||
path = wstrconcat(wusergnusteppath(), "/Library/WindowMaker/autostart");
|
path = wstrconcat(wuserdatapath(), "/" PACKAGE_TARNAME "/autostart");
|
||||||
|
|
||||||
f = fopen(path, "rb");
|
f = fopen(path, "rb");
|
||||||
if (!f) {
|
if (!f) {
|
||||||
@@ -668,7 +665,7 @@ static void storeCommandInScript(const char *cmd, const char *line)
|
|||||||
char *tmppath;
|
char *tmppath;
|
||||||
FILE *fo;
|
FILE *fo;
|
||||||
|
|
||||||
tmppath = wstrconcat(wusergnusteppath(), "/Library/WindowMaker/autostart.tmp");
|
tmppath = wstrconcat(wuserdatapath(), "/" PACKAGE_TARNAME "/autostart.tmp");
|
||||||
fo = fopen(tmppath, "wb");
|
fo = fopen(tmppath, "wb");
|
||||||
if (!fo) {
|
if (!fo) {
|
||||||
werror(_("could not create temporary file %s"), tmppath);
|
werror(_("could not create temporary file %s"), tmppath);
|
||||||
@@ -751,6 +748,8 @@ static void storeData(_Panel * panel)
|
|||||||
int action;
|
int action;
|
||||||
|
|
||||||
action = WMGetPopUpButtonSelectedItem(panel->mouse_action[i].popup);
|
action = WMGetPopUpButtonSelectedItem(panel->mouse_action[i].popup);
|
||||||
|
if (action < 0)
|
||||||
|
continue;
|
||||||
if (button_list[i].type == T_BUTTON)
|
if (button_list[i].type == T_BUTTON)
|
||||||
db_value = button_actions[action].db_value;
|
db_value = button_actions[action].db_value;
|
||||||
else
|
else
|
||||||
|
|||||||
+6
-6
@@ -77,11 +77,11 @@ static void showData(_Panel * panel)
|
|||||||
if (array)
|
if (array)
|
||||||
wwarning(_("bad value in option IconPath. Using default path list"));
|
wwarning(_("bad value in option IconPath. Using default path list"));
|
||||||
addPathToList(panel->icoL, -1, "~/pixmaps");
|
addPathToList(panel->icoL, -1, "~/pixmaps");
|
||||||
addPathToList(panel->icoL, -1, "~/GNUstep/Library/Icons");
|
addPathToList(panel->icoL, -1, "~/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/Icons");
|
||||||
addPathToList(panel->icoL, -1, "/usr/include/X11/pixmaps");
|
addPathToList(panel->icoL, -1, "/usr/include/X11/pixmaps");
|
||||||
addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Icons");
|
addPathToList(panel->icoL, -1, "/usr/local/share/" PACKAGE_TARNAME "/Icons");
|
||||||
addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Pixmaps");
|
addPathToList(panel->icoL, -1, "/usr/local/share/" PACKAGE_TARNAME "/Pixmaps");
|
||||||
addPathToList(panel->icoL, -1, "/usr/share/WindowMaker/Icons");
|
addPathToList(panel->icoL, -1, "/usr/share/" PACKAGE_TARNAME "/Icons");
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < WMGetPropListItemCount(array); i++) {
|
for (i = 0; i < WMGetPropListItemCount(array); i++) {
|
||||||
val = WMGetFromPLArray(array, i);
|
val = WMGetFromPLArray(array, i);
|
||||||
@@ -94,8 +94,8 @@ static void showData(_Panel * panel)
|
|||||||
if (array)
|
if (array)
|
||||||
wwarning(_("bad value in option PixmapPath. Using default path list"));
|
wwarning(_("bad value in option PixmapPath. Using default path list"));
|
||||||
addPathToList(panel->pixL, -1, "~/pixmaps");
|
addPathToList(panel->pixL, -1, "~/pixmaps");
|
||||||
addPathToList(panel->pixL, -1, "~/GNUstep/Library/WindowMaker/Pixmaps");
|
addPathToList(panel->pixL, -1, "~/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Pixmaps");
|
||||||
addPathToList(panel->pixL, -1, "/usr/local/share/WindowMaker/Pixmaps");
|
addPathToList(panel->pixL, -1, "/usr/local/share/" PACKAGE_TARNAME "/Pixmaps");
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < WMGetPropListItemCount(array); i++) {
|
for (i = 0; i < WMGetPropListItemCount(array); i++) {
|
||||||
val = WMGetFromPLArray(array, i);
|
val = WMGetFromPLArray(array, i);
|
||||||
|
|||||||
@@ -196,9 +196,13 @@ static void storeData(_Panel * panel)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = WMGetPopUpButtonSelectedItem(panel->sizeP);
|
i = WMGetPopUpButtonSelectedItem(panel->sizeP);
|
||||||
|
if (i < 0)
|
||||||
|
return;
|
||||||
SetStringForKey(resize_display[i].db_value, "ResizeDisplay");
|
SetStringForKey(resize_display[i].db_value, "ResizeDisplay");
|
||||||
|
|
||||||
i = WMGetPopUpButtonSelectedItem(panel->posiP);
|
i = WMGetPopUpButtonSelectedItem(panel->posiP);
|
||||||
|
if (i < 0)
|
||||||
|
return;
|
||||||
SetStringForKey(move_display[i].db_value, "MoveDisplay");
|
SetStringForKey(move_display[i].db_value, "MoveDisplay");
|
||||||
|
|
||||||
lr = WMGetButtonSelected(panel->lrB);
|
lr = WMGetButtonSelected(panel->lrB);
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
WPrefs.app is the preferences "editor" for the WindowMaker window
|
WPrefs.app is the preferences "editor" for the WindowMaker window
|
||||||
manager. It can be used to set most of the preference options of WindowMaker
|
manager. It can be used to set most of the preference options of WindowMaker
|
||||||
and define it's applications menu. It also can change some settings
|
and define its applications menu. It also can change some settings
|
||||||
that do not belong to WindowMaker.
|
that do not belong to WindowMaker.
|
||||||
|
|
||||||
Although WPrefs.app is designed to be easy to use, you should read the
|
Although WPrefs.app is designed to be easy to use, you should read the
|
||||||
@@ -16,7 +16,7 @@ of WindowMaker that are not related to configuration.
|
|||||||
|
|
||||||
To run WPrefs, do not put it in your search path. Instead, run it
|
To run WPrefs, do not put it in your search path. Instead, run it
|
||||||
with the full path, like /usr/local/GNUstep/Applications/WPrefs.app/WPrefs
|
with the full path, like /usr/local/GNUstep/Applications/WPrefs.app/WPrefs
|
||||||
Then, dock it's application icon. The dock will automatically detect it's
|
Then, dock its application icon. The dock will automatically detect its
|
||||||
icon and use it.
|
icon and use it.
|
||||||
|
|
||||||
If you change configuration often, you might want to leave WPrefs
|
If you change configuration often, you might want to leave WPrefs
|
||||||
@@ -46,7 +46,7 @@ The mouse speed configuration is saved as a call for xset in
|
|||||||
~/G/D/L/W/autostart. WindowMaker calls this file when it is started.
|
~/G/D/L/W/autostart. WindowMaker calls this file when it is started.
|
||||||
|
|
||||||
If you don't want or can't use the menu definition section, do not
|
If you don't want or can't use the menu definition section, do not
|
||||||
open it's section (or if you do open it, do not Save), or WPrefs will
|
open its section (or if you do open it, do not Save), or WPrefs will
|
||||||
overwrite your ~/G/D/WMRootMenu file.
|
overwrite your ~/G/D/WMRootMenu file.
|
||||||
|
|
||||||
Only options that have different values than what is found in the
|
Only options that have different values than what is found in the
|
||||||
|
|||||||
@@ -689,7 +689,7 @@ static void changeTypeCallback(WMWidget *w, void *data)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
newType = WMGetPopUpButtonSelectedItem(w);
|
newType = WMGetPopUpButtonSelectedItem(w);
|
||||||
if (newType == panel->currentType)
|
if (newType < 0 || newType == panel->currentType)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (panel->currentType >= 0) {
|
if (panel->currentType >= 0) {
|
||||||
|
|||||||
@@ -575,6 +575,7 @@ void Initialize(WMScreen * scr)
|
|||||||
InitKeyboardSettings(WPrefs.banner);
|
InitKeyboardSettings(WPrefs.banner);
|
||||||
#endif
|
#endif
|
||||||
InitKeyboardShortcuts(WPrefs.banner);
|
InitKeyboardShortcuts(WPrefs.banner);
|
||||||
|
InitHotCornerShortcuts(WPrefs.banner);
|
||||||
InitMouseSettings(WPrefs.banner);
|
InitMouseSettings(WPrefs.banner);
|
||||||
|
|
||||||
InitAppearance(WPrefs.banner);
|
InitAppearance(WPrefs.banner);
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.5
|
||||||
|
Type=Application
|
||||||
|
Name=WPrefs
|
||||||
|
Comment=Window Maker Preferences
|
||||||
|
TryExec=#wprefs_bindir#/WPrefs
|
||||||
|
Exec=WPrefs
|
||||||
|
Icon=#wprefs_datadir#/WPrefs.xpm
|
||||||
|
Categories=Settings;DesktopSettings;
|
||||||
+2
-1
@@ -33,6 +33,7 @@
|
|||||||
#include <wraster.h>
|
#include <wraster.h>
|
||||||
|
|
||||||
#include <WINGs/WINGs.h>
|
#include <WINGs/WINGs.h>
|
||||||
|
#include <WINGs/WINGsP.h>
|
||||||
|
|
||||||
/* Needed for HAVE_LIBINTL_H and EXTENDED_WINDOWSHORTCUT */
|
/* Needed for HAVE_LIBINTL_H and EXTENDED_WINDOWSHORTCUT */
|
||||||
#include "../src/wconfig.h"
|
#include "../src/wconfig.h"
|
||||||
@@ -54,7 +55,6 @@
|
|||||||
/****/
|
/****/
|
||||||
|
|
||||||
extern char *NOptionValueChanged;
|
extern char *NOptionValueChanged;
|
||||||
extern Bool xext_xkb_supported;
|
|
||||||
|
|
||||||
typedef struct _Panel Panel;
|
typedef struct _Panel Panel;
|
||||||
|
|
||||||
@@ -155,6 +155,7 @@ Panel *InitDocks(WMWidget *parent);
|
|||||||
Panel *InitExpert(WMWidget *parent);
|
Panel *InitExpert(WMWidget *parent);
|
||||||
Panel *InitFocus(WMWidget *parent);
|
Panel *InitFocus(WMWidget *parent);
|
||||||
Panel *InitFontSimple(WMWidget *parent);
|
Panel *InitFontSimple(WMWidget *parent);
|
||||||
|
Panel *InitHotCornerShortcuts(WMWidget *parent);
|
||||||
Panel *InitIcons(WMWidget *parent);
|
Panel *InitIcons(WMWidget *parent);
|
||||||
Panel *InitKeyboardShortcuts(WMWidget *parent);
|
Panel *InitKeyboardShortcuts(WMWidget *parent);
|
||||||
Panel *InitMenu(WMWidget *parent);
|
Panel *InitMenu(WMWidget *parent);
|
||||||
|
|||||||
@@ -207,12 +207,15 @@ static void createPanel(Panel * p)
|
|||||||
|
|
||||||
static void storeData(_Panel * panel)
|
static void storeData(_Panel * panel)
|
||||||
{
|
{
|
||||||
|
int tmp = WMGetPopUpButtonSelectedItem(panel->posP);
|
||||||
|
|
||||||
|
if (tmp < 0)
|
||||||
|
return;
|
||||||
SetBoolForKey(!WMGetButtonSelected(panel->linkB), "DontLinkWorkspaces");
|
SetBoolForKey(!WMGetButtonSelected(panel->linkB), "DontLinkWorkspaces");
|
||||||
SetBoolForKey(WMGetButtonSelected(panel->cyclB), "CycleWorkspaces");
|
SetBoolForKey(WMGetButtonSelected(panel->cyclB), "CycleWorkspaces");
|
||||||
SetBoolForKey(WMGetButtonSelected(panel->newB), "AdvanceToNewWorkspace");
|
SetBoolForKey(WMGetButtonSelected(panel->newB), "AdvanceToNewWorkspace");
|
||||||
|
|
||||||
SetStringForKey(WSNamePositions[WMGetPopUpButtonSelectedItem(panel->posP)],
|
SetStringForKey(WSNamePositions[tmp], "WorkspaceNameDisplayPosition");
|
||||||
"WorkspaceNameDisplayPosition");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Panel *InitWorkspace(WMWidget *parent)
|
Panel *InitWorkspace(WMWidget *parent)
|
||||||
|
|||||||
@@ -1150,7 +1150,7 @@ static void dragItem(WEditMenu * menu, WEditMenuItem * item, Bool copy)
|
|||||||
static XColor back = { 0, 0xffff, 0xffff, 0xffff, DoRed | DoGreen | DoBlue, 0 };
|
static XColor back = { 0, 0xffff, 0xffff, 0xffff, DoRed | DoGreen | DoBlue, 0 };
|
||||||
Display *dpy = W_VIEW_DISPLAY(menu->view);
|
Display *dpy = W_VIEW_DISPLAY(menu->view);
|
||||||
WMScreen *scr = W_VIEW_SCREEN(menu->view);
|
WMScreen *scr = W_VIEW_SCREEN(menu->view);
|
||||||
int x, y;
|
int x = 0, y = 0;
|
||||||
int dx, dy;
|
int dx, dy;
|
||||||
Bool done = False;
|
Bool done = False;
|
||||||
Window blaw;
|
Window blaw;
|
||||||
|
|||||||
@@ -35,8 +35,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *NOptionValueChanged = "NOptionValueChanged";
|
char *NOptionValueChanged = "NOptionValueChanged";
|
||||||
Bool xext_xkb_supported = False;
|
|
||||||
|
|
||||||
|
|
||||||
#define MAX_DEATHS 64
|
#define MAX_DEATHS 64
|
||||||
|
|
||||||
@@ -157,8 +155,6 @@ int main(int argc, char **argv)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
xext_xkb_supported = XkbQueryExtension(dpy, NULL, NULL, NULL, NULL, NULL);
|
|
||||||
|
|
||||||
WMPLSetCaseSensitive(False);
|
WMPLSetCaseSensitive(False);
|
||||||
|
|
||||||
Initialize(scr);
|
Initialize(scr);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ CATALOGS = @WPREFSMOFILES@
|
|||||||
CLEANFILES = $(DOMAIN).pot $(CATALOGS)
|
CLEANFILES = $(DOMAIN).pot $(CATALOGS)
|
||||||
|
|
||||||
EXTRA_DIST = bg.po ca.po cs.po de.po es.po et.po fi.po fr.po fy.po hr.po hu.po \
|
EXTRA_DIST = bg.po ca.po cs.po de.po es.po et.po fi.po fr.po fy.po hr.po hu.po \
|
||||||
it.po ja.po ko.po nl.po pt.po ru.po sk.po uk.po zh_CN.po zh_TW.po
|
it.po ja.po ko.po nl.po pt.po ru.po sk.po tr.po uk.po zh_CN.po zh_TW.po
|
||||||
|
|
||||||
POTFILES = \
|
POTFILES = \
|
||||||
$(top_srcdir)/WPrefs.app/Appearance.c \
|
$(top_srcdir)/WPrefs.app/Appearance.c \
|
||||||
@@ -14,6 +14,7 @@ POTFILES = \
|
|||||||
$(top_srcdir)/WPrefs.app/Expert.c \
|
$(top_srcdir)/WPrefs.app/Expert.c \
|
||||||
$(top_srcdir)/WPrefs.app/Focus.c \
|
$(top_srcdir)/WPrefs.app/Focus.c \
|
||||||
$(top_srcdir)/WPrefs.app/FontSimple.c \
|
$(top_srcdir)/WPrefs.app/FontSimple.c \
|
||||||
|
$(top_srcdir)/WPrefs.app/HotCornerShortcuts.c \
|
||||||
$(top_srcdir)/WPrefs.app/Icons.c \
|
$(top_srcdir)/WPrefs.app/Icons.c \
|
||||||
$(top_srcdir)/WPrefs.app/KeyboardShortcuts.c \
|
$(top_srcdir)/WPrefs.app/KeyboardShortcuts.c \
|
||||||
$(top_srcdir)/WPrefs.app/Menu.c \
|
$(top_srcdir)/WPrefs.app/Menu.c \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
File Language Current Maintainer
|
File Language Current Maintainer
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
pt.po Portuguese Eliphas Levy Theodoro <eliphas@conectiva.com.br>
|
pt.po Portuguese Eliphas Levy Theodoro <eliphas@conectiva.com.br>
|
||||||
hr.po Croatian Toni Biliæ <tbilic@oliver.efos.hr>
|
hr.po Croatian Toni Biliæ <tbilic@oliver.efos.hr>
|
||||||
fr.po French Bastien NOCERA <hadess@writeme.com>
|
fr.po French Bastien NOCERA <hadess@writeme.com>
|
||||||
Hadess <hadess@infonie.fr>
|
Hadess <hadess@infonie.fr>
|
||||||
Antoine Hulin <antoine@origan.fdn.org>
|
Antoine Hulin <antoine@origan.fdn.org>
|
||||||
@@ -23,6 +23,6 @@ bg.po Bulgarian Slavei Karadjov <slaff@exco.net>
|
|||||||
Anton Zinoviev <zinoviev@debian.org>
|
Anton Zinoviev <zinoviev@debian.org>
|
||||||
sk.po Slovak Jan 'judas' Tomka <judas@linux.sk>
|
sk.po Slovak Jan 'judas' Tomka <judas@linux.sk>
|
||||||
et.po Estonian Ivar Smolin <okul@linux.ee>
|
et.po Estonian Ivar Smolin <okul@linux.ee>
|
||||||
ca.po Catalan Ernest Adrogué <eadrogue@gmx.net>
|
ca.po Catalan Ernest Adrogué <eadrogue@gmx.net>
|
||||||
nl.po Dutch Alwin <translations@ziggo.nl>
|
nl.po Dutch Alwin <translations@ziggo.nl>
|
||||||
fy.po Frisian Alwin <translations@ziggo.nl>
|
fy.po Frisian Alwin <translations@ziggo.nl>
|
||||||
|
|||||||
+1
-1
@@ -819,7 +819,7 @@ msgstr "Clip in den Vor-/Hintergrund"
|
|||||||
|
|
||||||
#: ../../WPrefs.app/KeyboardShortcuts.c:518
|
#: ../../WPrefs.app/KeyboardShortcuts.c:518
|
||||||
msgid "Toggle keyboard language"
|
msgid "Toggle keyboard language"
|
||||||
msgstr "Tastatursbelegung ändern"
|
msgstr "Tastaturbelegung ändern"
|
||||||
|
|
||||||
#: ../../WPrefs.app/KeyboardShortcuts.c:532
|
#: ../../WPrefs.app/KeyboardShortcuts.c:532
|
||||||
msgid "Shortcut"
|
msgid "Shortcut"
|
||||||
|
|||||||
+1
-1
@@ -1671,7 +1671,7 @@ msgstr "Keela tiitliriba"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Remove the titlebar of this window.\n"
|
"Remove the titlebar of this window.\n"
|
||||||
"To access the window commands menu of a window\n"
|
"To access the window commands menu of a window\n"
|
||||||
"without it's titlebar, press Control+Esc (or the\n"
|
"without its titlebar, press Control+Esc (or the\n"
|
||||||
"equivalent shortcut, if you changed the default\n"
|
"equivalent shortcut, if you changed the default\n"
|
||||||
"settings)."
|
"settings)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
+69
-18
@@ -380,45 +380,71 @@ msgstr ""
|
|||||||
"параметров и количества цветов для резервирования за\n"
|
"параметров и количества цветов для резервирования за\n"
|
||||||
"Window Maker'ом при работе с 8bit'ным цветом (8bpp)."
|
"Window Maker'ом при работе с 8bit'ным цветом (8bpp)."
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:75
|
#: ../../WPrefs.app/Expert.c:44
|
||||||
msgid ""
|
msgid "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME."
|
||||||
"Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME."
|
msgstr "Запретить миниокна иконки для минимизированных окон. Для использования с KDE/GNOME."
|
||||||
msgstr ""
|
|
||||||
"Запретить миниокна (иконки для минимизированных окон). Для использования с "
|
|
||||||
"KDE/GNOME."
|
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:76
|
#: ../../WPrefs.app/Expert.c:47
|
||||||
|
msgid "Ignore decoration hints for GTK applications."
|
||||||
|
msgstr "Игнорировать декорацию окон для GTK приложений."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:53
|
||||||
msgid "Do not set non-WindowMaker specific parameters (do not use xset)."
|
msgid "Do not set non-WindowMaker specific parameters (do not use xset)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Не устанавливать параметры, не относящиеся непосредственно к\n"
|
"Не устанавливать параметры, не относящиеся непосредственно к\n"
|
||||||
"Window Maker'у (не использовать xset)."
|
"Window Maker'у (не использовать xset)."
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:77
|
#: ../../WPrefs.app/Expert.c:56
|
||||||
msgid "Automatically save session when exiting Window Maker."
|
msgid "Automatically save session when exiting Window Maker."
|
||||||
msgstr "Автоматически сохранять сессию при выходе из Window Maker'а."
|
msgstr "Автоматически сохранять сессию при выходе из Window Maker'а."
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:78
|
#: ../../WPrefs.app/Expert.c:59
|
||||||
msgid "Use SaveUnder in window frames, icons, menus and other objects."
|
msgid "Use SaveUnder in window frames, icons, menus and other objects."
|
||||||
msgstr "Использовать SaveUnder для окон, иконок, меню и других объектов."
|
msgstr "Использовать SaveUnder для окон, иконок, меню и других объектов."
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:79
|
#: ../../WPrefs.app/Expert.c:62
|
||||||
msgid "Use Windoze style cycling."
|
|
||||||
msgstr "Переключение окон в стиле Windows"
|
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:80
|
|
||||||
msgid "Disable confirmation panel for the Kill command."
|
msgid "Disable confirmation panel for the Kill command."
|
||||||
msgstr "Запретить диалог подтверждения для команды `Убить'."
|
msgstr "Запретить диалог подтверждения для команды `Убить'."
|
||||||
|
|
||||||
# awn: FIXME: что это вообще значит?
|
|
||||||
#: ../../WPrefs.app/Expert.c:81
|
|
||||||
msgid "Disable selection animation for selected icons."
|
msgid "Disable selection animation for selected icons."
|
||||||
msgstr "Запретить анимацию выбора для выбранных иконок."
|
msgstr "Запретить анимацию выбора для выбранных иконок."
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:115
|
msgid "Show switch panel when cycling windows."
|
||||||
|
msgstr "Показывать панель переключения окон."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:68
|
||||||
|
msgid "Smooth font edges (needs restart)."
|
||||||
|
msgstr "Cглаживание шрифтов (требуется перезагрузка)."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:80
|
||||||
|
msgid "Show workspace title on Clip."
|
||||||
|
msgstr "Показывать имя рабочего места на скрепке."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:83
|
||||||
|
msgid "Highlight the icon of the application when it has the focus."
|
||||||
|
msgstr "Подсвечивание иконок при нажатии (в фокусе)."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:91
|
||||||
|
msgid "Maximize (snap) a window to edge or corner by dragging."
|
||||||
|
msgstr "Прилипания окон по краям и углам."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:100
|
||||||
|
msgid "Snapping a window to the top maximizes it to the full screen."
|
||||||
|
msgstr "Распахнуть окно при перетаскивании к верхнему краю."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:118
|
||||||
|
msgid "Double click on titlebar maximize a window to full screen."
|
||||||
|
msgstr "Распахнуть окно двойным щелчком."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:121
|
||||||
|
msgid "Close rootmenu when mouse (left or right) is clicked outside focus."
|
||||||
|
msgstr "Закрывать меню приложений правым или левым щелчком мыши вне фокуса."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Expert.c:328
|
||||||
msgid "Expert User Preferences"
|
msgid "Expert User Preferences"
|
||||||
msgstr "Установки для опытного пользователя"
|
msgstr "Установки для опытного пользователя"
|
||||||
|
|
||||||
#: ../../WPrefs.app/Expert.c:117
|
#: ../../WPrefs.app/Expert.c:330
|
||||||
msgid ""
|
msgid ""
|
||||||
"Options for people who know what they're doing...\n"
|
"Options for people who know what they're doing...\n"
|
||||||
"Also have some other misc. options."
|
"Also have some other misc. options."
|
||||||
@@ -623,6 +649,11 @@ msgstr ""
|
|||||||
"Параметры обработки иконок и миниокон. Размещение иконок,\n"
|
"Параметры обработки иконок и миниокон. Размещение иконок,\n"
|
||||||
"размер иконок, в каком стиле анимировать сворачивание."
|
"размер иконок, в каком стиле анимировать сворачивание."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/Icons.c:414
|
||||||
|
msgid "Single click activation"
|
||||||
|
msgstr "Одинарный щелчок мыши"
|
||||||
|
|
||||||
|
|
||||||
#: ../../WPrefs.app/imagebrowser.c:95
|
#: ../../WPrefs.app/imagebrowser.c:95
|
||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1901,6 +1932,10 @@ msgstr ""
|
|||||||
msgid "Resist"
|
msgid "Resist"
|
||||||
msgstr "Упираться"
|
msgstr "Упираться"
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/WindowHandling.c:406
|
||||||
|
msgid "Opaque Move/Resize"
|
||||||
|
msgstr "Перемещ/Измен.разм."
|
||||||
|
|
||||||
#: ../../WPrefs.app/WindowHandling.c:407
|
#: ../../WPrefs.app/WindowHandling.c:407
|
||||||
msgid "Attract"
|
msgid "Attract"
|
||||||
msgstr "Притягиваться"
|
msgstr "Притягиваться"
|
||||||
@@ -1923,6 +1958,22 @@ msgstr ""
|
|||||||
"Как обращаться с окнами. Начальное расположение окон.\n"
|
"Как обращаться с окнами. Начальное расположение окон.\n"
|
||||||
"Сопротивляемость границ. Сплошное/каркасное перемещение, и т.п."
|
"Сопротивляемость границ. Сплошное/каркасное перемещение, и т.п."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/WindowHandling.c:474
|
||||||
|
msgid "by keyboard"
|
||||||
|
msgstr "c помощ.клав."
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/WindowHandling.c:490
|
||||||
|
msgid "...do not cover:"
|
||||||
|
msgstr "не перекрывать:"
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/WindowHandling.c:497
|
||||||
|
msgid "Icons"
|
||||||
|
msgstr "Иконок"
|
||||||
|
|
||||||
|
#: ../../WPrefs.app/WindowHandling.c:502
|
||||||
|
msgid "The dock"
|
||||||
|
msgstr "Дока"
|
||||||
|
|
||||||
#: ../../WPrefs.app/Workspace.c:176
|
#: ../../WPrefs.app/Workspace.c:176
|
||||||
msgid "Workspace Navigation"
|
msgid "Workspace Navigation"
|
||||||
msgstr "Навигация по рабочим пространствам"
|
msgstr "Навигация по рабочим пространствам"
|
||||||
|
|||||||
+2627
File diff suppressed because it is too large
Load Diff
@@ -15,6 +15,7 @@ dist_tiffdata_DATA = \
|
|||||||
ergonomic.tiff \
|
ergonomic.tiff \
|
||||||
expert.tiff \
|
expert.tiff \
|
||||||
fonts.tiff \
|
fonts.tiff \
|
||||||
|
hotcorners.tiff \
|
||||||
iconprefs.tiff \
|
iconprefs.tiff \
|
||||||
keyboard.tiff \
|
keyboard.tiff \
|
||||||
keyboardprefs.tiff \
|
keyboardprefs.tiff \
|
||||||
|
|||||||
Binary file not shown.
@@ -171,10 +171,7 @@ static void x_reset_modifier_mapping(Display * display)
|
|||||||
KeySym sym;
|
KeySym sym;
|
||||||
|
|
||||||
if (code) {
|
if (code) {
|
||||||
if (xext_xkb_supported)
|
sym = W_KeycodeToKeysym(display, code, column);
|
||||||
sym = XkbKeycodeToKeysym(display, code, 0, column);
|
|
||||||
else
|
|
||||||
sym = XKeycodeToKeysym(display, code, column);
|
|
||||||
} else {
|
} else {
|
||||||
sym = NoSymbol;
|
sym = NoSymbol;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ dist_xpmdata_DATA = \
|
|||||||
ergonomic.xpm \
|
ergonomic.xpm \
|
||||||
expert.xpm \
|
expert.xpm \
|
||||||
fonts.xpm \
|
fonts.xpm \
|
||||||
|
hotcorners.xpm \
|
||||||
iconprefs.xpm \
|
iconprefs.xpm \
|
||||||
keyboard.xpm \
|
keyboard.xpm \
|
||||||
keyboardprefs.xpm \
|
keyboardprefs.xpm \
|
||||||
|
|||||||
@@ -0,0 +1,137 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * hotcorners_xpm[] = {
|
||||||
|
"48 48 86 1",
|
||||||
|
" c #2C2C2C",
|
||||||
|
". c #FEFEFE",
|
||||||
|
"+ c #505075",
|
||||||
|
"@ c #4E4E74",
|
||||||
|
"# c #515176",
|
||||||
|
"$ c #4B4B72",
|
||||||
|
"% c #494971",
|
||||||
|
"& c #515175",
|
||||||
|
"* c #4F4F74",
|
||||||
|
"= c #4C4C73",
|
||||||
|
"- c #696984",
|
||||||
|
"; c #545477",
|
||||||
|
"> c #5E5E7D",
|
||||||
|
", c #676783",
|
||||||
|
"' c #58587A",
|
||||||
|
") c #5B5B7C",
|
||||||
|
"! c #B1B1BB",
|
||||||
|
"~ c #A5A5B1",
|
||||||
|
"{ c #A1A1AE",
|
||||||
|
"] c #AEAEB9",
|
||||||
|
"^ c #79798F",
|
||||||
|
"/ c #5C5C7C",
|
||||||
|
"( c #D5D5DA",
|
||||||
|
"_ c #E6E6E9",
|
||||||
|
": c #E8E8EB",
|
||||||
|
"< c #EDEDEF",
|
||||||
|
"[ c #E7E7EA",
|
||||||
|
"} c #FDFDFD",
|
||||||
|
"| c #FFFFFF",
|
||||||
|
"1 c #EBEBEC",
|
||||||
|
"2 c #7F7F93",
|
||||||
|
"3 c #484871",
|
||||||
|
"4 c #7B7B85",
|
||||||
|
"5 c #EFEFEF",
|
||||||
|
"6 c #A6A6A6",
|
||||||
|
"7 c #292959",
|
||||||
|
"8 c #464670",
|
||||||
|
"9 c #8C8C96",
|
||||||
|
"0 c #F4F4F4",
|
||||||
|
"a c #F5F5F6",
|
||||||
|
"b c #F2F2F2",
|
||||||
|
"c c #9797A6",
|
||||||
|
"d c #474770",
|
||||||
|
"e c #4D4D73",
|
||||||
|
"f c #9393A3",
|
||||||
|
"g c #F4F4F5",
|
||||||
|
"h c #F3F3F3",
|
||||||
|
"i c #EBEBEE",
|
||||||
|
"j c #6D6D87",
|
||||||
|
"k c #9D9DAB",
|
||||||
|
"l c #F9F9F9",
|
||||||
|
"m c #F1F1F1",
|
||||||
|
"n c #A5A5A5",
|
||||||
|
"o c #EAEAEA",
|
||||||
|
"p c #6A6A86",
|
||||||
|
"q c #D3D3D6",
|
||||||
|
"r c #717171",
|
||||||
|
"s c #848484",
|
||||||
|
"t c #9F9FA3",
|
||||||
|
"u c #47476F",
|
||||||
|
"v c #323256",
|
||||||
|
"w c #9B9B9A",
|
||||||
|
"x c #888889",
|
||||||
|
"y c #000012",
|
||||||
|
"z c #6B6B6D",
|
||||||
|
"A c #757587",
|
||||||
|
"B c #46466D",
|
||||||
|
"C c #3B3B47",
|
||||||
|
"D c #2E2E50",
|
||||||
|
"E c #242447",
|
||||||
|
"F c #838383",
|
||||||
|
"G c #919191",
|
||||||
|
"H c #202041",
|
||||||
|
"I c #4F4F73",
|
||||||
|
"J c #4E4E72",
|
||||||
|
"K c #232343",
|
||||||
|
"L c #4F4F4F",
|
||||||
|
"M c #252548",
|
||||||
|
"N c #505074",
|
||||||
|
"O c #3A3A57",
|
||||||
|
"P c #404060",
|
||||||
|
"Q c #505076",
|
||||||
|
"R c #49496B",
|
||||||
|
"S c #31314E",
|
||||||
|
"T c #2F2F49",
|
||||||
|
"U c #434362",
|
||||||
|
" .",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++@#$%&*=+++++++++++++++++++++++++++%-;>,')@++.",
|
||||||
|
" ++)!~{]]^@++++++++++++++++++++++++++/(_:<[!#++.",
|
||||||
|
" ++'[.}|12*++++++++++++++++++++++++++345||.~$++.",
|
||||||
|
" ++,<||}67+++++++++++++++++++++++++++890||}{%++a",
|
||||||
|
" ++>:|||bcd+++++++++++++++++++++++++efg||}|]&++.",
|
||||||
|
" ++;_5h||ij+++++++++++++++++++++++++@kl|mno]*++.",
|
||||||
|
" ++pqrshltu++++++++++++++++++++++++++vwoxyzAe++.",
|
||||||
|
" ++BCDEFGHI++++++++++++++++++++++++++JKLMNOP+++.",
|
||||||
|
" ++QR+*STJ++++++++++++++++++++++++++++JU*++++++.",
|
||||||
|
" +++++++*++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++QR+*STJ++++++++++++++++++++++++++++JTS*+RQ++.",
|
||||||
|
" ++BCDEFGHI++++++++++++++++++++++++++IHGFEDCB++.",
|
||||||
|
" ++pqrshltu++++++++++++++++++++++++++utlhsrqp++.",
|
||||||
|
" ++;_5h||ij++++++++++++++++++++++++++ji||h5_;++.",
|
||||||
|
" ++>:|||bcd++++++++++++++++++++++++++dcb|||:>++.",
|
||||||
|
" ++,<||}67++++++++++++++++++++++++++++76}||<,++.",
|
||||||
|
" ++'[.}|12*++++++++++++++++++++++++++*21|}.['++.",
|
||||||
|
" ++)!~{]]^@++++++++++++++++++++++++++@^]]{~!)++.",
|
||||||
|
" ++@#$%&*=++++++++++++++++++++++++++++=*&%$#@++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
"................................................"};
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
static char *magick[] = {
|
static char *magick[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"50 40 95 2",
|
"50 40 95 2",
|
||||||
" c Gray0",
|
" c #000000",
|
||||||
". c #010101",
|
". c #010101",
|
||||||
"X c Gray2",
|
"X c #050505",
|
||||||
"o c #040406",
|
"o c #040406",
|
||||||
"O c #070707",
|
"O c #070707",
|
||||||
"+ c #0a0a0d",
|
"+ c #0a0a0d",
|
||||||
@@ -20,14 +20,14 @@ static char *magick[] = {
|
|||||||
": c #4e4e4e",
|
": c #4e4e4e",
|
||||||
"> c #505055",
|
"> c #505055",
|
||||||
", c #585858",
|
", c #585858",
|
||||||
"< c Gray37",
|
"< c #5e5e5e",
|
||||||
"1 c #494d62",
|
"1 c #494d62",
|
||||||
"2 c #545066",
|
"2 c #545066",
|
||||||
"3 c #57556f",
|
"3 c #57556f",
|
||||||
"4 c #5d627c",
|
"4 c #5d627c",
|
||||||
"5 c #604e42",
|
"5 c #604e42",
|
||||||
"6 c Gray39",
|
"6 c #636363",
|
||||||
"7 c Gray41",
|
"7 c #696969",
|
||||||
"8 c #646475",
|
"8 c #646475",
|
||||||
"9 c #7e6a63",
|
"9 c #7e6a63",
|
||||||
"0 c #75746d",
|
"0 c #75746d",
|
||||||
@@ -67,36 +67,36 @@ static char *magick[] = {
|
|||||||
"D c #989799",
|
"D c #989799",
|
||||||
"F c #9b9b9b",
|
"F c #9b9b9b",
|
||||||
"G c #999e98",
|
"G c #999e98",
|
||||||
"H c Gray62",
|
"H c #9e9e9e",
|
||||||
"J c #9e9f9f",
|
"J c #9e9f9f",
|
||||||
"K c #8d8cba",
|
"K c #8d8cba",
|
||||||
"L c #9995a0",
|
"L c #9995a0",
|
||||||
"P c #a2a2a3",
|
"P c #a2a2a3",
|
||||||
"I c #a7a7a8",
|
"I c #a7a7a8",
|
||||||
"U c Gray66",
|
"U c #a8a8a8",
|
||||||
"Y c #acacac",
|
"Y c #acacac",
|
||||||
"T c Gray68",
|
"T c #adadad",
|
||||||
"R c Gray69",
|
"R c #b0b0b0",
|
||||||
"E c #b2b2b2",
|
"E c #b2b2b2",
|
||||||
"W c #b4b4b4",
|
"W c #b4b4b4",
|
||||||
"Q c Gray71",
|
"Q c #b5b5b5",
|
||||||
"! c #b9b9b9",
|
"! c #b9b9b9",
|
||||||
"~ c Gray73",
|
"~ c #bababa",
|
||||||
"^ c #bbbbbb",
|
"^ c #bbbbbb",
|
||||||
"/ c #a7a7c5",
|
"/ c #a7a7c5",
|
||||||
"( c #acadcf",
|
"( c #acadcf",
|
||||||
") c #c0c0c0",
|
") c #c0c0c0",
|
||||||
"_ c #c3c3c3",
|
"_ c #c3c3c3",
|
||||||
"` c #c8c8c8",
|
"` c #c8c8c8",
|
||||||
"' c Gray79",
|
"' c #c9c9c9",
|
||||||
"] c Gray80",
|
"] c #cccccc",
|
||||||
"[ c #dfdfdf",
|
"[ c #dfdfdf",
|
||||||
"{ c #e2e2e2",
|
"{ c #e2e2e2",
|
||||||
"} c Gray91",
|
"} c #e8e8e8",
|
||||||
"| c #e9e9e9",
|
"| c #e9e9e9",
|
||||||
" . c Gray95",
|
" . c #f2f2f2",
|
||||||
".. c #fbfbfb",
|
".. c #fbfbfb",
|
||||||
"X. c Gray100",
|
"X. c #ffffff",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
"$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ } ",
|
"$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ } ",
|
||||||
"$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } } } } } } } } ",
|
"$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } } } } } } } } ",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
defsdatadir = $(pkgdatadir)/Backgrounds
|
bgdatadir = $(pkgdatadir)/Backgrounds
|
||||||
|
|
||||||
defsdata_DATA = BlueImage.jpeg
|
bgdata_DATA = BlueImage.jpeg
|
||||||
|
|
||||||
EXTRA_DIST = $(defsdata_DATA)
|
EXTRA_DIST = $(bgdata_DATA)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
defsdata_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL
|
pkgconf_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL
|
||||||
|
|
||||||
wpexecbindir = @wprefs_bindir@
|
wpexecbindir = @wprefs_bindir@
|
||||||
|
|
||||||
|
|||||||
@@ -106,6 +106,7 @@
|
|||||||
SwitchPanelOnlyOpen = NO;
|
SwitchPanelOnlyOpen = NO;
|
||||||
MiniPreviewSize = 128;
|
MiniPreviewSize = 128;
|
||||||
IgnoreGtkHints = NO;
|
IgnoreGtkHints = NO;
|
||||||
|
KeepDockOnPrimaryHead = NO;
|
||||||
MenuStyle = normal;
|
MenuStyle = normal;
|
||||||
WidgetColor = (solid, gray);
|
WidgetColor = (solid, gray);
|
||||||
WorkspaceSpecificBack = ();
|
WorkspaceSpecificBack = ();
|
||||||
@@ -170,10 +171,10 @@
|
|||||||
RHMaximizeKey = None;
|
RHMaximizeKey = None;
|
||||||
THMaximizeKey = None;
|
THMaximizeKey = None;
|
||||||
BHMaximizeKey = None;
|
BHMaximizeKey = None;
|
||||||
LTCMaximizeKey = None;
|
TLCMaximizeKey = None;
|
||||||
RTCMaximizeKey = None;
|
TRCMaximizeKey = None;
|
||||||
LBCMaximizeKey = None;
|
BLCMaximizeKey = None;
|
||||||
RBCMaximizeKey = None;
|
BRCMaximizeKey = None;
|
||||||
MaximusKey = None;
|
MaximusKey = None;
|
||||||
KeepOnTopKey = None;
|
KeepOnTopKey = None;
|
||||||
KeepAtBottomKey = None;
|
KeepAtBottomKey = None;
|
||||||
@@ -231,6 +232,10 @@
|
|||||||
WindowRelaunchKey = None;
|
WindowRelaunchKey = None;
|
||||||
ScreenSwitchKey = None;
|
ScreenSwitchKey = None;
|
||||||
RunKey = None;
|
RunKey = None;
|
||||||
|
ExitKey = None;
|
||||||
|
ScreenCaptureKey = Print;
|
||||||
|
WindowCaptureKey = None;
|
||||||
|
PartialCaptureKey = None;
|
||||||
NormalCursor = (builtin, left_ptr);
|
NormalCursor = (builtin, left_ptr);
|
||||||
ArrowCursor = (builtin, top_left_arrow);
|
ArrowCursor = (builtin, top_left_arrow);
|
||||||
MoveCursor = (builtin, fleur);
|
MoveCursor = (builtin, fleur);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
defsdatadir = $(pkgdatadir)/IconSets
|
iconsetdatadir = $(pkgdatadir)/IconSets
|
||||||
|
|
||||||
defsdata_DATA = Default.iconset
|
iconsetdata_DATA = Default.iconset
|
||||||
|
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
defsdatadir = $(pkgdatadir)/Icons
|
icondatadir = $(pkgdatadir)/Icons
|
||||||
|
|
||||||
|
|
||||||
defsdata_DATA = \
|
icondata_DATA = \
|
||||||
BitchX.tiff\
|
BitchX.tiff\
|
||||||
BitchX.xpm\
|
BitchX.xpm\
|
||||||
clip.tiff\
|
clip.tiff\
|
||||||
@@ -74,5 +74,5 @@ defsdata_DATA = \
|
|||||||
xv.xpm
|
xv.xpm
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST = $(defsdata_DATA)
|
EXTRA_DIST = $(icondata_DATA)
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,10 @@ dist_prefsdata_DATA =\
|
|||||||
|
|
||||||
nodist_prefsdata_DATA = $(GENERATED_MENUS)
|
nodist_prefsdata_DATA = $(GENERATED_MENUS)
|
||||||
|
|
||||||
EXTRA_DIST = $(addsuffix .in, $(GENERATED_MENUS))
|
xsessionsdir = @datadir@/xsessions
|
||||||
|
xsessions_DATA = wmaker.desktop
|
||||||
|
|
||||||
|
EXTRA_DIST = $(addsuffix .in, $(GENERATED_MENUS)) wmaker.desktop
|
||||||
|
|
||||||
CLEANFILES = $(GENERATED_MENUS)
|
CLEANFILES = $(GENERATED_MENUS)
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
defsdatadir = $(pkgdatadir)/Pixmaps
|
pixmapdatadir = $(pkgdatadir)/Pixmaps
|
||||||
|
|
||||||
defsdata_DATA = tile.tiff \
|
pixmapdata_DATA = tile.tiff \
|
||||||
tile.xpm \
|
tile.xpm \
|
||||||
swtile.png \
|
swtile.png \
|
||||||
swback.png \
|
swback.png \
|
||||||
swback2.png
|
swback2.png
|
||||||
|
|
||||||
EXTRA_DIST = $(defsdata_DATA)
|
EXTRA_DIST = $(pixmapdata_DATA)
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ static char *magick[] = {
|
|||||||
". c #ededee",
|
". c #ededee",
|
||||||
"X c #e7e7e7",
|
"X c #e7e7e7",
|
||||||
"o c #e2e2e2",
|
"o c #e2e2e2",
|
||||||
"O c gray87",
|
"O c #dedede",
|
||||||
"+ c gray85",
|
"+ c #d9d9d9",
|
||||||
"@ c gray76",
|
"@ c #c2c2c2",
|
||||||
"# c #010101",
|
"# c #010101",
|
||||||
"$ c #4d505a",
|
"$ c #4d505a",
|
||||||
"% c #e0e0e6",
|
"% c #e0e0e6",
|
||||||
|
|||||||
+3
-3
@@ -36,7 +36,7 @@ menu.ja Japanese MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>
|
|||||||
ABE Shige <sabe@ibm.net>
|
ABE Shige <sabe@ibm.net>
|
||||||
menu.pt Portuguese Alfredo K. Kojima <kojima@inf.ufrgs.br>
|
menu.pt Portuguese Alfredo K. Kojima <kojima@inf.ufrgs.br>
|
||||||
menu.de German Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
|
menu.de German Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
|
||||||
menu.cz Czech David ©auer <xsauer@hwlab.felk.cvut.cz>
|
menu.cz Czech David ©auer <xsauer@hwlab.felk.cvut.cz>
|
||||||
menu.ko Korean Chae-Yong Chong <cychong@metro.telecom.samsung.co.kr>
|
menu.ko Korean Chae-Yong Chong <cychong@metro.telecom.samsung.co.kr>
|
||||||
Byeong-Chan Kim <redhands@linux.sarang.net>
|
Byeong-Chan Kim <redhands@linux.sarang.net>
|
||||||
menu.gl Galician Xose Vazquez <xose@arrakis.es>
|
menu.gl Galician Xose Vazquez <xose@arrakis.es>
|
||||||
@@ -44,7 +44,7 @@ menu.fr French ObiTuarY <obituary@freshmeat.net>
|
|||||||
menu.it Italian Roberto Checozzo <croberto@aerre.it>
|
menu.it Italian Roberto Checozzo <croberto@aerre.it>
|
||||||
menu.ru Russian August S.Sigov <freedomain@actor.ru>
|
menu.ru Russian August S.Sigov <freedomain@actor.ru>
|
||||||
menu.es Spanish Rodrigo Hornos Prados <tnetrhp@ctv.es>
|
menu.es Spanish Rodrigo Hornos Prados <tnetrhp@ctv.es>
|
||||||
José Luis Rivas López <jrivas@ares.ipf.uvigo.es>
|
José Luis Rivas López <jrivas@ares.ipf.uvigo.es>
|
||||||
menu.he Hebrew Please send me your name/email if you wrote this
|
menu.he Hebrew Please send me your name/email if you wrote this
|
||||||
We unfortunately lost that info :(
|
We unfortunately lost that info :(
|
||||||
menu.tr Turkish F. Kagan Gurkaynak <kgf@wpi.edu>
|
menu.tr Turkish F. Kagan Gurkaynak <kgf@wpi.edu>
|
||||||
@@ -56,7 +56,7 @@ menu.dk Danish John M. Lockard <jlockard@math.lsa.umich.edu>
|
|||||||
Jacob Sparre Andersen <sparre@cats.nbi.dk>
|
Jacob Sparre Andersen <sparre@cats.nbi.dk>
|
||||||
menu.sl Slovene Alen Salamun <snowman@hal9000.medinet.si>
|
menu.sl Slovene Alen Salamun <snowman@hal9000.medinet.si>
|
||||||
menu.hu Hungarian Csanaki Csaba <prew@mail.matav.hu>
|
menu.hu Hungarian Csanaki Csaba <prew@mail.matav.hu>
|
||||||
menu.ca Català Carles Amig<F3> dj_fr3nd@hotmail.com
|
menu.ca Català Carles Amig<F3> dj_fr3nd@hotmail.com
|
||||||
menu.zh_TW.Big5 Chinese Li Wei Jih <lwj83@cs.ccu.edu.tw>
|
menu.zh_TW.Big5 Chinese Li Wei Jih <lwj83@cs.ccu.edu.tw>
|
||||||
menu.zh_CN Chinese Wang Jian <wangjian2@asiainfo.com>
|
menu.zh_CN Chinese Wang Jian <wangjian2@asiainfo.com>
|
||||||
menu.pl Polish Maciej Friedel <tytus@tytus.itma.pwr.wroc.pl>
|
menu.pl Polish Maciej Friedel <tytus@tytus.itma.pwr.wroc.pl>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
prefsdatadir = $(pkgdatadir)/Styles
|
styledatadir = $(pkgdatadir)/Styles
|
||||||
|
|
||||||
prefsdata_DATA =\
|
styledata_DATA =\
|
||||||
Adwaita.style\
|
Adwaita.style\
|
||||||
Autumn.style\
|
Autumn.style\
|
||||||
Black.style\
|
Black.style\
|
||||||
@@ -39,6 +39,6 @@ prefsdata_DATA =\
|
|||||||
Traditional.style\
|
Traditional.style\
|
||||||
VioletBlue.style
|
VioletBlue.style
|
||||||
|
|
||||||
EXTRA_DIST = $(prefsdata_DATA)
|
EXTRA_DIST = $(styledata_DATA)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
defsdatadir = $(pkgdatadir)/Themes
|
themesdatadir = $(pkgdatadir)/Themes
|
||||||
|
|
||||||
defsdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style Blau.style
|
themesdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style Blau.style
|
||||||
|
|
||||||
EXTRA_DIST = $(defsdata_DATA)
|
EXTRA_DIST = $(themesdata_DATA)
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
* // it in current position
|
* // it in current position
|
||||||
* OPEN_MENU file.menu
|
* OPEN_MENU file.menu
|
||||||
* 2. Pipe menu handling.
|
* 2. Pipe menu handling.
|
||||||
* // opens command and uses it's stdout to construct menu.
|
* // opens command and uses its stdout to construct menu.
|
||||||
* // Command's output must be a valid menu description.
|
* // Command's output must be a valid menu description.
|
||||||
* // The space between '|' and command itself is optional.
|
* // The space between '|' and command itself is optional.
|
||||||
* OPEN_MENU | command
|
* OPEN_MENU | command
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@
|
|||||||
* // it in current position
|
* // it in current position
|
||||||
* OPEN_MENU file.menu
|
* OPEN_MENU file.menu
|
||||||
* 2. Pipe menu handling.
|
* 2. Pipe menu handling.
|
||||||
* // opens command and uses it's stdout to construct menu.
|
* // opens command and uses its stdout to construct menu.
|
||||||
* // Command's output must be a valid menu description.
|
* // Command's output must be a valid menu description.
|
||||||
* // The space between '|' and command itself is optional.
|
* // The space between '|' and command itself is optional.
|
||||||
* OPEN_MENU | command
|
* OPEN_MENU | command
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@
|
|||||||
* // it in current position
|
* // it in current position
|
||||||
* OPEN_MENU file.menu
|
* OPEN_MENU file.menu
|
||||||
* 2. Pipe menu handling.
|
* 2. Pipe menu handling.
|
||||||
* // opens command and uses it's stdout to construct menu.
|
* // opens command and uses its stdout to construct menu.
|
||||||
* // Command's output must be a valid menu description.
|
* // Command's output must be a valid menu description.
|
||||||
* // The space between '|' and command itself is optional.
|
* // The space between '|' and command itself is optional.
|
||||||
* OPEN_MENU | command
|
* OPEN_MENU | command
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
* // it in current position
|
* // it in current position
|
||||||
* OPEN_MENU file.menu
|
* OPEN_MENU file.menu
|
||||||
* 2. Pipe menu handling.
|
* 2. Pipe menu handling.
|
||||||
* // opens command and uses it's stdout to construct menu.
|
* // opens command and uses its stdout to construct menu.
|
||||||
* // Command's output must be a valid menu description.
|
* // Command's output must be a valid menu description.
|
||||||
* // The space between '|' and command itself is optional.
|
* // The space between '|' and command itself is optional.
|
||||||
* OPEN_MENU | command
|
* OPEN_MENU | command
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user