mirror of
https://github.com/gryf/wmaker.git
synced 2026-07-09 20:26:37 +02:00
Compare commits
424 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 | |||
| f9bc310fa6 | |||
| 58249c2b9b | |||
| bb716a4ca1 | |||
| 91f8e21668 | |||
| 5f18f60fd2 | |||
| a215869067 | |||
| 909deea70c | |||
| 984a992d0e | |||
| e82d86813e | |||
| d9bc96e497 | |||
| a7baed6cf7 | |||
| a12f0d453a | |||
| 41193bdacd | |||
| a7f8e990db | |||
| b59273f199 | |||
| be922384ac | |||
| 31f16b65a3 | |||
| 3665410377 | |||
| 4477ae4da4 | |||
| 9330a021e5 | |||
| 41ab926090 | |||
| b32ccee5cb | |||
| 6734646265 | |||
| 6a044fe5ae | |||
| 6dd1498f7c | |||
| 090b761fde | |||
| 49db946aa2 | |||
| a2cc89dd3d | |||
| de09ac5dad | |||
| 3dce639aae | |||
| 00dffbe317 | |||
| 7759d06851 | |||
| bf644338e4 | |||
| 95561fba08 | |||
| a0b223263e | |||
| 2555413838 | |||
| 3e3f06a7be | |||
| 1f80c82091 | |||
| fb5f6c30c0 | |||
| 972d85610a | |||
| f0f95165e4 | |||
| f895b906a4 | |||
| 5ab9b7c6be | |||
| 1e490f8233 | |||
| ba3df2599d | |||
| c803218ed1 | |||
| 6c6853ea30 | |||
| b48b503eb1 | |||
| 1c8b680e3d | |||
| 5eeaf6b890 | |||
| f9236c8d20 | |||
| 26bb94a8e7 | |||
| b185d46286 | |||
| 8f29bdc690 | |||
| e2cfed3377 | |||
| 4665972175 | |||
| 8606ae9a83 | |||
| 070f0ad8f4 | |||
| 2913ac0f09 | |||
| dae63b5e96 | |||
| 738a78b3e2 | |||
| 1dace5699f | |||
| 5a95631091 | |||
| 2427200c3e | |||
| d6c1ac3ecf | |||
| 9b5eaa3d3e | |||
| 2beb5f2c52 | |||
| f1809a7786 | |||
| 8b919b0d33 | |||
| d13b78bdde | |||
| 6668715402 | |||
| 100745d356 | |||
| 7c89ca2551 | |||
| 0c737bc834 | |||
| b3f8d0997b | |||
| 673ea18020 | |||
| c89ec25c80 | |||
| 569fbff07c | |||
| 36879de261 | |||
| bfd88e07e6 | |||
| 81b89f6a4c | |||
| 6cfc71d40a | |||
| ccc676a2bf | |||
| 2dbd778ed4 | |||
| f63635dd17 | |||
| 97702618de | |||
| b68a1994c2 | |||
| fe459fbab3 | |||
| 5f2dac318c | |||
| bfda22ef1a | |||
| 46daa76f77 | |||
| 02cc702029 | |||
| 6f195b18fc | |||
| 101ef6f28e | |||
| 5a5595f76c | |||
| 1a5abe9d84 | |||
| d364afff02 | |||
| 273d17a0be | |||
| d6f754e747 | |||
| b07075aed3 | |||
| ad4545b1d8 | |||
| ee36395ddf | |||
| ff865c31f0 | |||
| adc1687f98 | |||
| ac0690b324 | |||
| c261f8ec35 | |||
| e037ae3684 | |||
| 83f0b764e6 | |||
| 3140c09240 | |||
| 8fba9945e0 | |||
| 30cd22859a | |||
| e13cfcd093 | |||
| c2a03a3de5 | |||
| db6b50e6c1 | |||
| fa8121ee61 | |||
| f6320d4fa5 | |||
| cea5f6107c | |||
| 5d643a67dd | |||
| 9087222d1e | |||
| dede386b3d | |||
| b2b2ebad4c | |||
| d4a0b2f115 | |||
| 2411298ff6 | |||
| cdaa7a4520 | |||
| 7df224440b | |||
| 01ad3ead5d | |||
| 6fa1c0c009 | |||
| ac92f1a844 | |||
| 21d3fadebb | |||
| 3986629590 | |||
| c052addd1d | |||
| 6e4698fe11 | |||
| 3617e4c20c | |||
| f3fdf0b8dd | |||
| 9328ba5b3c | |||
| c9fbcda0b0 | |||
| eadb7f3ab2 | |||
| 9e7987713f | |||
| 62d62eebf1 | |||
| 160f879cce | |||
| 28da4c98e3 | |||
| 17a47af160 | |||
| 014a315f3a | |||
| e2f8525728 | |||
| 002d415d02 | |||
| 92bc458fac | |||
| 6f3dbfeaba | |||
| 3426f8110b | |||
| f9b2cf9747 | |||
| ad590811f6 | |||
| d48a37060c | |||
| 23417d9934 | |||
| 5561199c87 | |||
| 6429847494 | |||
| b7a1528833 | |||
| 2ea6162629 | |||
| 5a730d63b2 | |||
| fd31b29d0d | |||
| ebf2801f4a | |||
| 8b46f16205 | |||
| 2da2045efa | |||
| 67e9e7e554 | |||
| 4f18b3e1f4 | |||
| cb1760dc0b | |||
| 9f7e51e66d | |||
| bf6f81434b | |||
| af892d7dd6 | |||
| 7fa14a0137 | |||
| 51d36afc8f | |||
| 84727563f9 | |||
| c7c0b43629 | |||
| ac33bb9d1b | |||
| 563cda28d3 | |||
| 65802d3402 | |||
| 9de5a27dbc | |||
| 42e4069541 | |||
| e5632a9120 | |||
| c3ad2513a9 | |||
| 7277787110 | |||
| 2f33b3c2bc | |||
| fd19456d66 | |||
| 688c2277d7 | |||
| 755ce07d76 | |||
| fc6ed78654 | |||
| c11b08d42b | |||
| f7e1f5d5f4 | |||
| 4660e5b1eb | |||
| f58cf6a8cd | |||
| 15ae70b159 | |||
| 88393f4a6c | |||
| 1f74d4698c | |||
| 97189ce2cc | |||
| 2fec5f9f28 | |||
| 7a2eb68aa4 | |||
| 8a822004ee | |||
| 54db8d6c43 | |||
| e11800652e | |||
| b2c5078987 | |||
| 9c4b19d8aa | |||
| b281587397 | |||
| 7e42fedcbb | |||
| c84e787a24 |
+43
@@ -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
|
||||||
@@ -87,11 +89,52 @@ WINGs/WUtil.pc
|
|||||||
|
|
||||||
wrlib/libwraster.map
|
wrlib/libwraster.map
|
||||||
|
|
||||||
|
WindowMaker/appearance.menu
|
||||||
|
WindowMaker/menu
|
||||||
|
WindowMaker/menu.bg
|
||||||
|
WindowMaker/menu.fi
|
||||||
|
WindowMaker/menu.fy
|
||||||
|
WindowMaker/menu.hu
|
||||||
|
WindowMaker/menu.ko
|
||||||
|
WindowMaker/menu.nl
|
||||||
|
WindowMaker/menu.ro
|
||||||
|
WindowMaker/menu.sk
|
||||||
|
WindowMaker/menu.zh_TW
|
||||||
|
WindowMaker/plmenu
|
||||||
|
WindowMaker/plmenu.bg
|
||||||
|
WindowMaker/plmenu.es
|
||||||
|
WindowMaker/plmenu.fi
|
||||||
|
WindowMaker/plmenu.fy
|
||||||
|
WindowMaker/plmenu.ja
|
||||||
|
WindowMaker/plmenu.ko
|
||||||
|
WindowMaker/plmenu.nl
|
||||||
|
WindowMaker/plmenu.pl
|
||||||
|
WindowMaker/plmenu.ro
|
||||||
|
WindowMaker/plmenu.sk
|
||||||
|
WindowMaker/plmenu.zh_CN
|
||||||
|
WindowMaker/plmenu.zh_TW
|
||||||
|
WindowMaker/wmmacros
|
||||||
|
|
||||||
|
|
||||||
WindowMaker/Defaults/WMRootMenu
|
WindowMaker/Defaults/WMRootMenu
|
||||||
WindowMaker/Defaults/WMState
|
WindowMaker/Defaults/WMState
|
||||||
WindowMaker/Defaults/WMWindowAttributes
|
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
|
||||||
*~
|
*~
|
||||||
|
|
||||||
|
.pc
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ various fixes/enhancements to WINGs
|
|||||||
|
|
||||||
|
|
||||||
Yoav Yerushalmi <yoav@mit.edu>
|
Yoav Yerushalmi <yoav@mit.edu>
|
||||||
Fixed -visualid for screens that can do multiple depths. Another fix in
|
Fixed -visualid for screens that can do multiple depths. Another fix in
|
||||||
libproplist. Chooses best depth in screen.
|
libproplist. Chooses best depth in screen.
|
||||||
|
|
||||||
FRBall <frb@umr.edu>
|
FRBall <frb@umr.edu>
|
||||||
@@ -218,7 +218,7 @@ dgradient fix
|
|||||||
|
|
||||||
|
|
||||||
"]d" <id@windowmaker.info>
|
"]d" <id@windowmaker.info>
|
||||||
Window list menu miniaturized/hidden hints, XDE support, XKB lock
|
Window list menu miniaturized/hidden hints, XDE support, XKB lock
|
||||||
language status, WINGs enhancements, bug fixes, window commands menu
|
language status, WINGs enhancements, bug fixes, window commands menu
|
||||||
enhancement, window move/resize by keyboard. GNUstepGlow.tiff icon,
|
enhancement, window move/resize by keyboard. GNUstepGlow.tiff icon,
|
||||||
WINGs color panel, Appearance section icon(s)
|
WINGs color panel, Appearance section icon(s)
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
|
||||||
If you find a bug please fill this form and send it to
|
If you find a bug please fill this form and send it to
|
||||||
wmaker-dev@lists.windowmaker.org Please, USE THIS FORM!!!
|
wmaker-dev@googlegroups.com Please, USE THIS FORM!!!
|
||||||
|
|
||||||
0. Before reporting this bug I already:
|
0. Before reporting this bug I already:
|
||||||
[ ] read the NEWS, README and INSTALL files
|
[ ] read the NEWS, README and INSTALL files
|
||||||
@@ -16,8 +16,8 @@ wmaker-dev@lists.windowmaker.org Please, USE THIS FORM!!!
|
|||||||
[ ] crashed
|
[ ] crashed
|
||||||
[ ] configuration option does not work
|
[ ] configuration option does not work
|
||||||
[ ] weird behavior
|
[ ] weird behavior
|
||||||
[ ] cosmetic
|
[ ] cosmetic
|
||||||
[ ] some problem with WPrefs
|
[ ] some problem with WPrefs
|
||||||
[ ] others: ...................................
|
[ ] others: ...................................
|
||||||
|
|
||||||
2. Detailed description of what happened:
|
2. Detailed description of what happened:
|
||||||
@@ -28,7 +28,7 @@ wmaker-dev@lists.windowmaker.org Please, USE THIS FORM!!!
|
|||||||
|
|
||||||
4. Configure time options you specified:
|
4. Configure time options you specified:
|
||||||
[ ] --enable-kanji
|
[ ] --enable-kanji
|
||||||
[ ] --disable-shape
|
[ ] --disable-shape
|
||||||
[ ] --enable-single-icon
|
[ ] --enable-single-icon
|
||||||
[ ] --enable-modelock
|
[ ] --enable-modelock
|
||||||
[ ] Others: .......................
|
[ ] Others: .......................
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Newly added
|
Newly added
|
||||||
- after a crash, wmaker will forget the hidden state of the apps and just
|
- after a crash, wmaker will forget the hidden state of the apps and just
|
||||||
show their windows minimized. normal restart is unaffected
|
show their windows minimized. normal restart is unaffected
|
||||||
- after a crash, wmaker will completely mess the window's saved geometries
|
- after a crash, wmaker will completely mess the window's saved geometries
|
||||||
and maximizing will have weird results. restart is unaffected
|
and maximizing will have weird results. restart is unaffected
|
||||||
@@ -16,7 +16,7 @@ Newly added
|
|||||||
in the session/allow docking it if yes.
|
in the session/allow docking it if yes.
|
||||||
- the SHELL environment variable support in the apps menu was removed
|
- the SHELL environment variable support in the apps menu was removed
|
||||||
because of a problem with tcsh. If ~/.tcshrc contains "stty erase ^H",
|
because of a problem with tcsh. If ~/.tcshrc contains "stty erase ^H",
|
||||||
it will block and the cmd will not be executed.
|
it will block and the cmd will not be executed.
|
||||||
- mouse grab being done in client window (in wWindowResetMouseGrabs())
|
- mouse grab being done in client window (in wWindowResetMouseGrabs())
|
||||||
instead of the frame window. If grab is done in frame, titlebar buttons
|
instead of the frame window. If grab is done in frame, titlebar buttons
|
||||||
dont work well
|
dont work well
|
||||||
|
|||||||
+1
-1
@@ -51,4 +51,4 @@ of this license document, but changing it is not allowed.
|
|||||||
Ok, the purpose of this license is simple
|
Ok, the purpose of this license is simple
|
||||||
and you just
|
and you just
|
||||||
|
|
||||||
DO WHAT THE FUCK YOU WANT TO.
|
DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
|||||||
@@ -1,3 +1,95 @@
|
|||||||
|
Changes since version 0.95.7:
|
||||||
|
.............................
|
||||||
|
|
||||||
|
- Build on Ubuntu 14.04
|
||||||
|
(Johann Haarhoff <johann@haarhoff.org.za>)
|
||||||
|
- Window Maker 0.95.7 Debian files
|
||||||
|
- create_appicon_from_dock checks if no_appicon flag is set
|
||||||
|
- New applications do not create Cached Icon
|
||||||
|
- Remove unused argument in save_appicon
|
||||||
|
- Avoid recreate Cached icon moving between docks
|
||||||
|
- Avoid create again a docked application cache icon
|
||||||
|
- save the icon filename instead the full path
|
||||||
|
- Remove cache icon when detached
|
||||||
|
- usermenu.c Avoid compiler warnings
|
||||||
|
- Enable usermenu
|
||||||
|
(Rodolfo GarcÃa Peñas (kix) <kix@kix.es>)
|
||||||
|
- wmaker: fixed infinite loop in switching within group
|
||||||
|
(Satya Mishra <qufgmx@gmail.com>)
|
||||||
|
- wmaker: Print error dialog when attempting to delete an in-use workspace.
|
||||||
|
(Doug Torrance <dtorrance@piedmont.edu>)
|
||||||
|
- debian: Ignore missing documentation for --runstatedir.
|
||||||
|
- debian: Use dh_autoreconf.
|
||||||
|
- debian: Simplify debian/rules.
|
||||||
|
- debian: Fix typo occured. (Thanks, lintian.)
|
||||||
|
- debian: wmaker manpage moved from 1x to 1.
|
||||||
|
(Andreas Metzler <ametzler@bebt.de>)
|
||||||
|
- debian: Add wmiv to wmaker package.
|
||||||
|
- debian: Add version 0.95.6-1.2 entry to changelog.
|
||||||
|
- debian: Update with final version of 0.95.7-1 packaging.
|
||||||
|
- wmaker: Maintain sorting of windows by workspace in switch menu.
|
||||||
|
- debian: Update with version 0.95.7-2 packaging.
|
||||||
|
- wmaker: Update copyright years in info panel.
|
||||||
|
- wmaker: Remove prototype for unused get_right_position_on_screen function.
|
||||||
|
- wmaker: Fix typos (used codespell).
|
||||||
|
- wmaker: Add option for window snap to top edge to maximize to full screen.
|
||||||
|
- wmaker: Use window placement settings on other workspaces.
|
||||||
|
- wmaker: Add keyboard shortcuts for keeping window on top or at bottom.
|
||||||
|
- wmaker: Display keyboard shortcuts for remaining options in window menu.
|
||||||
|
- wmaker: Fix whitespace in menu.h; passes checkpatch.pl inspection.
|
||||||
|
- wmaker: Implement basic menu shading.
|
||||||
|
(Doug Torrance <dtorrance@piedmont.edu>)
|
||||||
|
- Translations: Dutch language files updated
|
||||||
|
- Translations: Frisian language files updated
|
||||||
|
(Alwin <translations@ziggo.nl>)
|
||||||
|
- wmlib: Add pkg-config file.
|
||||||
|
- wmlib: Remove install-exec-local target.
|
||||||
|
- WPrefs: Code formatting in TexturePanel.c; minimizes checkpatch.pl warnings.
|
||||||
|
- WPrefs: Add support for fpixmap ("fillscale") texture.
|
||||||
|
- check-doc: Ignore runstatedir in check-cmdline-options-doc.sh
|
||||||
|
- check-doc: Ignore with-aix-soname in check-cmdline-options-doc.sh
|
||||||
|
- debian: Remove 56_ignore_runstatedir.diff.
|
||||||
|
- debian: Update with version 0.95.7-3 packaging.
|
||||||
|
- debian: Update with version 0.95.7-4 packaging.
|
||||||
|
- debian: Update with version 0.95.7-5 packaging.
|
||||||
|
- debian: Update with version 0.95.7-6 packaging.
|
||||||
|
- wmmenugen: Fix segfault; argv[argc] doesn't exist.
|
||||||
|
(Doug Torrance <dtorrance@piedmont.edu>)
|
||||||
|
- getstyle: fix wcopy_file paths
|
||||||
|
(Alexandru Lazar <alazar@startmail.com>)
|
||||||
|
- wmaker: fix stacking order of dock and fullscreen
|
||||||
|
- wmaker: allow alt+tabbed windows over fullscreen
|
||||||
|
(Bjørn Mork <bjorn@mork.no>)
|
||||||
|
- WPrefs: Update path for Debian menu
|
||||||
|
- Use wprefs_bindir output variable to set WPrefs path in menus.
|
||||||
|
- Remove WindowMaker/mkMakefile script.
|
||||||
|
- Don't try and add removed file mkMakefile to distribution tarball.
|
||||||
|
- Look for plmenu in build directory when creating WMRootMenu.
|
||||||
|
- debian: Update with version 0.95.7-7 packaging.
|
||||||
|
- configure: Use PKG_PROG_PKG_CONFIG macro to allow cross building.
|
||||||
|
(Doug Torrance <dtorrance@piedmont.edu>)
|
||||||
|
- Trivial cleanup: Removed unused defines.
|
||||||
|
(Roman Dobosz <gryf73@gmail.com>)
|
||||||
|
- Added 'head' parameter to wMaximizeWindow
|
||||||
|
- Added wGetHeadRelativeToCurrentHead function
|
||||||
|
- Added option for ability to move half-maximized between heads.
|
||||||
|
- Added possibility for half-maximized windows to move across the screens.
|
||||||
|
- Fixed wrong (re)stored dimensions for unmaximized window.
|
||||||
|
(gryf <gryf73@gmail.com>)
|
||||||
|
- Bugfix for moving windows between heads.
|
||||||
|
- New option for enabling alternative half-maximized window movement.
|
||||||
|
- Alternative way for traversing half-maximized windows.
|
||||||
|
- New option for moving mouse pointer along with half-maximized windows.
|
||||||
|
- Implementation for moving mouse pointer within the maximized window.
|
||||||
|
- Refactoring handleMaximize() function
|
||||||
|
- Removed trailing whitespaces from readme files.
|
||||||
|
- Fixed couple of compilator warning and removed unused macros.
|
||||||
|
(Roman Dobosz <gryf73@gmail.com>)
|
||||||
|
- wmaker: Do not place icons under the dock
|
||||||
|
(Cyrus Rahman <crahman@gmail.com>)
|
||||||
|
- debian: Update with version 0.95.7-8 packaging.
|
||||||
|
(Doug Torrance <dtorrance@piedmont.edu>)
|
||||||
|
|
||||||
Changes since version 0.95.6:
|
Changes since version 0.95.6:
|
||||||
.............................
|
.............................
|
||||||
|
|
||||||
@@ -396,6 +488,51 @@ Changes since version 0.95.6:
|
|||||||
- debian: Import version 0.95.6-1.
|
- debian: Import version 0.95.6-1.
|
||||||
- debian: Import version 0.95.6-1.1.
|
- debian: Import version 0.95.6-1.1.
|
||||||
(Doug Torrance <dtorrance@monmouthcollege.edu>)
|
(Doug Torrance <dtorrance@monmouthcollege.edu>)
|
||||||
|
- Import of (partly outdated) Ukrainian translations.
|
||||||
|
(Martin Dietze <mdietze@gmail.com>)
|
||||||
|
- Add folder with fedora .spec file
|
||||||
|
(Alexey I. Froloff <raorn@raorn.name>)
|
||||||
|
- make: Add Ukrainian translation files to EXTRA_DIST.
|
||||||
|
- wmiv: Add long command line options --help and --version.
|
||||||
|
- wmiv: Improve help text.
|
||||||
|
- doc: Add manpage for wmiv.
|
||||||
|
(Doug Torrance <dtorrance@monmouthcollege.edu>)
|
||||||
|
- wmaker: replaced old email address with the official one
|
||||||
|
- WINGs: Updated news with the API changes that occured between 0.95.6 and
|
||||||
|
0.95.7
|
||||||
|
- WINGs: ran spell checker on the NEWS file
|
||||||
|
- WINGs: fix non-portable int conversion for printf in font panel size handling
|
||||||
|
- WRaster: fix unused variable warning when XShm extention is not enabled
|
||||||
|
(Christophe CURIS <christophe.curis@free.fr>)
|
||||||
|
- New translation into Frisian for Window Maker
|
||||||
|
(Alwin <translations@ziggo.nl>)
|
||||||
|
- wrlib: fixed gcc version needed for deprecated attribute support
|
||||||
|
- Configure: increased the version of Automake requested
|
||||||
|
(Christophe CURIS <christophe.curis@free.fr>)
|
||||||
|
- configure: Fix output of libdir directory in summary
|
||||||
|
(Josip Deanovic <djosip+news@linuxpages.net>)
|
||||||
|
- wmaker: fix detection of legacy Apercu configuration keywords
|
||||||
|
- WPrefs: fix conversion of old "Apercu" setting to the new keywords
|
||||||
|
(Christophe CURIS <christophe.curis@free.fr>)
|
||||||
|
- wmaker: Allow window snapping and linked workspaces simultaneously.
|
||||||
|
- wmaker: Allow configuration of window snapping detect distances.
|
||||||
|
- WPrefs: Add ability to set integer values in Expert panel
|
||||||
|
- WPrefs: Add snap edge and corner detect to Expert panel.
|
||||||
|
(Doug Torrance <dtorrance@monmouthcollege.edu>)
|
||||||
|
- Translations: Dutch updates for WPrefs
|
||||||
|
- Translations: Frisian updates for WPrefs
|
||||||
|
(Alwin <translations@ziggo.nl>)
|
||||||
|
- configure: fixed incorrect variable name that prevented --disable-xdnd to
|
||||||
|
work
|
||||||
|
(Rodolfo GarcÃa Peñas (kix) <kix@kix.es>)
|
||||||
|
- Revert "wmaker: fix clearing of window attribute that was not saved properly"
|
||||||
|
- Disable pager by default
|
||||||
|
(Carlos R. Mafra <crmafra@gmail.com>)
|
||||||
|
- Allow using keypad Enter to commit move/resize
|
||||||
|
- Allow using numpad Enter key in dialogs for confirmation
|
||||||
|
(Amadeusz Sławiński <amade@asmblr.net>)
|
||||||
|
- Window Maker 0.95.7
|
||||||
|
(Carlos R. Mafra <crmafra@gmail.com>)
|
||||||
|
|
||||||
|
|
||||||
Changes since version 0.95.5:
|
Changes since version 0.95.5:
|
||||||
@@ -2673,7 +2810,7 @@ Changes since version 0.92.0:
|
|||||||
platforms with a recent pkg-config (debian unstable/sid for one)
|
platforms with a recent pkg-config (debian unstable/sid for one)
|
||||||
- Fixed buggy handling of UTF8 characters in textfields in WINGs.
|
- Fixed buggy handling of UTF8 characters in textfields in WINGs.
|
||||||
(Stanislav Maslovski <stanislav.maslovski@gmail.com>)
|
(Stanislav Maslovski <stanislav.maslovski@gmail.com>)
|
||||||
- Fixed segfault in WPrefs when some font description is missing from the
|
- Fixed segfault in WPrefs when some font description is missing from the
|
||||||
configuration file (Stanislav Maslovski <stanislav.maslovski@gmail.com>)
|
configuration file (Stanislav Maslovski <stanislav.maslovski@gmail.com>)
|
||||||
- Removed WINGs' dependency on rgb.txt (from X11) and issues with locating it
|
- Removed WINGs' dependency on rgb.txt (from X11) and issues with locating it
|
||||||
on the filesystem for different systems/distributions.
|
on the filesystem for different systems/distributions.
|
||||||
@@ -2754,11 +2891,11 @@ Changes since version 0.80.2:
|
|||||||
- Removed obsoleted acconfig.h and implemented its functionality using
|
- Removed obsoleted acconfig.h and implemented its functionality using
|
||||||
AC_DEFINE and AC_DEFINE_UNQUOTED as autoconf 2.5x recommends.
|
AC_DEFINE and AC_DEFINE_UNQUOTED as autoconf 2.5x recommends.
|
||||||
This will definitely enforce the need to use autoconf 2.5x
|
This will definitely enforce the need to use autoconf 2.5x
|
||||||
- Added Xft2 support to WINGs, for rendering antialiased fonts with
|
- Added Xft2 support to WINGs, for rendering antialiased fonts with
|
||||||
transparency. Details in WINGs/ChangeLog.
|
transparency. Details in WINGs/ChangeLog.
|
||||||
- Fixed problem with long, preset workspace names (Wanderlei Antonio Cavassin
|
- Fixed problem with long, preset workspace names (Wanderlei Antonio Cavassin
|
||||||
<cavassin@conectiva.com.br>)
|
<cavassin@conectiva.com.br>)
|
||||||
- Added kinput2 bug workaround to stock WMWindowAttributes (Seiichi SATO
|
- Added kinput2 bug workaround to stock WMWindowAttributes (Seiichi SATO
|
||||||
<sato@cvs-net.co.jp>)
|
<sato@cvs-net.co.jp>)
|
||||||
- Added Belarusian translation (Ihar Viarheichyk <iverg@mail.ru>)
|
- Added Belarusian translation (Ihar Viarheichyk <iverg@mail.ru>)
|
||||||
- Fixed wrlib not to load braindead images with 0 sized width or height
|
- Fixed wrlib not to load braindead images with 0 sized width or height
|
||||||
@@ -2829,7 +2966,7 @@ Changes since version 0.80.2:
|
|||||||
- Made maximize behave differently with keyboard/mouse for xinerama
|
- Made maximize behave differently with keyboard/mouse for xinerama
|
||||||
(Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
(Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
||||||
- A few leftover xinerama fixes (Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
- A few leftover xinerama fixes (Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
||||||
- Extended the 'strut' to multiple heads
|
- Extended the 'strut' to multiple heads
|
||||||
(Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
(Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
||||||
- Icon placement now takes into account the new xinerama extended 'strut'
|
- Icon placement now takes into account the new xinerama extended 'strut'
|
||||||
(Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
(Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
||||||
@@ -2875,7 +3012,7 @@ Changes since version 0.80.2:
|
|||||||
by Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
by Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
||||||
- Applied patch to enhance the Virtual Desktop behaviour, and to integrate
|
- Applied patch to enhance the Virtual Desktop behaviour, and to integrate
|
||||||
it with the NetWM code (Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
it with the NetWM code (Peter Zijlstra <a.p.zijlstra@chello.nl>)
|
||||||
- Applied a few xinerama and placement fixes (Peter Zijlstra
|
- Applied a few xinerama and placement fixes (Peter Zijlstra
|
||||||
<a.p.zijlstra@chello.nl>)
|
<a.p.zijlstra@chello.nl>)
|
||||||
- Fixed memory leak in dock code.
|
- Fixed memory leak in dock code.
|
||||||
- Fixed and enhanced the text wrapping in WINGs.
|
- Fixed and enhanced the text wrapping in WINGs.
|
||||||
@@ -2899,7 +3036,7 @@ Changes since version 0.80.2:
|
|||||||
- MacOS X style window switching panel (navigate through windows with Alt-Tab
|
- MacOS X style window switching panel (navigate through windows with Alt-Tab
|
||||||
or arrow keys)
|
or arrow keys)
|
||||||
- Added support for NET_WM_NAME/NET_WM_ICON_NAME
|
- Added support for NET_WM_NAME/NET_WM_ICON_NAME
|
||||||
- Moved out font name conversion code from getstyle/setstyle/convertfonts and
|
- Moved out font name conversion code from getstyle/setstyle/convertfonts and
|
||||||
made it support fontsets
|
made it support fontsets
|
||||||
- Converted all menu and po files to UTF-8
|
- Converted all menu and po files to UTF-8
|
||||||
- Updated de.po (Thomas Otto <3.1415926535897932384626433832@gmx.net>)
|
- Updated de.po (Thomas Otto <3.1415926535897932384626433832@gmx.net>)
|
||||||
@@ -2922,8 +3059,8 @@ Changes since version 0.80.0:
|
|||||||
WMState.<number> file on multihead system.
|
WMState.<number> file on multihead system.
|
||||||
- Fixed problem with keyboard shortcuts executed an every screen for
|
- Fixed problem with keyboard shortcuts executed an every screen for
|
||||||
multihead systems.
|
multihead systems.
|
||||||
- Updated traditional chinese translations
|
- Updated traditional chinese translations
|
||||||
- Fixed buglet in non-caching rootmenu option
|
- Fixed buglet in non-caching rootmenu option
|
||||||
("John H. Robinson, IV" <jhriv@ucsd.edu>)
|
("John H. Robinson, IV" <jhriv@ucsd.edu>)
|
||||||
- Added Malay translation
|
- Added Malay translation
|
||||||
- Fixed problem with kcalc not having a miniaturize button.
|
- Fixed problem with kcalc not having a miniaturize button.
|
||||||
@@ -2944,7 +3081,7 @@ Changes since version 0.80.0:
|
|||||||
- Added Greek (el) language pixmap (Michalis Kabrianis <Michalis@bigfoot.com>)
|
- Added Greek (el) language pixmap (Michalis Kabrianis <Michalis@bigfoot.com>)
|
||||||
- Fixes icons being reduced twice when icon size != 64x64
|
- Fixes icons being reduced twice when icon size != 64x64
|
||||||
Eduardo Pereira Habkost <ehabkost@conectiva.com.br>
|
Eduardo Pereira Habkost <ehabkost@conectiva.com.br>
|
||||||
- Fixed a bug that crashed wmaker when selecting the "Start alternate window
|
- Fixed a bug that crashed wmaker when selecting the "Start alternate window
|
||||||
manager" option in the crashing dialog panel.
|
manager" option in the crashing dialog panel.
|
||||||
- Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if
|
- Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if
|
||||||
it is defined) to overwrite the default hardcoded fallback window manager.
|
it is defined) to overwrite the default hardcoded fallback window manager.
|
||||||
@@ -2953,7 +3090,7 @@ Changes since version 0.80.0:
|
|||||||
"Keep on Top" option is active.
|
"Keep on Top" option is active.
|
||||||
- Added ability to browse for files/directories in the WPrefs menu editor.
|
- Added ability to browse for files/directories in the WPrefs menu editor.
|
||||||
- Added Czech translations of documentation (Jiri Hnidek <Jiri.Hnidek@vslib.cz>)
|
- Added Czech translations of documentation (Jiri Hnidek <Jiri.Hnidek@vslib.cz>)
|
||||||
- Fixed segfault with incomplete WM_CLASS specifications.
|
- Fixed segfault with incomplete WM_CLASS specifications.
|
||||||
- Fixed a bug about arranging subviews in a WMBox after removing a subview
|
- Fixed a bug about arranging subviews in a WMBox after removing a subview
|
||||||
and a memleak occuring in the same situation.
|
and a memleak occuring in the same situation.
|
||||||
- Fixed a bug in wdread
|
- Fixed a bug in wdread
|
||||||
@@ -2965,7 +3102,7 @@ Changes since version 0.80.0:
|
|||||||
Changes since version 0.70.0:
|
Changes since version 0.70.0:
|
||||||
.............................
|
.............................
|
||||||
|
|
||||||
- Disabled window birth animation by default (while it was ok with normal
|
- Disabled window birth animation by default (while it was ok with normal
|
||||||
windows, it was very annoying with menus editing in WPrefs.app)
|
windows, it was very annoying with menus editing in WPrefs.app)
|
||||||
- Added ability to shade/unshade a window using the mouse wheel.
|
- Added ability to shade/unshade a window using the mouse wheel.
|
||||||
- Fixed compilation for systems that required -lintl for WINGs
|
- Fixed compilation for systems that required -lintl for WINGs
|
||||||
@@ -2982,7 +3119,7 @@ Changes since version 0.70.0:
|
|||||||
saving dock/clip/session information on exit.
|
saving dock/clip/session information on exit.
|
||||||
- Added an internal strcasecmp() to WINGs (only on systems where's not present)
|
- Added an internal strcasecmp() to WINGs (only on systems where's not present)
|
||||||
- Deminiaturizing a window that is also shaded, will perform an unshade too.
|
- Deminiaturizing a window that is also shaded, will perform an unshade too.
|
||||||
(Note that this only applies to deminiaturizing shaded windows. Unhiding
|
(Note that this only applies to deminiaturizing shaded windows. Unhiding
|
||||||
an application will keep the shaded/unshaded state of windows.)
|
an application will keep the shaded/unshaded state of windows.)
|
||||||
- Removed compile time option for definable cursors and made them available by
|
- Removed compile time option for definable cursors and made them available by
|
||||||
default.
|
default.
|
||||||
@@ -2990,7 +3127,7 @@ Changes since version 0.70.0:
|
|||||||
will unhide the application.
|
will unhide the application.
|
||||||
- Added || pipe menu for generating non-cached menus
|
- Added || pipe menu for generating non-cached menus
|
||||||
- Removed the collapse appicons thing.
|
- Removed the collapse appicons thing.
|
||||||
- Added real appicon sharing (apps of the same kind will have a single shared
|
- Added real appicon sharing (apps of the same kind will have a single shared
|
||||||
appicon).
|
appicon).
|
||||||
- Fixed user and global defaults domain merging to preserve values present in
|
- Fixed user and global defaults domain merging to preserve values present in
|
||||||
global but not in user, in sub-dictionaries.
|
global but not in user, in sub-dictionaries.
|
||||||
@@ -3021,7 +3158,7 @@ Changes since version 0.65.1:
|
|||||||
(Marcelo E. Magallon <marcelo.magallon@bigfoot.com>)
|
(Marcelo E. Magallon <marcelo.magallon@bigfoot.com>)
|
||||||
- fixed crash with broken apps that set null WM_CLASS
|
- fixed crash with broken apps that set null WM_CLASS
|
||||||
- fixed crash when with gnome panel and multi-screens, some menu
|
- fixed crash when with gnome panel and multi-screens, some menu
|
||||||
updates and applied various other patches from
|
updates and applied various other patches from
|
||||||
(Crutcher Dunnavant <crutcher@redhat.com>)
|
(Crutcher Dunnavant <crutcher@redhat.com>)
|
||||||
- po file fixes (Crutcher Dunnavant <crutcher@redhat.com>)
|
- po file fixes (Crutcher Dunnavant <crutcher@redhat.com>)
|
||||||
- replaced I18N_MB with I18N in one place in src/wconfig.h.in
|
- replaced I18N_MB with I18N in one place in src/wconfig.h.in
|
||||||
@@ -3050,7 +3187,7 @@ Changes since version 0.65.1:
|
|||||||
More details about this can be found in WINGs/ChangeLog and WINGs/NEWS.
|
More details about this can be found in WINGs/ChangeLog and WINGs/NEWS.
|
||||||
Say bye, bye libPropList =)
|
Say bye, bye libPropList =)
|
||||||
- rewrote all Window Maker code to use the new WINGs based proplist functions.
|
- rewrote all Window Maker code to use the new WINGs based proplist functions.
|
||||||
- fixed a few compilation warnings and a problem caused by an uninitialized
|
- fixed a few compilation warnings and a problem caused by an uninitialized
|
||||||
variable.
|
variable.
|
||||||
|
|
||||||
|
|
||||||
@@ -3092,7 +3229,7 @@ Changes since version 0.64.0:
|
|||||||
- use Hermes in wrlib
|
- use Hermes in wrlib
|
||||||
- removed MOUSE_WS_WHEEL #defines
|
- removed MOUSE_WS_WHEEL #defines
|
||||||
- fixed bug with multibyte text on libc5 systems (Osamu Ajiki <osam-a@astroarts.co.jp>)
|
- fixed bug with multibyte text on libc5 systems (Osamu Ajiki <osam-a@astroarts.co.jp>)
|
||||||
- fixed race conditions on signal handlers
|
- fixed race conditions on signal handlers
|
||||||
- SIGINT will gently exit, SIGTERM will not be handled
|
- SIGINT will gently exit, SIGTERM will not be handled
|
||||||
- When Window Maker calls wmsetbg to set the background, it will consider the
|
- When Window Maker calls wmsetbg to set the background, it will consider the
|
||||||
value of the DisableDithering option and pass the right switch to wmsetbg.
|
value of the DisableDithering option and pass the right switch to wmsetbg.
|
||||||
@@ -3103,7 +3240,7 @@ Changes since version 0.64.0:
|
|||||||
desktop level.
|
desktop level.
|
||||||
- Fixed incorrect parsing of display and screen number from $DISPLAY.
|
- Fixed incorrect parsing of display and screen number from $DISPLAY.
|
||||||
- Organized the inspector panel a bit better.
|
- Organized the inspector panel a bit better.
|
||||||
- Replaced bags with arrays wherever appropriate. This will improve
|
- Replaced bags with arrays wherever appropriate. This will improve
|
||||||
performance a bit.
|
performance a bit.
|
||||||
- Made the Gnome tasklist skip the windows with the "Skip window list" flag
|
- Made the Gnome tasklist skip the windows with the "Skip window list" flag
|
||||||
enabled. (Bastien Nocera <hadess@hadess.net>)
|
enabled. (Bastien Nocera <hadess@hadess.net>)
|
||||||
@@ -3121,11 +3258,11 @@ Changes since version 0.64.0:
|
|||||||
- Added retain/release mechanism for RImages. RDestroyImage() has become
|
- Added retain/release mechanism for RImages. RDestroyImage() has become
|
||||||
obsolete. More about this can be found in wrlib/Changelog and wrlib/NEWS.
|
obsolete. More about this can be found in wrlib/Changelog and wrlib/NEWS.
|
||||||
- Small API change in WINGs to allow images with alpha blending set as the
|
- Small API change in WINGs to allow images with alpha blending set as the
|
||||||
application icons be shown correctly. More about this in WINGs/Changelog
|
application icons be shown correctly. More about this in WINGs/Changelog
|
||||||
and WINGs/NEWS.
|
and WINGs/NEWS.
|
||||||
- Made images with alpha blending be shown correctly in the panels and the
|
- Made images with alpha blending be shown correctly in the panels and the
|
||||||
icon chooser.
|
icon chooser.
|
||||||
- The icon image set to be shown in panels ("Logo.WMPanel") will be
|
- The icon image set to be shown in panels ("Logo.WMPanel") will be
|
||||||
automatically updated if its entry in WMWindowAttributes changes (without
|
automatically updated if its entry in WMWindowAttributes changes (without
|
||||||
a need to restart as until now).
|
a need to restart as until now).
|
||||||
- Fixed a bug in the icon chooser dialog that made the selected icon look
|
- Fixed a bug in the icon chooser dialog that made the selected icon look
|
||||||
@@ -3145,7 +3282,7 @@ Changes since version 0.64.0:
|
|||||||
Changes since version 0.63.1:
|
Changes since version 0.63.1:
|
||||||
.............................
|
.............................
|
||||||
- fixed messup in get-{wings,wutil,wraster}-flags
|
- fixed messup in get-{wings,wutil,wraster}-flags
|
||||||
- fixed #wmdatadir# substitution in wmaker.inst
|
- fixed #wmdatadir# substitution in wmaker.inst
|
||||||
(Seiichi SATO <sato@cvs-net.co.jp>)
|
(Seiichi SATO <sato@cvs-net.co.jp>)
|
||||||
- Removed spurious focus disabling for GNUstep applications - but retain
|
- Removed spurious focus disabling for GNUstep applications - but retain
|
||||||
code that lets GNUstep apps control their window titlebar.
|
code that lets GNUstep apps control their window titlebar.
|
||||||
@@ -3186,7 +3323,7 @@ Changes since version 0.62.1:
|
|||||||
- added wmagnify utility
|
- added wmagnify utility
|
||||||
- changed behaviour of control/shift double click on titlebar for maximize
|
- changed behaviour of control/shift double click on titlebar for maximize
|
||||||
- updated getstyle to account for extendspace options
|
- updated getstyle to account for extendspace options
|
||||||
- fixed weird color bug in jpeg loader
|
- fixed weird color bug in jpeg loader
|
||||||
(Alban Hertroys <dalroi@wit401310.student.utwente.nl>)
|
(Alban Hertroys <dalroi@wit401310.student.utwente.nl>)
|
||||||
- improved and simplified fonts configuration for multibyte languages
|
- improved and simplified fonts configuration for multibyte languages
|
||||||
(Tomohiro KUBOTA <kubota@debian.or.jp>)
|
(Tomohiro KUBOTA <kubota@debian.or.jp>)
|
||||||
@@ -3200,7 +3337,7 @@ Changes since version 0.62.1:
|
|||||||
- fixed bug with incorrect window placement using automatic placement, while
|
- fixed bug with incorrect window placement using automatic placement, while
|
||||||
there were shaded windows on other workspaces
|
there were shaded windows on other workspaces
|
||||||
- fixed some buffer overflow issues in WINGs
|
- fixed some buffer overflow issues in WINGs
|
||||||
- fixed bug with WPrefs.app not selecting the menu appearance options after
|
- fixed bug with WPrefs.app not selecting the menu appearance options after
|
||||||
startup.
|
startup.
|
||||||
- replaced free() with wfree() wherever appropriate
|
- replaced free() with wfree() wherever appropriate
|
||||||
- fixed some memory leaks generated by wstrappend()
|
- fixed some memory leaks generated by wstrappend()
|
||||||
@@ -3264,7 +3401,7 @@ Changes since version 0.61.1:
|
|||||||
- changed semantics of GNUstep window attribute hints
|
- changed semantics of GNUstep window attribute hints
|
||||||
- added get-wings-flags and get-wutil-flags with the same purpose as
|
- added get-wings-flags and get-wutil-flags with the same purpose as
|
||||||
get-wraster-flags, but for compiling and linking with WINGs/WUtil
|
get-wraster-flags, but for compiling and linking with WINGs/WUtil
|
||||||
- fixed bug handling non-string values given to string valued options in
|
- fixed bug handling non-string values given to string valued options in
|
||||||
defaults.c
|
defaults.c
|
||||||
- fixed colormap_window crash bug (appears when launching some apps from dock,
|
- fixed colormap_window crash bug (appears when launching some apps from dock,
|
||||||
or removing apps from gnome panel etc)
|
or removing apps from gnome panel etc)
|
||||||
@@ -3283,7 +3420,7 @@ Changes since version 0.61.1:
|
|||||||
- added Jim Knoble <jmknoble@pobox.com>'s cursor thing patch
|
- added Jim Knoble <jmknoble@pobox.com>'s cursor thing patch
|
||||||
- fixed lock of wmaker when clicking on menu multiple times
|
- fixed lock of wmaker when clicking on menu multiple times
|
||||||
- made transients appear near their owner
|
- made transients appear near their owner
|
||||||
- fixed crash bug with broken java implementations (Miguel Covarrubias
|
- fixed crash bug with broken java implementations (Miguel Covarrubias
|
||||||
<mcovarr@tigr.org>)
|
<mcovarr@tigr.org>)
|
||||||
- made Revert on attributes panel apply the reverted changes immediately
|
- made Revert on attributes panel apply the reverted changes immediately
|
||||||
to avoid inconsistent internal state
|
to avoid inconsistent internal state
|
||||||
@@ -3301,7 +3438,7 @@ Changes since version 0.61.0:
|
|||||||
- fixed OPEN_MENU
|
- fixed OPEN_MENU
|
||||||
- fixed crash when moving a shaded window with keyboard
|
- fixed crash when moving a shaded window with keyboard
|
||||||
- fixed problem with window shortcut assignment from the menu
|
- fixed problem with window shortcut assignment from the menu
|
||||||
- fixed problem with fonts in WINGs (Masahide -mac- NODA
|
- fixed problem with fonts in WINGs (Masahide -mac- NODA
|
||||||
<mac@flab.fujitsu.co.jp>)
|
<mac@flab.fujitsu.co.jp>)
|
||||||
- fixed multihead bugs (Morten Bøgeskov" <mb@dbc.dk>)
|
- fixed multihead bugs (Morten Bøgeskov" <mb@dbc.dk>)
|
||||||
- fixed crashing bug when saving session information.
|
- fixed crashing bug when saving session information.
|
||||||
@@ -3328,7 +3465,7 @@ Changes since version 0.60.0:
|
|||||||
- added missing kbd shortcut definitions for window shortcuts
|
- added missing kbd shortcut definitions for window shortcuts
|
||||||
(Michael Smith <mjsmith@spirit.com.au>)
|
(Michael Smith <mjsmith@spirit.com.au>)
|
||||||
- fixed floppy button layout in filepanel (Matthew Ashton <mrashton@home.com>)
|
- fixed floppy button layout in filepanel (Matthew Ashton <mrashton@home.com>)
|
||||||
- fixed bug with documentedited close button (Felipe A. Rodriguez
|
- fixed bug with documentedited close button (Felipe A. Rodriguez
|
||||||
<farz@mindspring.com>)
|
<farz@mindspring.com>)
|
||||||
- fixed some buffer overflows
|
- fixed some buffer overflows
|
||||||
- fixed some problem with the alpha
|
- fixed some problem with the alpha
|
||||||
@@ -3344,7 +3481,7 @@ Changes since version 0.60.0:
|
|||||||
- removed drop shadow for text on title bar code. (TITLE_TEXT_SHADOW)
|
- removed drop shadow for text on title bar code. (TITLE_TEXT_SHADOW)
|
||||||
- text on title bar is now possible to be drawn by plugin. See NEWS.
|
- text on title bar is now possible to be drawn by plugin. See NEWS.
|
||||||
- WPrefs: added support for button4/5
|
- WPrefs: added support for button4/5
|
||||||
- fixed scrolling of menus outside screen (Vito Caputo
|
- fixed scrolling of menus outside screen (Vito Caputo
|
||||||
<swivel@virtual-webworld.com)
|
<swivel@virtual-webworld.com)
|
||||||
- added dialog window for menu commands that can't be executed
|
- added dialog window for menu commands that can't be executed
|
||||||
- fixed crash when deiconifying windows when icons are disabled
|
- fixed crash when deiconifying windows when icons are disabled
|
||||||
@@ -3374,7 +3511,7 @@ Changes since version 0.53.0:
|
|||||||
- fixed crash when changing icon of window without WM_CLASS
|
- fixed crash when changing icon of window without WM_CLASS
|
||||||
- added hysteresys for offscreen menu scrollback
|
- added hysteresys for offscreen menu scrollback
|
||||||
- fixed bug with IgnoreFocusClick
|
- fixed bug with IgnoreFocusClick
|
||||||
- fixed crash with windows with width == 1 (Alban Hertroys
|
- fixed crash with windows with width == 1 (Alban Hertroys
|
||||||
<dalroi@wit401310.student.utwente.nl>)
|
<dalroi@wit401310.student.utwente.nl>)
|
||||||
- added SHEXEC command
|
- added SHEXEC command
|
||||||
- fixed resizebarback for SHADOW_RESIZEBAR ( jim knoble jmknoble@pobox.com)
|
- fixed resizebarback for SHADOW_RESIZEBAR ( jim knoble jmknoble@pobox.com)
|
||||||
@@ -3494,7 +3631,7 @@ Changes since version 0.51.1:
|
|||||||
|
|
||||||
- fixed bug with window that can get focus if both shaded and hidden.
|
- fixed bug with window that can get focus if both shaded and hidden.
|
||||||
- maximize for full screen
|
- maximize for full screen
|
||||||
- fixed problem with frame drawing in non-opaque
|
- fixed problem with frame drawing in non-opaque
|
||||||
- fixed installation path prob [jmknoble@pobox.com]
|
- fixed installation path prob [jmknoble@pobox.com]
|
||||||
- fixed bug moving window when only one window is on screen
|
- fixed bug moving window when only one window is on screen
|
||||||
- fixed bug with ignored GNUstep attributes
|
- fixed bug with ignored GNUstep attributes
|
||||||
@@ -3590,7 +3727,7 @@ Changes since version 0.50.1:
|
|||||||
- fixed wmsetbg
|
- fixed wmsetbg
|
||||||
- fixed parsing of WorkspaceSpecificBack
|
- fixed parsing of WorkspaceSpecificBack
|
||||||
- fixed initial workspace for new windows
|
- fixed initial workspace for new windows
|
||||||
- added the workspace button proxy thingy for GNOME
|
- added the workspace button proxy thingy for GNOME
|
||||||
- added more GNOME compatibility fixes
|
- added more GNOME compatibility fixes
|
||||||
- fixed bug in %a() macro in root menu
|
- fixed bug in %a() macro in root menu
|
||||||
|
|
||||||
@@ -3764,7 +3901,7 @@ Changes since version 0.19.3:
|
|||||||
.............................
|
.............................
|
||||||
|
|
||||||
- fixed crash when closing windows in autoraise
|
- fixed crash when closing windows in autoraise
|
||||||
- fixed a memory leak
|
- fixed a memory leak
|
||||||
- fixed a crash when closing Lotus Notes
|
- fixed a crash when closing Lotus Notes
|
||||||
- rewrote colormap code
|
- rewrote colormap code
|
||||||
- incomplete multihead support
|
- incomplete multihead support
|
||||||
@@ -3877,7 +4014,7 @@ Changes since version 0.17.5:
|
|||||||
.............................
|
.............................
|
||||||
|
|
||||||
- fixed handling of signals when the X event queue is empty
|
- fixed handling of signals when the X event queue is empty
|
||||||
- fixed blank window titles
|
- fixed blank window titles
|
||||||
- made current workspace entry be disabled in Move To window menu command, and
|
- made current workspace entry be disabled in Move To window menu command, and
|
||||||
in the Clip's Move To submenu.
|
in the Clip's Move To submenu.
|
||||||
- fixed menu width calculation
|
- fixed menu width calculation
|
||||||
@@ -3888,7 +4025,7 @@ Changes since version 0.17.5:
|
|||||||
- added a hack to make everything work even if NumLock or ScrollLock is on
|
- added a hack to make everything work even if NumLock or ScrollLock is on
|
||||||
- added a little more verbosity to error messages
|
- added a little more verbosity to error messages
|
||||||
- fixed kluged workspace menu in clip
|
- fixed kluged workspace menu in clip
|
||||||
- removed workspace menu mapped through the microbutton in the clip.
|
- removed workspace menu mapped through the microbutton in the clip.
|
||||||
- remade clip button layout to be more usable
|
- remade clip button layout to be more usable
|
||||||
- fixed bug with keepontop and apps with Motif hints (x11amp)
|
- fixed bug with keepontop and apps with Motif hints (x11amp)
|
||||||
- changed menu border drawing
|
- changed menu border drawing
|
||||||
@@ -3926,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
|
||||||
|
|
||||||
@@ -3954,7 +4091,7 @@ Changes since version 0.17.3:
|
|||||||
- fixed bug with rootmenu that caused twin menus to be left mapped
|
- fixed bug with rootmenu that caused twin menus to be left mapped
|
||||||
- added DontConfirmKill option to remove confirmation panel for Kill
|
- added DontConfirmKill option to remove confirmation panel for Kill
|
||||||
- fixed bug with hide of app with wmaker menu
|
- fixed bug with hide of app with wmaker menu
|
||||||
- changed all NSsomething internal flags for the GNUstep attributes to
|
- changed all NSsomething internal flags for the GNUstep attributes to
|
||||||
WMsomething
|
WMsomething
|
||||||
|
|
||||||
Changes since version 0.17.2:
|
Changes since version 0.17.2:
|
||||||
@@ -3962,7 +4099,7 @@ Changes since version 0.17.2:
|
|||||||
|
|
||||||
- fixed bug in attributes panel with Disable Resizebar
|
- fixed bug in attributes panel with Disable Resizebar
|
||||||
- fixed save in attribs panel with windows other than the client leader
|
- fixed save in attribs panel with windows other than the client leader
|
||||||
- bug in attribs panel with Revert that made it save attributes with the
|
- bug in attribs panel with Revert that made it save attributes with the
|
||||||
wrong name
|
wrong name
|
||||||
- fixed (by kluging) bugs related to destroying dialog panels in a bad order
|
- fixed (by kluging) bugs related to destroying dialog panels in a bad order
|
||||||
- fixed various bug with hide in empty screens
|
- fixed various bug with hide in empty screens
|
||||||
@@ -4069,7 +4206,7 @@ Changes since version 0.16.0:
|
|||||||
- Added autoscroll for scrollers in WINGs.
|
- Added autoscroll for scrollers in WINGs.
|
||||||
- Optimized WMList and WMBrowser in WINGs.
|
- Optimized WMList and WMBrowser in WINGs.
|
||||||
- Button2 on clip opens workspace menu
|
- Button2 on clip opens workspace menu
|
||||||
- Changed cycling colors of selected icons.
|
- Changed cycling colors of selected icons.
|
||||||
- Made icon chooser display a better rendering of alpha-channeled icons.
|
- Made icon chooser display a better rendering of alpha-channeled icons.
|
||||||
- Sorted list/browser entries.
|
- Sorted list/browser entries.
|
||||||
- Fixed bug in timer code that was causing some timer events to be lost.
|
- Fixed bug in timer code that was causing some timer events to be lost.
|
||||||
@@ -4106,11 +4243,11 @@ Changes since version 0.15.1:
|
|||||||
- clicking on the appicon switches to the workspace where the app was last
|
- clicking on the appicon switches to the workspace where the app was last
|
||||||
focused before unhiding
|
focused before unhiding
|
||||||
- fixed problem with aspect ratio setting (gr_osview etc.)
|
- fixed problem with aspect ratio setting (gr_osview etc.)
|
||||||
- changed some extensions in the default config/data files and removed
|
- changed some extensions in the default config/data files and removed
|
||||||
Sound.{xpm,tif} because it seem to be copyrighted.
|
Sound.{xpm,tif} because it seem to be copyrighted.
|
||||||
- added icon selection panel
|
- added icon selection panel
|
||||||
- changed selection indication of icons. Removed SClipColor option
|
- changed selection indication of icons. Removed SClipColor option
|
||||||
- simplified animation speed options (IconSlideDelay, IconDelayStep,
|
- simplified animation speed options (IconSlideDelay, IconDelayStep,
|
||||||
MenuScrollDelay, MenuScrollStep etc. etc) to IconSlideSpeed etc.
|
MenuScrollDelay, MenuScrollStep etc. etc) to IconSlideSpeed etc.
|
||||||
- removed Start miniaturized/hidden items from Dock/Clip and added them
|
- removed Start miniaturized/hidden items from Dock/Clip and added them
|
||||||
as attributes
|
as attributes
|
||||||
@@ -4182,7 +4319,7 @@ Changes since version 0.15.0:
|
|||||||
window is correctly updated if the font size is changed while running.
|
window is correctly updated if the font size is changed while running.
|
||||||
- Deleted unnecessary redrawing code in moveres.c.
|
- Deleted unnecessary redrawing code in moveres.c.
|
||||||
- Many fixes to moveres.c.
|
- Many fixes to moveres.c.
|
||||||
- Put all the keys from defaults.c in WindowMaker domain database.
|
- Put all the keys from defaults.c in WindowMaker domain database.
|
||||||
- Fixed a crashing bug when workspace names were as long (or longer) as
|
- Fixed a crashing bug when workspace names were as long (or longer) as
|
||||||
MAX_WORKSPACENAME_WIDTH (16 characters). In this case a right click on a
|
MAX_WORKSPACENAME_WIDTH (16 characters). In this case a right click on a
|
||||||
window title caused WindowMaker to crash.
|
window title caused WindowMaker to crash.
|
||||||
@@ -4485,7 +4622,7 @@ Changes since version 0.12.1:
|
|||||||
Changes since version 0.12.0:
|
Changes since version 0.12.0:
|
||||||
.............................
|
.............................
|
||||||
|
|
||||||
- now maintained by Matthew Hawkins <matt@mail.goldweb.com.au> while our
|
- now maintained by Matthew Hawkins <matt@mail.goldweb.com.au> while our
|
||||||
esteemed friend Alfredo is away. Have a great holiday in Japan, mate!
|
esteemed friend Alfredo is away. Have a great holiday in Japan, mate!
|
||||||
- fixed __DuMmY install problems
|
- fixed __DuMmY install problems
|
||||||
- made NextMenuBehaviour and ScrollableMenus run-time configuration options
|
- made NextMenuBehaviour and ScrollableMenus run-time configuration options
|
||||||
@@ -4497,7 +4634,7 @@ Changes since version 0.11.1:
|
|||||||
- added Launch command in dock menu
|
- added Launch command in dock menu
|
||||||
- fixed manual window placement
|
- fixed manual window placement
|
||||||
- fixed problem during installation in po/ directory
|
- fixed problem during installation in po/ directory
|
||||||
- changed Command format for dock state
|
- changed Command format for dock state
|
||||||
- added OffiX DND support for the dock
|
- added OffiX DND support for the dock
|
||||||
- added Move To submenu in window commands menu
|
- added Move To submenu in window commands menu
|
||||||
- right click on root window does not deselect windows (to allow workspace
|
- right click on root window does not deselect windows (to allow workspace
|
||||||
@@ -4513,7 +4650,7 @@ Changes since version 0.11.1:
|
|||||||
Changes since version 0.11.0:
|
Changes since version 0.11.0:
|
||||||
.............................
|
.............................
|
||||||
|
|
||||||
- fixed bug with menus that caused wmaker to crash
|
- fixed bug with menus that caused wmaker to crash
|
||||||
- brought program parameter dialog box back
|
- brought program parameter dialog box back
|
||||||
- fixed autoplacement
|
- fixed autoplacement
|
||||||
- changed window matching precedence for WMWindowAttributes (complete, just
|
- changed window matching precedence for WMWindowAttributes (complete, just
|
||||||
@@ -4534,7 +4671,7 @@ Changes since version 0.10.2:
|
|||||||
- fixed maximize bug
|
- fixed maximize bug
|
||||||
- added a widget set and new dialog panels
|
- added a widget set and new dialog panels
|
||||||
- fixed titlebar update after font change
|
- fixed titlebar update after font change
|
||||||
- renamed back _WINDOWMAKER_COMMAND to _WINDOWMAKER_WM_FUNCTION
|
- renamed back _WINDOWMAKER_COMMAND to _WINDOWMAKER_WM_FUNCTION
|
||||||
- fixed bug with miniaturization of bad behaved apps (vtcl)
|
- fixed bug with miniaturization of bad behaved apps (vtcl)
|
||||||
|
|
||||||
Changes since version 0.10.1:
|
Changes since version 0.10.1:
|
||||||
@@ -4584,7 +4721,7 @@ pipe
|
|||||||
- more apps can be docked (ghostview et. al)
|
- more apps can be docked (ghostview et. al)
|
||||||
- fixed diagonal/horizontal resize detection to be like in NS
|
- fixed diagonal/horizontal resize detection to be like in NS
|
||||||
- simplified titlebar button code: removed possibility to add more buttons
|
- simplified titlebar button code: removed possibility to add more buttons
|
||||||
- fixed window gravity handling (xclock -geometry 100x100-0-0)
|
- fixed window gravity handling (xclock -geometry 100x100-0-0)
|
||||||
- removed shadeable window attribute, added DontMoveOff
|
- removed shadeable window attribute, added DontMoveOff
|
||||||
- window resize with Meta-Click3 on window
|
- window resize with Meta-Click3 on window
|
||||||
- fixed bug that caused keyboard locks if a invalid key was used in a shortcut
|
- fixed bug that caused keyboard locks if a invalid key was used in a shortcut
|
||||||
@@ -4694,20 +4831,20 @@ has quit. (probably the same problem with XFMail and others)
|
|||||||
- better handling of long text
|
- better handling of long text
|
||||||
- limited windowlist menu width
|
- limited windowlist menu width
|
||||||
- fixed arrange icons
|
- fixed arrange icons
|
||||||
- changed geometry display to account for base size if it's not in
|
- changed geometry display to account for base size if it's not in
|
||||||
the technical drawing style
|
the technical drawing style
|
||||||
- meta-dbl-click on appicon does hide others
|
- meta-dbl-click on appicon does hide others
|
||||||
- changed RaiseOnFocus option with RaiseDelay
|
- changed RaiseOnFocus option with RaiseDelay
|
||||||
- dbl-click on root window or open submenu entry brings the root menu
|
- dbl-click on root window or open submenu entry brings the root menu
|
||||||
to the cursor.
|
to the cursor.
|
||||||
- removed AllowMenuLowering option and made menu ontopness work like on dock
|
- removed AllowMenuLowering option and made menu ontopness work like on dock
|
||||||
- changed meta-click on dock with meta-dbl-click, to change ontopness
|
- changed meta-click on dock with meta-dbl-click, to change ontopness
|
||||||
- moved gradient and image code to a library.
|
- moved gradient and image code to a library.
|
||||||
- added support for icons with alpha channel
|
- added support for icons with alpha channel
|
||||||
- simplified dithering setup
|
- simplified dithering setup
|
||||||
- many clean ups
|
- many clean ups
|
||||||
- not-so-good looking gradients for 8bpp
|
- not-so-good looking gradients for 8bpp
|
||||||
- changed application menu stuff
|
- changed application menu stuff
|
||||||
- started wmaker client library. Try out test/test.c
|
- started wmaker client library. Try out test/test.c
|
||||||
|
|
||||||
|
|
||||||
@@ -4752,7 +4889,7 @@ Changes since version 0.4.2:
|
|||||||
- fixed docking on left side dock
|
- fixed docking on left side dock
|
||||||
- fixed bug in window command menu
|
- fixed bug in window command menu
|
||||||
- fixed bug in narrow windows with NEWSTYLE enabled
|
- fixed bug in narrow windows with NEWSTYLE enabled
|
||||||
- fixed Hide Others crash
|
- fixed Hide Others crash
|
||||||
- I18N fixes
|
- I18N fixes
|
||||||
- hopefully stable again
|
- hopefully stable again
|
||||||
|
|
||||||
@@ -4797,13 +4934,13 @@ 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:
|
||||||
............................
|
............................
|
||||||
|
|
||||||
- fixed bug that caused window frames to be left after window closure
|
- fixed bug that caused window frames to be left after window closure
|
||||||
- submenus are opened to the left/right if it is too close to the right/left
|
- submenus are opened to the left/right if it is too close to the right/left
|
||||||
edge (not perfect, but better than before)
|
edge (not perfect, but better than before)
|
||||||
- remember window state (shade) on restart
|
- remember window state (shade) on restart
|
||||||
- fixed resize bug
|
- fixed resize bug
|
||||||
@@ -4820,14 +4957,14 @@ Changes since version 0.3.0:
|
|||||||
- added diagonal gradients
|
- added diagonal gradients
|
||||||
- ignoreHideOthers window flag
|
- ignoreHideOthers window flag
|
||||||
- optimized/fixed window raising and lowering
|
- optimized/fixed window raising and lowering
|
||||||
- fixed menu handling: don't need to click on the menu after
|
- fixed menu handling: don't need to click on the menu after
|
||||||
it's opened to select items, just drag the pointer
|
it's opened to select items, just drag the pointer
|
||||||
- _GNUSTEP_WM_RESIZE_WINDOW, _GNUSTEP_WM_RESIZED_WINDOW protocols
|
- _GNUSTEP_WM_RESIZE_WINDOW, _GNUSTEP_WM_RESIZED_WINDOW protocols
|
||||||
- application specified titlebar button pixmaps
|
- application specified titlebar button pixmaps
|
||||||
- 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
|
||||||
@@ -4848,10 +4985,10 @@ with accidental dbl-clicks on the root menu.
|
|||||||
- remade application group code (more stable)
|
- remade application group code (more stable)
|
||||||
- undid stacking code change from 0.2.0
|
- undid stacking code change from 0.2.0
|
||||||
- fixed bug that caused hangs (not sure)
|
- fixed bug that caused hangs (not sure)
|
||||||
- fixed bug that caused window_count error and associated crashes
|
- fixed bug that caused window_count error and associated crashes
|
||||||
- remade application defined menus
|
- remade application defined menus
|
||||||
- vertical gradient
|
- vertical gradient
|
||||||
- I18N support
|
- I18N support
|
||||||
- fixed multiple window selection bug with windows in other workspaces
|
- fixed multiple window selection bug with windows in other workspaces
|
||||||
- changed workspace numbering
|
- changed workspace numbering
|
||||||
- fixed problem with series of X errors when a window is destroyed
|
- fixed problem with series of X errors when a window is destroyed
|
||||||
@@ -4889,7 +5026,7 @@ you focus a shaded window
|
|||||||
- fixed bug that allowed on top window to be lowered
|
- fixed bug that allowed on top window to be lowered
|
||||||
- disappearing xconsole and other initial-state==IconicState windows fixed
|
- disappearing xconsole and other initial-state==IconicState windows fixed
|
||||||
- menus open always inside screen area
|
- menus open always inside screen area
|
||||||
- open submenus are moved with their parents
|
- open submenus are moved with their parents
|
||||||
- keyboard support
|
- keyboard support
|
||||||
- faster menu drawing
|
- faster menu drawing
|
||||||
- hide for applications that use window_group hint fixed (LyX et al)
|
- hide for applications that use window_group hint fixed (LyX et al)
|
||||||
@@ -4952,7 +5089,7 @@ Changes since version 0.0.4:
|
|||||||
- added cpp preprocessing
|
- added cpp preprocessing
|
||||||
- zombie process bug fixed
|
- zombie process bug fixed
|
||||||
- interactive and dumb (cascade) window placement
|
- interactive and dumb (cascade) window placement
|
||||||
- floating transient windows
|
- floating transient windows
|
||||||
- disable mapped submenu entry on parent
|
- disable mapped submenu entry on parent
|
||||||
- added colormap handling stolen from fvwm (temporary)
|
- added colormap handling stolen from fvwm (temporary)
|
||||||
|
|
||||||
@@ -4960,10 +5097,10 @@ Changes since version 0.0.4:
|
|||||||
Changes since version 0.0.3:
|
Changes since version 0.0.3:
|
||||||
............................
|
............................
|
||||||
|
|
||||||
- hide application implemented (just for apps that have the window_group
|
- hide application implemented (just for apps that have the window_group
|
||||||
field of WMHints set or the WM_CLIENT_LEADER property set,
|
field of WMHints set or the WM_CLIENT_LEADER property set,
|
||||||
apparently most Xt based apps)
|
apparently most Xt based apps)
|
||||||
- fixed a crashing bug caused by icons
|
- fixed a crashing bug caused by icons
|
||||||
- internal change on button pixmap structure and other places
|
- internal change on button pixmap structure and other places
|
||||||
- handling of property changes on mapped windows
|
- handling of property changes on mapped windows
|
||||||
- fixed bug in event handling (MapRequest)
|
- fixed bug in event handling (MapRequest)
|
||||||
|
|||||||
+43
-5
@@ -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 configuration is stored */' >> $@
|
@echo '/* where the global defaults are stored */' >> $@
|
||||||
@echo '#define SYSCONFDIR "$(sysconfdir)"' >> $@
|
@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))
|
||||||
@@ -106,6 +142,8 @@ configure-documentation:
|
|||||||
--ignore-prg 'enable-shared,enable-static # should be in INSTALL' \
|
--ignore-prg 'enable-shared,enable-static # should be in INSTALL' \
|
||||||
--ignore-prg 'disable-option-checking,enable-fast-install # should be in INSTALL' \
|
--ignore-prg 'disable-option-checking,enable-fast-install # should be in INSTALL' \
|
||||||
--ignore-prg 'disable-libtool-lock,with-pic,with-gnu-ld,with-sysroot # for libtool' \
|
--ignore-prg 'disable-libtool-lock,with-pic,with-gnu-ld,with-sysroot # for libtool' \
|
||||||
|
--ignore-prg 'runstatedir #new in autoconf 2.70, backported in Debian' \
|
||||||
|
--ignore-prg 'with-aix-soname #new in libtool 2.4.4' \
|
||||||
--ignore-prg 'with-x # no use, it would not work without X'
|
--ignore-prg 'with-x # no use, it would not work without X'
|
||||||
|
|
||||||
.PHONY: configure-documentation
|
.PHONY: configure-documentation
|
||||||
|
|||||||
@@ -1,7 +1,316 @@
|
|||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
Configurable SwitchPanel
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
SwitchPanel is now more configurable: you can configure the switch panel icon
|
||||||
|
size by setting the "SwitchPanelIconSize" option to your preferred value in
|
||||||
|
~/GNUstep/Defaults/WindowMaker. The font size used in this panel now is also
|
||||||
|
sensible to changes in the system font.
|
||||||
|
|
||||||
|
|
||||||
|
New user configuration directory environment variable
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
In previous versions, the GNUstep directory used to store a user's Window Maker
|
||||||
|
configuration files was specified by the GNUSTEP_USER_ROOT environment variable,
|
||||||
|
which defaulted to ~/GNUstep. However, this environment variable was deprecated
|
||||||
|
in gnustep-make v2. Therefore, it has been replaced by the WMAKER_USER_ROOT
|
||||||
|
environment variable.
|
||||||
|
|
||||||
|
|
||||||
|
libXmu is now an optional dependency
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
If the library is not found, compilation work, the only limitation will arise
|
||||||
|
when trying to install the standard colormap on displays which are not TrueColor.
|
||||||
|
Please note that if you have the library but not the headers, configure will
|
||||||
|
still stop; there is no user option to explicitly disable the library use.
|
||||||
|
|
||||||
|
|
||||||
|
-- 0.95.8
|
||||||
|
|
||||||
|
Move pointer with maximized windows
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
Implementation for moving mouse pointer within the maximized window.
|
||||||
|
|
||||||
|
Mouse pointer can be now moved together with window if keyboard was used for
|
||||||
|
arrange maximized windows on screen. This feature can be turned on in WPrefs.app
|
||||||
|
in Expert tab by selecting "Move mouse pointer with half maximized windows.", or
|
||||||
|
setting "PointerWithHalfMaxWindows" to "Yes" on ~/GNUstep/Defaults/WindowMaker
|
||||||
|
file.
|
||||||
|
|
||||||
|
|
||||||
|
Alternative way for traverse half-maximized windows
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
For now, there could be three possible state of the window while using
|
||||||
|
half-maximized feature. Unmaximized window have its state saved during that
|
||||||
|
process, which was use to unmaximize it. For example, if there is a window,
|
||||||
|
which is maximized on the half left side of the screen, and while requesting
|
||||||
|
left-half-maximized, it become unmaximized with size and dimension restored to
|
||||||
|
original state.
|
||||||
|
|
||||||
|
By setting "AlternativeHalfMaximized" option to "Yes"
|
||||||
|
~/GNUstep/Defaults/WindowMaker config file (or by using WPrefs.app and option
|
||||||
|
"Alternative transitions between states for half maximized windows."), there
|
||||||
|
would be slightly different change in window "traverse". Given layout depicted
|
||||||
|
below:
|
||||||
|
|
||||||
|
┌┬────────────────────┬┐
|
||||||
|
├┘ ┌───────┐ ├┤
|
||||||
|
│ ├───────┤ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ └───────┘ └┤
|
||||||
|
├┬┐ │
|
||||||
|
└┴┴────────────────────┘
|
||||||
|
|
||||||
|
Window can be moved using keyboard shortcut right-half-maximize:
|
||||||
|
|
||||||
|
┌┬─────────┬──────────┬┐
|
||||||
|
├┘ ├──────────┼┤
|
||||||
|
│ │ ├┤
|
||||||
|
│ │ ├┤
|
||||||
|
│ │ ├┤
|
||||||
|
│ │ ├┤
|
||||||
|
├┬┐ └──────────┘│
|
||||||
|
└┴┴────────────────────┘
|
||||||
|
|
||||||
|
Further invoking right-half-maximize will do nothing. Note, that window always
|
||||||
|
can be unmaximzied using appropriate keyboard shortcut or by selecting
|
||||||
|
"Unmaximize" from window menu.
|
||||||
|
|
||||||
|
Going to opposite direction by invoking left-half-maximize, will make the window
|
||||||
|
maximized in both, vertical and horizontal directions:
|
||||||
|
|
||||||
|
┌─────────────────────┬┐
|
||||||
|
├─────────────────────┼┤
|
||||||
|
│ ├┤
|
||||||
|
│ ├┤
|
||||||
|
│ ├┤
|
||||||
|
│ ├┤
|
||||||
|
├┬┬───────────────────┘│
|
||||||
|
└┴┴────────────────────┘
|
||||||
|
|
||||||
|
Further invoking left-half-maximize, will make the window maximized in half left
|
||||||
|
side od the screen:
|
||||||
|
|
||||||
|
┌──────────┬──────────┬┐
|
||||||
|
├──────────┤ ├┤
|
||||||
|
│ │ ├┤
|
||||||
|
│ │ ├┤
|
||||||
|
│ │ ├┤
|
||||||
|
│ │ └┤
|
||||||
|
├┬┬────────┘ │
|
||||||
|
└┴┴────────────────────┘
|
||||||
|
|
||||||
|
And again, further invoking left-half-maximize, will do nothing in this mode.
|
||||||
|
|
||||||
|
This change affects all possible half-maximized window state also quarters.
|
||||||
|
Issuing bottom-left-corner will take lower left quarter of the screen (nothing
|
||||||
|
is new so far):
|
||||||
|
|
||||||
|
┌┬────────────────────┬┐
|
||||||
|
├┘ ├┤
|
||||||
|
│ ├┤
|
||||||
|
├──────────┐ ├┤
|
||||||
|
├──────────┤ ├┤
|
||||||
|
│ │ └┤
|
||||||
|
├┬┬────────┘ │
|
||||||
|
└┴┴────────────────────┘
|
||||||
|
|
||||||
|
Issuing bottom-right-corner again will change window state to bottom half
|
||||||
|
maximized:
|
||||||
|
|
||||||
|
┌┬────────────────────┬┐
|
||||||
|
├┘ ├┤
|
||||||
|
│ ├┤
|
||||||
|
├─────────────────────┼┤
|
||||||
|
├─────────────────────┼┤
|
||||||
|
│ ├┤
|
||||||
|
├┬┬───────────────────┘│
|
||||||
|
└┴┴────────────────────┘
|
||||||
|
|
||||||
|
Invoking bottom-right-corner again:
|
||||||
|
|
||||||
|
┌┬────────────────────┬┐
|
||||||
|
├┘ ├┤
|
||||||
|
│ ├┤
|
||||||
|
│ ┌──────────┼┤
|
||||||
|
│ ├──────────┼┤
|
||||||
|
│ │ ├┤
|
||||||
|
├┬┐ └──────────┘│
|
||||||
|
└┴┴────────────────────┘
|
||||||
|
|
||||||
|
Issuing bottom-right-corner again will have no effect.
|
||||||
|
|
||||||
|
|
||||||
|
Move half-maximized windows between the screens
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
New option was introduced to allow change of behaviour of half-maximize windows
|
||||||
|
in multiple displays environment. In such environment it is more natural that
|
||||||
|
half maximized windows would travel from one screen to another. Now it is
|
||||||
|
possible to make that happen by setting an option
|
||||||
|
"MoveHalfMaximizedWindowsBetweenScreens" to "Yes" in
|
||||||
|
~/GNUstep/Defaults/WindowMaker config file, or by checking "Allow move
|
||||||
|
half-maximized windows between multiple screens." in 'Expert User Preferences"
|
||||||
|
tab in WPrefs.app.
|
||||||
|
|
||||||
|
For example, given there are two screens in layout where one display is on the
|
||||||
|
left and second display is on the right with window on first screen:
|
||||||
|
|
||||||
|
┌┬────────────────┬─────────────────┬┐
|
||||||
|
├┘ ┌───────┐ │ ├┤
|
||||||
|
│ ├───────┤ │ ├┤
|
||||||
|
│ │ │ │ ├┤
|
||||||
|
│ │ │ │ ├┤
|
||||||
|
│ └───────┘ │ └┤
|
||||||
|
├┬┐ ├┬┬┐ │
|
||||||
|
└┴┴───────────────┴┴┴┴───────────────┘
|
||||||
|
|
||||||
|
It can be right-half-maximized (using previously defined key combination), so it
|
||||||
|
become:
|
||||||
|
|
||||||
|
┌┬───────┬────────┬─────────────────┬┐
|
||||||
|
├┘ ├────────┤ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ └┤
|
||||||
|
├┬┐ └────────┼┬┬┐ │
|
||||||
|
└┴┴───────────────┴┴┴┴───────────────┘
|
||||||
|
|
||||||
|
In this example there is an assumption that WindowMaker is configured, that
|
||||||
|
maximized windows wont cover mini icons nor dock.
|
||||||
|
|
||||||
|
Without setting new option to true, issuing another right-half-maximize will
|
||||||
|
restore window dimensions and position to the original state (like on the first
|
||||||
|
figure). With new option set to true it will move window to second screen like:
|
||||||
|
|
||||||
|
┌┬────────────────┬────────┬────────┬┐
|
||||||
|
├┘ ├────────┤ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ └┤
|
||||||
|
├┬┐ ├┬┬┬─────┘ │
|
||||||
|
└┴┴───────────────┴┴┴┴───────────────┘
|
||||||
|
|
||||||
|
Another activation of right-half-maxmimize:
|
||||||
|
|
||||||
|
┌┬────────────────┬────────┬────────┬┐
|
||||||
|
├┘ │ ├────────┼┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
├┬┐ ├┬┬┐ └────────┘│
|
||||||
|
└┴┴───────────────┴┴┴┴───────────────┘
|
||||||
|
|
||||||
|
And final activation of right-half-maxmimize:
|
||||||
|
|
||||||
|
┌┬────────────────┬───────┬─────────┬┐
|
||||||
|
├┘ ├───────┤ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ │ │ ├┤
|
||||||
|
│ ├───────┘ ├┤
|
||||||
|
│ │ └┤
|
||||||
|
├┬┐ ├┬┬┐ │
|
||||||
|
└┴┴───────────────┴┴┴┴───────────────┘
|
||||||
|
|
||||||
|
Where window is restored its size (but not position, since it it on different
|
||||||
|
head now). Moving window in directions like left-half-maximize,
|
||||||
|
top-half-maximize and bottom-half-maximize will behave in similar way depending
|
||||||
|
on the layout of displays.
|
||||||
|
|
||||||
|
Note, that only windows that are half-maximized vertically or horizontally can
|
||||||
|
be moved to another screen due to the fact, that direction of movement of
|
||||||
|
quarter-maximized windows is ambiguous. As for vertical/horizontal-maximize,
|
||||||
|
since doesn't move the window but only stretch it vertically/horizontally this
|
||||||
|
feature also doesn't apply.
|
||||||
|
|
||||||
|
|
||||||
|
Snapping a window to the top
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
You can now choose whether snapping a window to the top edge of the screen
|
||||||
|
maximizes it to the top half (the previous and default behavior) or to the
|
||||||
|
full screen by setting "SnapToTopMaximizesFullscreen" to "NO" or "YES",
|
||||||
|
respectively. This setting can also be changed by unchecking or checking
|
||||||
|
"Snapping a window to the top maximizes it to the full screen" in the
|
||||||
|
"Expert User Preferences" tab in WPrefs.app.
|
||||||
|
|
||||||
|
Global defaults directory configuration
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
You can now configure the global defaults directory, where the system
|
||||||
|
WindowMaker, WMRootMenu, etc. files are stored, by running
|
||||||
|
./configure --with-defsdatadir=/path/to/defaults
|
||||||
|
at build time. The previous method, which only partially worked, involved
|
||||||
|
defining the GLOBAL_DEFAULTS_SUBDIR macro. This is no longer available.
|
||||||
|
Note that the default location is ${sysconfdir}/WindowMaker.
|
||||||
|
|
||||||
-- 0.95.7
|
-- 0.95.7
|
||||||
|
|
||||||
Window snapping
|
Window snapping
|
||||||
@@ -411,7 +720,7 @@ The 4 corner images will be copied in their original sizes and the rest will
|
|||||||
be scaled to the final panel size.
|
be scaled to the final panel size.
|
||||||
|
|
||||||
background_image, width and height are optional. If you leave them out,
|
background_image, width and height are optional. If you leave them out,
|
||||||
a gray panel will be used. If your machine is not very fast, you may want
|
a gray panel will be used. If your machine is not very fast, you may want
|
||||||
to use it.
|
to use it.
|
||||||
|
|
||||||
|
|
||||||
@@ -434,7 +743,7 @@ Antialiased font support
|
|||||||
With the addition of Xft2 support in the WINGs library, now
|
With the addition of Xft2 support in the WINGs library, now
|
||||||
Window Maker can display antialiased text with TrueType or any scalable fonts.
|
Window Maker can display antialiased text with TrueType or any scalable fonts.
|
||||||
|
|
||||||
You can pick fonts for Window Maker in the Font configuration section of
|
You can pick fonts for Window Maker in the Font configuration section of
|
||||||
WPrefs.
|
WPrefs.
|
||||||
|
|
||||||
Antialiased text is enabled by default, but can be disabled by adding
|
Antialiased text is enabled by default, but can be disabled by adding
|
||||||
@@ -468,7 +777,7 @@ These are to be proplist format menus, for example:
|
|||||||
|
|
||||||
or, in case you want a submenu:
|
or, in case you want a submenu:
|
||||||
|
|
||||||
(("Submenu",
|
(("Submenu",
|
||||||
("Foobar", EXEC, foobar),
|
("Foobar", EXEC, foobar),
|
||||||
("Blabla", EXEC, blabla)))
|
("Blabla", EXEC, blabla)))
|
||||||
|
|
||||||
@@ -511,7 +820,7 @@ shading and unshading respectfully.
|
|||||||
|
|
||||||
However, to avoid unwanted triggers of shading/unshading the window, two
|
However, to avoid unwanted triggers of shading/unshading the window, two
|
||||||
consecutive mouse wheel events in the same direction are required. The
|
consecutive mouse wheel events in the same direction are required. The
|
||||||
trigger won't occur if the events are separated by more than a double-click's
|
trigger won't occur if the events are separated by more than a double-click's
|
||||||
worth of time, which is technically speaking like making a double-click with
|
worth of time, which is technically speaking like making a double-click with
|
||||||
the button that corresponds to the mouse wheel direction.
|
the button that corresponds to the mouse wheel direction.
|
||||||
|
|
||||||
@@ -616,7 +925,7 @@ Less dependencies
|
|||||||
|
|
||||||
starting with 0.70.0 libPropList is no longer required to build Window
|
starting with 0.70.0 libPropList is no longer required to build Window
|
||||||
Maker. PropList handling code was added to WINGs being now better
|
Maker. PropList handling code was added to WINGs being now better
|
||||||
integrated with all the rest. For more details check the Changelog and the
|
integrated with all the rest. For more details check the Changelog and the
|
||||||
following files:
|
following files:
|
||||||
./WINGs/ChangeLog
|
./WINGs/ChangeLog
|
||||||
./WINGs/NEWS
|
./WINGs/NEWS
|
||||||
@@ -689,9 +998,9 @@ behavior regarding workspaces you can now (use WPrefs.app to do this).
|
|||||||
Client supplied icons
|
Client supplied icons
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
Window Maker saves the client supplied icons in
|
Window Maker saves the client supplied icons in
|
||||||
~/GNUstep/Library/WindowMaker/CachedPixmaps in XPM format for later use
|
~/GNUstep/Library/WindowMaker/CachedPixmaps in XPM format for later use
|
||||||
when the app is no longer running (to have the image to display for docked
|
when the app is no longer running (to have the image to display for docked
|
||||||
icons for example).
|
icons for example).
|
||||||
|
|
||||||
Until recently the XPM images saved by Window Maker were incorrect, but a
|
Until recently the XPM images saved by Window Maker were incorrect, but a
|
||||||
@@ -699,9 +1008,9 @@ recent fix in the code to save XPM's fixed them. But with this fix, all
|
|||||||
previously saved XPM's in that directory are no longer readable (they give
|
previously saved XPM's in that directory are no longer readable (they give
|
||||||
wrong images on screen or fail to load).
|
wrong images on screen or fail to load).
|
||||||
|
|
||||||
To avoid the need for the user to fix this by hand editing WMWindowAttributes
|
To avoid the need for the user to fix this by hand editing WMWindowAttributes
|
||||||
and removing all references to icons in ~/GNUstep/Library/WindowMaker/CachedPixmaps
|
and removing all references to icons in ~/GNUstep/Library/WindowMaker/CachedPixmaps
|
||||||
which can be annoying, new code was added to Window Maker to permit the
|
which can be annoying, new code was added to Window Maker to permit the
|
||||||
regeneration of images in ~/GNUstep/Library/WindowMaker/CachedPixmaps if they are missing.
|
regeneration of images in ~/GNUstep/Library/WindowMaker/CachedPixmaps if they are missing.
|
||||||
|
|
||||||
With this addition, all you need to do to fix your old broken images, is to
|
With this addition, all you need to do to fix your old broken images, is to
|
||||||
@@ -803,7 +1112,7 @@ performance increases can go up to 150%
|
|||||||
Weendoze Window Cycling (alt-tab)
|
Weendoze Window Cycling (alt-tab)
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
Window cycling was changed to weendoze style.
|
Window cycling was changed to weendoze style.
|
||||||
|
|
||||||
|
|
||||||
NoBorder Window Attribute
|
NoBorder Window Attribute
|
||||||
@@ -899,7 +1208,7 @@ arguments. To code new plugin, please see plugin.h for more information.
|
|||||||
User Menu
|
User Menu
|
||||||
---------
|
---------
|
||||||
|
|
||||||
The user menu is now a compile time option disabled by default.
|
The user menu is now a compile time option disabled by default.
|
||||||
Supply --enable-usermenu to configure to enable it.
|
Supply --enable-usermenu to configure to enable it.
|
||||||
|
|
||||||
|
|
||||||
@@ -1033,7 +1342,7 @@ New Options
|
|||||||
MenuStyle=<style>; will change the menu texture style.
|
MenuStyle=<style>; will change the menu texture style.
|
||||||
|
|
||||||
<style> can be:
|
<style> can be:
|
||||||
normal (default): for the traditional one texture per item, with bevels in
|
normal (default): for the traditional one texture per item, with bevels in
|
||||||
each
|
each
|
||||||
|
|
||||||
singleTexture: for a single texture that spans the whole menu, with bevels
|
singleTexture: for a single texture that spans the whole menu, with bevels
|
||||||
@@ -1050,7 +1359,7 @@ where <texture> is any of the textures you normally use in titlebars and
|
|||||||
other places.
|
other places.
|
||||||
|
|
||||||
If the style file/theme does not contain a ResizebarBack option, setstyle
|
If the style file/theme does not contain a ResizebarBack option, setstyle
|
||||||
will automatically hack it so that wmaker will make the theme work like
|
will automatically hack it so that wmaker will make the theme work like
|
||||||
before.
|
before.
|
||||||
|
|
||||||
|
|
||||||
@@ -1151,7 +1460,7 @@ Full Screen Maximization
|
|||||||
The FullMaximize window attribute will allow the window to
|
The FullMaximize window attribute will allow the window to
|
||||||
be maximized to the full size of the screen (ignoring anything
|
be maximized to the full size of the screen (ignoring anything
|
||||||
like titlebar, resizebar, dock, panels etc). It should be useful
|
like titlebar, resizebar, dock, panels etc). It should be useful
|
||||||
for programs that must use the whole screen, like games or things
|
for programs that must use the whole screen, like games or things
|
||||||
like presentation programs.
|
like presentation programs.
|
||||||
|
|
||||||
|
|
||||||
@@ -1160,7 +1469,7 @@ like presentation programs.
|
|||||||
KDE Application Menu script
|
KDE Application Menu script
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
wkdemenu.pl is a converter from KDE application menu structures to wmaker
|
wkdemenu.pl is a converter from KDE application menu structures to wmaker
|
||||||
menu that can be used as a piped menu. Look wkdemenu.sh for how to use it.
|
menu that can be used as a piped menu. Look wkdemenu.sh for how to use it.
|
||||||
|
|
||||||
|
|
||||||
@@ -1190,14 +1499,14 @@ Window Maker has become a GNU program (part of the GNU Project).
|
|||||||
Title text drop shadow
|
Title text drop shadow
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
drop shadow option added for titlebar text. This is a compile time
|
drop shadow option added for titlebar text. This is a compile time
|
||||||
option which needs to be defined in src/wconfig.h after you run
|
option which needs to be defined in src/wconfig.h after you run
|
||||||
configure and before you run make.
|
configure and before you run make.
|
||||||
|
|
||||||
New options and syntax for your WindowMaker domain file are:
|
New options and syntax for your WindowMaker domain file are:
|
||||||
|
|
||||||
Shadow = yes/no;
|
Shadow = yes/no;
|
||||||
FShadowColor = <color>;
|
FShadowColor = <color>;
|
||||||
PShadowColor = <color>;
|
PShadowColor = <color>;
|
||||||
UShadowColor = <color>;
|
UShadowColor = <color>;
|
||||||
MShadowColor = <color>;
|
MShadowColor = <color>;
|
||||||
@@ -1261,7 +1570,7 @@ it will scale the pixmap by keeping the aspect ratio (maximize or maxpect).
|
|||||||
The option only works for workspace backgrounds.
|
The option only works for workspace backgrounds.
|
||||||
|
|
||||||
Also added IGNORE_PPOSITION compile time flag, which is equivalent
|
Also added IGNORE_PPOSITION compile time flag, which is equivalent
|
||||||
to NoPPosition from fvwm.
|
to NoPPosition from fvwm.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1272,7 +1581,7 @@ to NoPPosition from fvwm.
|
|||||||
KDE and GNOME
|
KDE and GNOME
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Added full support for GNOME and KWM hints.
|
Added full support for GNOME and KWM hints.
|
||||||
Read the INSTALL file to see how enable them.
|
Read the INSTALL file to see how enable them.
|
||||||
|
|
||||||
Everything in the so called GNOME window manager bla bla bla pseudo-spec is
|
Everything in the so called GNOME window manager bla bla bla pseudo-spec is
|
||||||
@@ -1281,13 +1590,13 @@ implemented.
|
|||||||
As for KDE stuff, it implements 90% of everything kwm does, adds some
|
As for KDE stuff, it implements 90% of everything kwm does, adds some
|
||||||
Window Maker specific extensions to it and still uses half of the memory
|
Window Maker specific extensions to it and still uses half of the memory
|
||||||
kwm does, which should be enough to let you dump kwm ;) For details on what
|
kwm does, which should be enough to let you dump kwm ;) For details on what
|
||||||
exactly is implemented, see comments in src/kwm.c Read the README.KDE file
|
exactly is implemented, see comments in src/kwm.c Read the README.KDE file
|
||||||
for more information.
|
for more information.
|
||||||
|
|
||||||
|
|
||||||
WARNING: Some KDE hints are badly designed, so doing things like using
|
WARNING: Some KDE hints are badly designed, so doing things like using
|
||||||
kpanel's desktop switcher/pager and Window Maker's internal workspace
|
kpanel's desktop switcher/pager and Window Maker's internal workspace
|
||||||
management functions to create, destroy and rename workspaces at the same
|
management functions to create, destroy and rename workspaces at the same
|
||||||
time might cause unknown effects. To be on the safe side, only
|
time might cause unknown effects. To be on the safe side, only
|
||||||
use either of them to manage workspaces. Switching workspaces is hopefully,
|
use either of them to manage workspaces. Switching workspaces is hopefully,
|
||||||
safe, so you can switch workspaces from wherever you want.
|
safe, so you can switch workspaces from wherever you want.
|
||||||
@@ -1302,7 +1611,7 @@ workspaces. The WorkspaceBack is used as the default background image.
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
WorkspaceSpecificBack = ((solid, red), (cpixmap, ship.jpg, gray), (),
|
WorkspaceSpecificBack = ((solid, red), (cpixmap, ship.jpg, gray), (),
|
||||||
(dgradient, red, blue))
|
(dgradient, red, blue))
|
||||||
|
|
||||||
This will set the background image of workspace 1 to (solid, 0),
|
This will set the background image of workspace 1 to (solid, 0),
|
||||||
@@ -1331,8 +1640,8 @@ WindowMaker/README.themes file.
|
|||||||
New Texture Type
|
New Texture Type
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
Textured gradients will tile a texture pixmap and combine it with a gradient,
|
Textured gradients will tile a texture pixmap and combine it with a gradient,
|
||||||
using an arbitrary opaqueness.
|
using an arbitrary opaqueness.
|
||||||
|
|
||||||
Syntax is (thgradient, <file>, <opaqueness>, <color1>, <color2>)
|
Syntax is (thgradient, <file>, <opaqueness>, <color1>, <color2>)
|
||||||
(tvgradient, <file>, <opaqueness>, <color1>, <color2>)
|
(tvgradient, <file>, <opaqueness>, <color1>, <color2>)
|
||||||
@@ -1389,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.
|
||||||
|
|
||||||
@@ -1403,7 +1712,7 @@ the old format is still supported. The new format is documented
|
|||||||
in the WindowMaker/README.themes file.
|
in the WindowMaker/README.themes file.
|
||||||
|
|
||||||
|
|
||||||
Root Menu
|
Root Menu
|
||||||
---------
|
---------
|
||||||
|
|
||||||
The -noext option for OPEN_MENU will strip whatever is after the last .
|
The -noext option for OPEN_MENU will strip whatever is after the last .
|
||||||
@@ -1431,7 +1740,7 @@ WDesktopLevel
|
|||||||
|
|
||||||
If you have a 5 button mouse and want to give some utility for
|
If you have a 5 button mouse and want to give some utility for
|
||||||
the extra 2 buttons, edit the appropriate line in src/wconfig.h
|
the extra 2 buttons, edit the appropriate line in src/wconfig.h
|
||||||
Clicking Button4 in the root window will switch you to the previous
|
Clicking Button4 in the root window will switch you to the previous
|
||||||
workspace and Button5 will do that for the next.
|
workspace and Button5 will do that for the next.
|
||||||
|
|
||||||
|
|
||||||
@@ -1457,7 +1766,7 @@ Hysteresis for menu item selection
|
|||||||
Hopefully it's intelligent enough, so you won't notice it.
|
Hopefully it's intelligent enough, so you won't notice it.
|
||||||
|
|
||||||
In case you want to know what's it, it's equivalent to that
|
In case you want to know what's it, it's equivalent to that
|
||||||
(insanely long) 2 second delay present in that Windoze95 menu,
|
(insanely long) 2 second delay present in that Windoze95 menu,
|
||||||
but more useful than annoying (I hope :). To see it, do the following
|
but more useful than annoying (I hope :). To see it, do the following
|
||||||
with your current wmaker version and later with 0.20.3:
|
with your current wmaker version and later with 0.20.3:
|
||||||
|
|
||||||
@@ -1546,7 +1855,7 @@ make
|
|||||||
make install
|
make install
|
||||||
|
|
||||||
You also don't need to worry about GNOME libPropList incompatibilities
|
You also don't need to worry about GNOME libPropList incompatibilities
|
||||||
anymore.
|
anymore.
|
||||||
|
|
||||||
|
|
||||||
Bug with focus lost in sloppy focus fixed
|
Bug with focus lost in sloppy focus fixed
|
||||||
@@ -1585,11 +1894,11 @@ optimize it and remove a few hundred of bytes, then use --disable-sound or
|
|||||||
|
|
||||||
--- 0.20.0
|
--- 0.20.0
|
||||||
|
|
||||||
|
|
||||||
Multihead support. wmaker will now manage all screens that are attached to the
|
Multihead support. wmaker will now manage all screens that are attached to the
|
||||||
display.
|
display.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
It does so from a single process (instead of spawning a new process for each
|
It does so from a single process (instead of spawning a new process for each
|
||||||
screen, like fvwm does). This keeps memory usage a lot lower than fvwm.
|
screen, like fvwm does). This keeps memory usage a lot lower than fvwm.
|
||||||
@@ -1687,7 +1996,7 @@ c3 can be v or h (meaning vertical or horizontal)
|
|||||||
|
|
||||||
case is insensitive.
|
case is insensitive.
|
||||||
|
|
||||||
For example,
|
For example,
|
||||||
IconPosition = blh;
|
IconPosition = blh;
|
||||||
|
|
||||||
is the old iconPosition position.
|
is the old iconPosition position.
|
||||||
@@ -1744,7 +2053,7 @@ submenus was removed, so a menu that looked like:
|
|||||||
|
|
||||||
( Applications,
|
( Applications,
|
||||||
("Xterm", EXEC, "xterm"),
|
("Xterm", EXEC, "xterm"),
|
||||||
(
|
(
|
||||||
(Paint,
|
(Paint,
|
||||||
("Gimp", EXEC, "gimp"),
|
("Gimp", EXEC, "gimp"),
|
||||||
("XV", EXEC, "xv")
|
("XV", EXEC, "xv")
|
||||||
@@ -1768,7 +2077,7 @@ Misc
|
|||||||
----
|
----
|
||||||
|
|
||||||
NUMLOCK_HACK is back. This time it works and is enabled by default.
|
NUMLOCK_HACK is back. This time it works and is enabled by default.
|
||||||
If you think you don't need it and promise me that you won't send
|
If you think you don't need it and promise me that you won't send
|
||||||
"bug" reports saying that shortcuts stop working after a while, you can
|
"bug" reports saying that shortcuts stop working after a while, you can
|
||||||
disable it ;) It will save some memory and CPU.
|
disable it ;) It will save some memory and CPU.
|
||||||
|
|
||||||
@@ -1812,7 +2121,7 @@ New Options
|
|||||||
-----------
|
-----------
|
||||||
|
|
||||||
PixmapPath was split to PixmapPath and IconPath. PixmapPath is the path
|
PixmapPath was split to PixmapPath and IconPath. PixmapPath is the path
|
||||||
for the pixmaps used as textures and IconPath is for the icons.
|
for the pixmaps used as textures and IconPath is for the icons.
|
||||||
Don't forget to add IconPath to your current configuration file.
|
Don't forget to add IconPath to your current configuration file.
|
||||||
|
|
||||||
There's also a new library in ~/GNUstep/Library/Icons. You should place
|
There's also a new library in ~/GNUstep/Library/Icons. You should place
|
||||||
@@ -1858,7 +2167,7 @@ Misc. Changes
|
|||||||
|
|
||||||
Removed --with-gnome and made MWM_HINTS defined by default.
|
Removed --with-gnome and made MWM_HINTS defined by default.
|
||||||
This means that "GNOME support" will work with no additional
|
This means that "GNOME support" will work with no additional
|
||||||
flags passed to configure.
|
flags passed to configure.
|
||||||
|
|
||||||
Added support for KDE, by adding a DisableWorkspaceMouseActions option.
|
Added support for KDE, by adding a DisableWorkspaceMouseActions option.
|
||||||
Set it to YES and run krootwm to be able to use everything in kfm.
|
Set it to YES and run krootwm to be able to use everything in kfm.
|
||||||
@@ -1885,7 +2194,7 @@ Interface Changes
|
|||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
** Configuration of docked applications is now done in a panel instead of
|
** Configuration of docked applications is now done in a panel instead of
|
||||||
in the menu.
|
in the menu.
|
||||||
|
|
||||||
** Added a command menu for application icons
|
** Added a command menu for application icons
|
||||||
|
|
||||||
@@ -2063,7 +2372,7 @@ Now, selecting icons is as easy as clicking in the file name in a list.
|
|||||||
Simplified Options
|
Simplified Options
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
IconSlideStep, IconSlideSlowDown and IconSlideDelay were merged to
|
IconSlideStep, IconSlideSlowDown and IconSlideDelay were merged to
|
||||||
IconSlideSpeed
|
IconSlideSpeed
|
||||||
|
|
||||||
MenuScrollStep and MenuScrollDelay were merged to MenuScrollSpeed
|
MenuScrollStep and MenuScrollDelay were merged to MenuScrollSpeed
|
||||||
@@ -2318,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.
|
||||||
@@ -2861,7 +3170,7 @@ thus, making a menu with entries like:
|
|||||||
(mhgradient, colorX, color1, color2, color3, ..., colorn)
|
(mhgradient, colorX, color1, color2, color3, ..., colorn)
|
||||||
(mvgradient, colorX, color1, color2, color3, ..., colorn)
|
(mvgradient, colorX, color1, color2, color3, ..., colorn)
|
||||||
|
|
||||||
You can put any number of colors >= 2.
|
You can put any number of colors >= 2.
|
||||||
|
|
||||||
colorX is a special color that is used as the solid color of the
|
colorX is a special color that is used as the solid color of the
|
||||||
texture when wmaker needs a solid color (like in miniwindow title and
|
texture when wmaker needs a solid color (like in miniwindow title and
|
||||||
@@ -2921,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:
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -2952,13 +3261,13 @@ then you can merge both and have:
|
|||||||
The configuration format has changed!! Forget everything about the old
|
The configuration format has changed!! Forget everything about the old
|
||||||
format.
|
format.
|
||||||
|
|
||||||
dockapp was removed and the old version will not work anymore.
|
dockapp was removed and the old version will not work anymore.
|
||||||
|
|
||||||
the dialogs require tcl/tk. they will be rewritten in plain C
|
the dialogs require tcl/tk. they will be rewritten in plain C
|
||||||
|
|
||||||
|
|
||||||
These are some tips for people upgrading from older versions and don't want
|
These are some tips for people upgrading from older versions and don't want
|
||||||
too many unused files around. There is no problem if you decide to keep
|
too many unused files around. There is no problem if you decide to keep
|
||||||
them for a while.
|
them for a while.
|
||||||
|
|
||||||
you can rm -r ~/gnustep if you don't want anything from there
|
you can rm -r ~/gnustep if you don't want anything from there
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
by
|
by
|
||||||
|
|
||||||
Alfredo K. Kojima
|
Alfredo K. Kojima
|
||||||
|
|
||||||
Dan Pascu
|
Dan Pascu
|
||||||
|
|
||||||
@@ -21,19 +21,19 @@
|
|||||||
|
|
||||||
|
|
||||||
Congratulations! You have purchased an extremely fine
|
Congratulations! You have purchased an extremely fine
|
||||||
device that would give you thousands of years of trouble-free
|
device that would give you thousands of years of trouble-free
|
||||||
service, except that you undoubtedly will destroy it via some
|
service, except that you undoubtedly will destroy it via some
|
||||||
typical bonehead consumer maneuver. Which is why we ask you
|
typical bonehead consumer maneuver. Which is why we ask you
|
||||||
to PLEASE FOR GOD'S SAKE READ THIS OWNER'S MANUAL CAREFULLY
|
to PLEASE FOR GOD'S SAKE READ THIS OWNER'S MANUAL CAREFULLY
|
||||||
BEFORE YOU UNPACK THE DEVICE. YOU ALREADY UNPACKED IT, DIDN'T
|
BEFORE YOU UNPACK THE DEVICE. YOU ALREADY UNPACKED IT, DIDN'T
|
||||||
YOU? YOU UNPACKED IT AND PLUGGED IT IN AND TURNED IT ON AND
|
YOU? YOU UNPACKED IT AND PLUGGED IT IN AND TURNED IT ON AND
|
||||||
FIDDLED WITH THE KNOBS, AND NOW YOUR CHILD, THE SAME CHILD WHO
|
FIDDLED WITH THE KNOBS, AND NOW YOUR CHILD, THE SAME CHILD WHO
|
||||||
ONCE SHOVED A POLISH SAUSAGE INTO YOUR VIDEOCASSETTE RECORDER
|
ONCE SHOVED A POLISH SAUSAGE INTO YOUR VIDEOCASSETTE RECORDER
|
||||||
AND SET IT ON "FAST FORWARD", THIS CHILD ALSO IS FIDDLING
|
AND SET IT ON "FAST FORWARD", THIS CHILD ALSO IS FIDDLING
|
||||||
WITH THE KNOBS, RIGHT? AND YOU'RE JUST NOW STARTING TO READ
|
WITH THE KNOBS, RIGHT? AND YOU'RE JUST NOW STARTING TO READ
|
||||||
THE INSTRUCTIONS, RIGHT??? WE MIGHT AS WELL JUST BREAK THESE
|
THE INSTRUCTIONS, RIGHT??? WE MIGHT AS WELL JUST BREAK THESE
|
||||||
DEVICES RIGHT AT THE FACTORY BEFORE WE SHIP THEM OUT, YOU
|
DEVICES RIGHT AT THE FACTORY BEFORE WE SHIP THEM OUT, YOU
|
||||||
KNOW THAT?
|
KNOW THAT?
|
||||||
-- Dave Barry, "Read This First!"
|
-- Dave Barry, "Read This First!"
|
||||||
|
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ Documentation
|
|||||||
Read before asking.
|
Read before asking.
|
||||||
|
|
||||||
* README files all over the source tree have info related to the stuff
|
* README files all over the source tree have info related to the stuff
|
||||||
in the directories.
|
in the directories.
|
||||||
|
|
||||||
* INSTALL has installation instructions and some troubleshooting tips.
|
* INSTALL has installation instructions and some troubleshooting tips.
|
||||||
You're meant to read it if you are compiling the sources.
|
You're meant to read it if you are compiling the sources.
|
||||||
@@ -112,7 +112,7 @@ Directories & Files in the Source Tree
|
|||||||
|
|
||||||
* util/ has various utility programs.
|
* util/ has various utility programs.
|
||||||
|
|
||||||
* WPrefs.app/ is the configuration program.
|
* WPrefs.app/ is the configuration program.
|
||||||
|
|
||||||
* src/wconfig.h has compile time options you can change to select some
|
* src/wconfig.h has compile time options you can change to select some
|
||||||
options/features and other stuff.
|
options/features and other stuff.
|
||||||
@@ -129,8 +129,8 @@ HELP ME!!!
|
|||||||
==========
|
==========
|
||||||
|
|
||||||
There is a mailing list for discussing Window Maker at
|
There is a mailing list for discussing Window Maker at
|
||||||
wmaker-user@lists.windowmaker.org To subscribe to it, send a message to
|
wmaker-user@googlegroups.com. To subscribe to it, visit
|
||||||
wmaker-user-subscribe@lists.windowmaker.org
|
https://groups.google.com/forum/#!forum/wmaker-user
|
||||||
|
|
||||||
If you got a problem, ask there (after reading the docs, of course). The people
|
If you got a problem, ask there (after reading the docs, of course). The people
|
||||||
there is more likely to be able to answer your questions than we are. For bug
|
there is more likely to be able to answer your questions than we are. For bug
|
||||||
@@ -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
|
||||||
@@ -203,13 +203,13 @@ while keeping a nice appearance and good functionality, follow the items bellow:
|
|||||||
fully supported). Make sure to always keep NumLock and ScrollLock turned off.
|
fully supported). Make sure to always keep NumLock and ScrollLock turned off.
|
||||||
- turn on DisableAnimations. You can also specify --disable-animation at compile
|
- turn on DisableAnimations. You can also specify --disable-animation at compile
|
||||||
time to the configure script.
|
time to the configure script.
|
||||||
- strip down the default IconPath and PixmapPath entries to contain only
|
- strip down the default IconPath and PixmapPath entries to contain only
|
||||||
the paths that you really have in your system.
|
the paths that you really have in your system.
|
||||||
- do not use large images in the root background
|
- do not use large images in the root background
|
||||||
- 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.
|
||||||
|
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@ To enable it, hit the Control+Shift+NumLock or Shift+NumLock key combination.
|
|||||||
You should hear the speaker beeping. To disable it, do the same thing.
|
You should hear the speaker beeping. To disable it, do the same thing.
|
||||||
|
|
||||||
To control the mouse the numeric keypad is used as follows:
|
To control the mouse the numeric keypad is used as follows:
|
||||||
- 4 (left arrow), 7 (Home), 8 (up arrow), 9 (PgUp), 6 (right arrow),
|
- 4 (left arrow), 7 (Home), 8 (up arrow), 9 (PgUp), 6 (right arrow),
|
||||||
3 (PgDn), 2 (down arrow) and 1 (End) move the mouse to the corresponding
|
3 (PgDn), 2 (down arrow) and 1 (End) move the mouse to the corresponding
|
||||||
direction;
|
direction;
|
||||||
- holding one of the above keys and then holding the 5 key will move the
|
- holding one of the above keys and then holding the 5 key will move the
|
||||||
@@ -311,5 +311,5 @@ project. The name of people who have helped with localization (translation) can
|
|||||||
be found in po/README and Window Maker/README
|
be found in po/README and Window Maker/README
|
||||||
|
|
||||||
If you have any comments, fixes and bug reports (filled BUGFORMs) send them
|
If you have any comments, fixes and bug reports (filled BUGFORMs) send them
|
||||||
to wmaker-dev@lists.windowmaker.org
|
to wmaker-dev@googlegroups.com
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ They have the following meanings:
|
|||||||
|
|
||||||
none The cursor is inherited from the parent window (often,
|
none The cursor is inherited from the parent window (often,
|
||||||
this means the root window).
|
this means the root window).
|
||||||
|
|
||||||
builtin Use the cursor named <cursor-name> from X11's set of
|
builtin Use the cursor named <cursor-name> from X11's set of
|
||||||
built-in cursors. The names are the same as you use
|
built-in cursors. The names are the same as you use
|
||||||
with 'xsetroot -cursor_name'. See the xsetroot(1) man
|
with 'xsetroot -cursor_name'. See the xsetroot(1) man
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ Maybe some day:
|
|||||||
Never: (so, dont even bother to ask)
|
Never: (so, dont even bother to ask)
|
||||||
======
|
======
|
||||||
- different themes for each workspace. Unless you give us a SGI/Power Onyx
|
- different themes for each workspace. Unless you give us a SGI/Power Onyx
|
||||||
with 2 CPUs ;).
|
with 2 CPUs ;).
|
||||||
- anything that requires the mouse pointer to be jumped by WindowMaker to
|
- anything that requires the mouse pointer to be jumped by WindowMaker to
|
||||||
somewhere. This is *terrible* behaviour. And it's not just IMO.
|
somewhere. This is *terrible* behaviour. And it's not just IMO.
|
||||||
- rewrite to use Gtk... I wont even bother to explain why...
|
- rewrite to use Gtk... I wont even bother to explain why...
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ Sending the patch to the mailing list
|
|||||||
|
|
||||||
Send your patches to:
|
Send your patches to:
|
||||||
|
|
||||||
wmaker-dev@lists.windowmaker.org
|
wmaker-dev@googlegroups.com
|
||||||
|
|
||||||
Please do not send patches to any individual developer unless you have a very
|
Please do not send patches to any individual developer unless you have a very
|
||||||
good reason to avoid more people being able to comment (and improve) on your
|
good reason to avoid more people being able to comment (and improve) on your
|
||||||
@@ -147,7 +147,7 @@ you, otherwise you may face the problems below. Doing this is really easy:
|
|||||||
# (of course, replace smtp.example.com with your ISP's)
|
# (of course, replace smtp.example.com with your ISP's)
|
||||||
git config --global sendemail.smtpserver "smtp.example.com"
|
git config --global sendemail.smtpserver "smtp.example.com"
|
||||||
git config --global sendemail.validate true
|
git config --global sendemail.validate true
|
||||||
git config sendemail.to "Window Maker Devel <wmaker-dev@lists.windowmaker.org>"
|
git config sendemail.to "Window Maker Devel <wmaker-dev@googlegroups.com>"
|
||||||
|
|
||||||
# If you're sending more than 1 patch, you may be interested in having an
|
# If you're sending more than 1 patch, you may be interested in having an
|
||||||
# introduction mail for the batch:
|
# introduction mail for the batch:
|
||||||
@@ -205,7 +205,7 @@ Example .gitconfig
|
|||||||
ui = auto
|
ui = auto
|
||||||
[apply]
|
[apply]
|
||||||
whitespace = fix
|
whitespace = fix
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+21
-15
@@ -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:
|
||||||
............................
|
............................
|
||||||
|
|
||||||
@@ -63,7 +69,7 @@ Changes since wmaker 0.80.1:
|
|||||||
- Fixed small memory leak in the font panel code.
|
- Fixed small memory leak in the font panel code.
|
||||||
- Fixed call to qsort in WMSortArray.
|
- Fixed call to qsort in WMSortArray.
|
||||||
- Fixed a memleak in the file panel.
|
- Fixed a memleak in the file panel.
|
||||||
- Double/triple-click selection in text widgets
|
- Double/triple-click selection in text widgets
|
||||||
(Vitaly Ovtchinnikov <ov@rbcmail.ru>)
|
(Vitaly Ovtchinnikov <ov@rbcmail.ru>)
|
||||||
- Fixed bug in tableview (clicked row callback got incorrect row)
|
- Fixed bug in tableview (clicked row callback got incorrect row)
|
||||||
(Carlos Torres <vlaadbrain@operamail.com>)
|
(Carlos Torres <vlaadbrain@operamail.com>)
|
||||||
@@ -102,7 +108,7 @@ Changes since wmaker 0.70.0:
|
|||||||
............................
|
............................
|
||||||
|
|
||||||
- added an internal strcasecmp() (only on systems where is not present)
|
- added an internal strcasecmp() (only on systems where is not present)
|
||||||
- removed some redundant includes of ../src/config.h when wconfig.h is
|
- removed some redundant includes of ../src/config.h when wconfig.h is
|
||||||
included too
|
included too
|
||||||
- removed a wsyserror() message when reading a property list from file
|
- removed a wsyserror() message when reading a property list from file
|
||||||
(the programmer should decide if to give that message or just ignore).
|
(the programmer should decide if to give that message or just ignore).
|
||||||
@@ -117,7 +123,7 @@ Changes since wmaker 0.65.0:
|
|||||||
related error when text was selected in a textfiled.
|
related error when text was selected in a textfiled.
|
||||||
- moved wstrdup(), wstrconcat() and wstrappend() from memory.c to string.c
|
- moved wstrdup(), wstrconcat() and wstrappend() from memory.c to string.c
|
||||||
- added property list handling code making libPropList unnecessary and
|
- added property list handling code making libPropList unnecessary and
|
||||||
obsolete. Backward compatibility is provided through the
|
obsolete. Backward compatibility is provided through the
|
||||||
WINGs/proplist-compat.h header file which has #defines from old libPropList
|
WINGs/proplist-compat.h header file which has #defines from old libPropList
|
||||||
function names to new function names with minimal changes. Read this
|
function names to new function names with minimal changes. Read this
|
||||||
header file and the NEWS file for more details about this subject.
|
header file and the NEWS file for more details about this subject.
|
||||||
@@ -197,7 +203,7 @@ changes since wmaker 0.63.1:
|
|||||||
changes since wmaker 0.62.1:
|
changes since wmaker 0.62.1:
|
||||||
............................
|
............................
|
||||||
- added WRuler widget
|
- added WRuler widget
|
||||||
- added WText widget (rtf multiline text widget)
|
- added WText widget (rtf multiline text widget)
|
||||||
Nwanua Elumeze <nwanua@colorado.edu>
|
Nwanua Elumeze <nwanua@colorado.edu>
|
||||||
- added a new AUTO option for the UseMultiByte option
|
- added a new AUTO option for the UseMultiByte option
|
||||||
- added WMRaiseWidget()/WMLowerWidget()
|
- added WMRaiseWidget()/WMLowerWidget()
|
||||||
@@ -217,7 +223,7 @@ changes since wmaker 0.62.1:
|
|||||||
- added WMGetListSelectedItems()
|
- added WMGetListSelectedItems()
|
||||||
- added WMSetListAllowMultipleSelection(), WMListAllowsMultipleSelection().
|
- added WMSetListAllowMultipleSelection(), WMListAllowsMultipleSelection().
|
||||||
- added WMSetListAllowEmptySelection(), WMListAllowsEmptySelection().
|
- added WMSetListAllowEmptySelection(), WMListAllowsEmptySelection().
|
||||||
- WMListSelectionDidChangeNotification passes NULL as the notification
|
- WMListSelectionDidChangeNotification passes NULL as the notification
|
||||||
client data (previously passed the selected item row).
|
client data (previously passed the selected item row).
|
||||||
- added WMUnselectListItem(), WMSelectAllListItems(), WMUnselectAllListItems()
|
- added WMUnselectListItem(), WMSelectAllListItems(), WMUnselectAllListItems()
|
||||||
- better behavior of wheel mices in WMList. Simple mouse wheel events
|
- better behavior of wheel mices in WMList. Simple mouse wheel events
|
||||||
@@ -243,8 +249,8 @@ changes since wmaker 0.62.1:
|
|||||||
str1 with str2 and returns that in a newly malloc'ed string.
|
str1 with str2 and returns that in a newly malloc'ed string.
|
||||||
Be sure to rename wstrappend with wstrconcat in your code too, else
|
Be sure to rename wstrappend with wstrconcat in your code too, else
|
||||||
hazardous things can happen!
|
hazardous things can happen!
|
||||||
- implemented a new wstrappend() function. wstrappend(dst, src) will append
|
- implemented a new wstrappend() function. wstrappend(dst, src) will append
|
||||||
src to dst modifing dst and returning a pointer to it. No new string is
|
src to dst modifing dst and returning a pointer to it. No new string is
|
||||||
generated, except if dst is NULL, in which case its the same as calling
|
generated, except if dst is NULL, in which case its the same as calling
|
||||||
wstrdup(src).
|
wstrdup(src).
|
||||||
dst can ONLY be NULL or a dynamically allocated string (obtained from a
|
dst can ONLY be NULL or a dynamically allocated string (obtained from a
|
||||||
@@ -334,7 +340,7 @@ changes since wmaker 0.61.1:
|
|||||||
item that is beyond the total number of items present in the popup button.
|
item that is beyond the total number of items present in the popup button.
|
||||||
- changed names of functions for SplitView to be consistent. Some contained
|
- changed names of functions for SplitView to be consistent. Some contained
|
||||||
SubView while other Subview. Now all have Subview.
|
SubView while other Subview. Now all have Subview.
|
||||||
- fixed a bug in how input events were posted. Establishing 2 or more input
|
- fixed a bug in how input events were posted. Establishing 2 or more input
|
||||||
handlers for the same file descriptor, handling different (read/write/except)
|
handlers for the same file descriptor, handling different (read/write/except)
|
||||||
events, caused wrong handlers to be called.
|
events, caused wrong handlers to be called.
|
||||||
- Reimplemented the input and idle handlers with WMBag to avoid a functional
|
- Reimplemented the input and idle handlers with WMBag to avoid a functional
|
||||||
@@ -346,7 +352,7 @@ changes since wmaker 0.61.1:
|
|||||||
2. if new_size is 0, call wfree(old), and return NULL.
|
2. if new_size is 0, call wfree(old), and return NULL.
|
||||||
3. if both old is a valid pointer and new_size>0, call realloc.
|
3. if both old is a valid pointer and new_size>0, call realloc.
|
||||||
- added wstrerror(int errnum) to return the string associated with errnum.
|
- added wstrerror(int errnum) to return the string associated with errnum.
|
||||||
- new wsyserrorwithcode(int error, const char* fmt, ...), similar to
|
- new wsyserrorwithcode(int error, const char* fmt, ...), similar to
|
||||||
wsyserror(), but printing the message for the specified error code.
|
wsyserror(), but printing the message for the specified error code.
|
||||||
- added 3 new classes: WMData, WMHost and WMConnection
|
- added 3 new classes: WMData, WMHost and WMConnection
|
||||||
- fixed a big memory leak in the color panel code (from Pascal Hofstee).
|
- fixed a big memory leak in the color panel code (from Pascal Hofstee).
|
||||||
@@ -357,7 +363,7 @@ changes since wmaker 0.61.0:
|
|||||||
|
|
||||||
- added WMGetTextFieldFont()
|
- added WMGetTextFieldFont()
|
||||||
- escape key in panels (craig nellist <crn@ozemail.com.au>)
|
- escape key in panels (craig nellist <crn@ozemail.com.au>)
|
||||||
- applied patch with fixes and enhancements to textfield
|
- applied patch with fixes and enhancements to textfield
|
||||||
(Franck Wolff <wolff@cybercable.fr>)
|
(Franck Wolff <wolff@cybercable.fr>)
|
||||||
- changed WMList to use WMBag internally, instead of a linked list
|
- changed WMList to use WMBag internally, instead of a linked list
|
||||||
- replaced WMAddSortedListItem() with WMSortListItems()
|
- replaced WMAddSortedListItem() with WMSortListItems()
|
||||||
@@ -437,10 +443,10 @@ changes since wmaker 0.53.0:
|
|||||||
The notifications will still work, but using the delegate is preferable
|
The notifications will still work, but using the delegate is preferable
|
||||||
|
|
||||||
How to convert old code to delegate callbacks:
|
How to convert old code to delegate callbacks:
|
||||||
1 - create a variable (static or dynamic) of the type of the
|
1 - create a variable (static or dynamic) of the type of the
|
||||||
delegate for the widget type.
|
delegate for the widget type.
|
||||||
2 - Replace the notification observers with the equivalent
|
2 - Replace the notification observers with the equivalent
|
||||||
delegate callbacks.
|
delegate callbacks.
|
||||||
3 - Put pointers to the callbacks in the delegate variable.
|
3 - Put pointers to the callbacks in the delegate variable.
|
||||||
|
|
||||||
Take a look in wfilepanel.c to see how it is used there.
|
Take a look in wfilepanel.c to see how it is used there.
|
||||||
@@ -480,7 +486,7 @@ changes since wmaker 0.51.2:
|
|||||||
|
|
||||||
- added WMColorWellDidChangeNotification
|
- added WMColorWellDidChangeNotification
|
||||||
- added wfindfileinarray()
|
- added wfindfileinarray()
|
||||||
- fixed bug in window title setting
|
- fixed bug in window title setting
|
||||||
(MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>)
|
(MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>)
|
||||||
|
|
||||||
changes since wmaker 0.51.1:
|
changes since wmaker 0.51.1:
|
||||||
@@ -611,7 +617,7 @@ I don't remember everything, but here it goes:
|
|||||||
The same panel will be reused every time you call for it, unless you free it.
|
The same panel will be reused every time you call for it, unless you free it.
|
||||||
- changed semantics of WMCreateFont() so that it returns NULL if the requested
|
- changed semantics of WMCreateFont() so that it returns NULL if the requested
|
||||||
font can't be loaded
|
font can't be loaded
|
||||||
- removed WMAddDestroyCallback()
|
- removed WMAddDestroyCallback()
|
||||||
- fixed bug in WMRemovePopUpButtonItem()
|
- fixed bug in WMRemovePopUpButtonItem()
|
||||||
- added function for user specified item height in WMList
|
- added function for user specified item height in WMList
|
||||||
- added WMSetPopUpButtonText(). It will set the default text in the button
|
- added WMSetPopUpButtonText(). It will set the default text in the button
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -5,26 +5,26 @@ 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 = wtableview.h wtabledelegates.h
|
include_HEADERS = wtableview.h wtabledelegates.h
|
||||||
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libExtraWINGs.la
|
lib_LTLIBRARIES = libExtraWINGs.la
|
||||||
|
|
||||||
noinst_PROGRAMS = test
|
noinst_PROGRAMS = tableview
|
||||||
|
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
|
|
||||||
libExtraWINGs_la_SOURCES = \
|
libExtraWINGs_la_SOURCES = \
|
||||||
wtableview.c \
|
wtableview.c \
|
||||||
wtabledelegates.c \
|
wtabledelegates.c \
|
||||||
wtableview.h \
|
wtableview.h \
|
||||||
wtabledelegates.h
|
wtabledelegates.h
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \
|
AM_CPPFLAGS = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \
|
||||||
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@
|
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@
|
||||||
|
|
||||||
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);
|
||||||
@@ -11,15 +11,15 @@ WMTableColumnDelegate *WTCreateStringDelegate(WMTableView *table);
|
|||||||
WMTableColumnDelegate *WTCreatePixmapStringDelegate(WMTableView *parent);
|
WMTableColumnDelegate *WTCreatePixmapStringDelegate(WMTableView *parent);
|
||||||
|
|
||||||
WMTableColumnDelegate *WTCreateStringEditorDelegate(WMTableView *table);
|
WMTableColumnDelegate *WTCreateStringEditorDelegate(WMTableView *table);
|
||||||
|
|
||||||
WMTableColumnDelegate *WTCreateEnumSelectorDelegate(WMTableView *table);
|
WMTableColumnDelegate *WTCreateEnumSelectorDelegate(WMTableView *table);
|
||||||
void WTSetEnumSelectorOptions(WMTableColumnDelegate *delegate,
|
void WTSetEnumSelectorOptions(WMTableColumnDelegate *delegate,
|
||||||
char **options, int count);
|
char **options, int count);
|
||||||
|
|
||||||
WMTableColumnDelegate *WTCreateBooleanSwitchDelegate(WMTableView *parent);
|
WMTableColumnDelegate *WTCreateBooleanSwitchDelegate(WMTableView *parent);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
+8
-9
@@ -8,19 +8,17 @@ DIST_SUBDIRS = $(SUBDIRS) Tests Examples Extras
|
|||||||
libWINGs_la_LDFLAGS = -version-info @WINGS_VERSION@
|
libWINGs_la_LDFLAGS = -version-info @WINGS_VERSION@
|
||||||
libWUtil_la_LDFLAGS = -version-info @WUTIL_VERSION@
|
libWUtil_la_LDFLAGS = -version-info @WUTIL_VERSION@
|
||||||
|
|
||||||
dist_bin_SCRIPTS = get-wings-flags get-wutil-flags
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libWUtil.la libWINGs.la
|
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
|
||||||
|
|
||||||
|
|
||||||
# wbutton.c
|
# wbutton.c
|
||||||
libWINGs_la_SOURCES = \
|
libWINGs_la_SOURCES = \
|
||||||
configuration.c \
|
configuration.c \
|
||||||
dragcommon.c \
|
dragcommon.c \
|
||||||
@@ -89,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
|
||||||
@@ -107,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 $@"
|
||||||
|
|||||||
+7
-5
@@ -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>
|
||||||
@@ -388,13 +390,13 @@ Property lists handling code
|
|||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
Code to handle property lists was added to WINGs. It is more robust
|
Code to handle property lists was added to WINGs. It is more robust
|
||||||
than the libPropList code, mostly because some conflicting concepts
|
than the libPropList code, mostly because some conflicting concepts
|
||||||
borrowed from UserDefaults (which libPropList use) are no longer used in
|
borrowed from UserDefaults (which libPropList use) are no longer used in
|
||||||
the WINGs property lists code. These borrowed concepts conflicted with the
|
the WINGs property lists code. These borrowed concepts conflicted with the
|
||||||
retain/release mechanism of property lists and could lead in certain cases
|
retain/release mechanism of property lists and could lead in certain cases
|
||||||
to segmentation faults when executing libPropList based code. But the worse
|
to segmentation faults when executing libPropList based code. But the worse
|
||||||
part was that these libPropList problems were practically unsolvable without
|
part was that these libPropList problems were practically unsolvable without
|
||||||
removing one of those conflicting concepts and without a complete redesign.
|
removing one of those conflicting concepts and without a complete redesign.
|
||||||
The new WINGs property lists code is also better integrated with the other
|
The new WINGs property lists code is also better integrated with the other
|
||||||
data types from WINGs and is actively maintained.
|
data types from WINGs and is actively maintained.
|
||||||
|
|
||||||
@@ -469,10 +471,10 @@ All WM...IconImage() functions operate on RImages
|
|||||||
and will also convert the RImage to a WMPixmap with a threshold of 128
|
and will also convert the RImage to a WMPixmap with a threshold of 128
|
||||||
and will use that pixmap for the appicon image. If that doesn't satisfy
|
and will use that pixmap for the appicon image. If that doesn't satisfy
|
||||||
you, you can make a call to WMSetApplicationIconPixmap() on your own to
|
you, you can make a call to WMSetApplicationIconPixmap() on your own to
|
||||||
set whatever WMPixmap you see fit for the appicon.
|
set whatever WMPixmap you see fit for the appicon.
|
||||||
|
|
||||||
- WMSetApplicationIconPixmap() will set the WMPixmap to be used for the
|
- WMSetApplicationIconPixmap() will set the WMPixmap to be used for the
|
||||||
appicon and for the panels
|
appicon and for the panels
|
||||||
|
|
||||||
|
|
||||||
If you use only one of the above functions, the corresponding image/pixmap
|
If you use only one of the above functions, the corresponding image/pixmap
|
||||||
|
|||||||
+12
-12
@@ -3,35 +3,35 @@
|
|||||||
|
|
||||||
by
|
by
|
||||||
|
|
||||||
Alfredo Kengi Kojima
|
Alfredo Kengi Kojima
|
||||||
|
|
||||||
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
|
||||||
reference manual, distributed as a PDF by Apple. The function names,
|
reference manual, distributed as a PDF by Apple. The function names,
|
||||||
structs and most of the intrinsics are very close to OpenStep classes.
|
structs and most of the intrinsics are very close to OpenStep classes.
|
||||||
|
|
||||||
|
|
||||||
Internationalization:
|
Internationalization:
|
||||||
@@ -66,7 +66,7 @@ Widgets provided by WINGs:
|
|||||||
- input box
|
- input box
|
||||||
- file panel
|
- file panel
|
||||||
- color panel
|
- color panel
|
||||||
- alert panel
|
- alert panel
|
||||||
- font panel
|
- font panel
|
||||||
|
|
||||||
If you think you can code the following, please do. They are needed by
|
If you think you can code the following, please do. They are needed by
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
AUTOMAKE_OPTIONS =
|
AUTOMAKE_OPTIONS =
|
||||||
|
|
||||||
noinst_PROGRAMS = wtest wmquery wmfile testmywidget
|
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
|
||||||
|
|
||||||
wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
||||||
|
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -8,16 +8,16 @@ ftp.windowmaker.info</u></font><Br>
|
|||||||
</center>
|
</center>
|
||||||
|
|
||||||
<b><i>Window Maker</b>
|
<b><i>Window Maker</b>
|
||||||
<Img src=upbtn.xpm></i>is the GNU window manager
|
<Img src=upbtn.xpm></i>is the GNU window manager
|
||||||
for the X Window System. It was
|
for the X Window System. It was
|
||||||
designed to emulate the look and feel of part of the NEXTSTEP(tm) GUI. Its
|
designed to emulate the look and feel of part of the NEXTSTEP(tm) GUI. Its
|
||||||
supposed to be relatively fast and small, feature rich, easy to configure and
|
supposed to be relatively fast and small, feature rich, easy to configure and
|
||||||
easy to use, with a simple and elegant appearance borrowed from NEXTSTEP(tm).
|
easy to use, with a simple and elegant appearance borrowed from NEXTSTEP(tm).
|
||||||
<p>
|
<p>
|
||||||
<b>Window Maker</b> was designed keeping integration with GNUstep in
|
<b>Window Maker</b> was designed keeping integration with GNUstep in
|
||||||
mind and is the
|
mind and is the
|
||||||
"official" window manager for it. It is also part of the GNU project
|
"official" window manager for it. It is also part of the GNU project
|
||||||
(<u>www.gnu.org</u>)
|
(<u>www.gnu.org</u>)
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<b>What is <i>GNUstep?</i></b><p>
|
<b>What is <i>GNUstep?</i></b><p>
|
||||||
|
|||||||
@@ -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 $@ $<
|
||||||
|
|||||||
+25
-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 ]---------------------------------------------- */
|
||||||
|
|
||||||
@@ -795,6 +795,8 @@ char* WMGetFontName(WMFont *font);
|
|||||||
|
|
||||||
unsigned int WMFontHeight(WMFont *font);
|
unsigned int WMFontHeight(WMFont *font);
|
||||||
|
|
||||||
|
void WMGetScaleBaseFromSystemFont(WMScreen *scrPtr, int *alphabetWidth, int *fontHeight);
|
||||||
|
|
||||||
void WMSetWidgetDefaultFont(WMScreen *scr, WMFont *font);
|
void WMSetWidgetDefaultFont(WMScreen *scr, WMFont *font);
|
||||||
|
|
||||||
void WMSetWidgetDefaultBoldFont(WMScreen *scr, WMFont *font);
|
void WMSetWidgetDefaultBoldFont(WMScreen *scr, WMFont *font);
|
||||||
@@ -975,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 ]------------------------------------------------ */
|
||||||
|
|
||||||
@@ -1188,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 ]----------------------------------------------- */
|
||||||
|
|
||||||
@@ -1210,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 ]--------------------------------------------------- */
|
||||||
|
|
||||||
@@ -1289,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 ]------------------------------------------------ */
|
||||||
|
|
||||||
@@ -1322,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);
|
||||||
@@ -1494,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 ]---------------------------------------------- */
|
||||||
|
|
||||||
@@ -1507,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 ]--------------------------------------------- */
|
||||||
@@ -1839,10 +1841,17 @@ WMAlertPanel* WMCreateAlertPanel(WMScreen *app, WMWindow *owner, const char *tit
|
|||||||
const char *msg, const char *defaultButton,
|
const char *msg, const char *defaultButton,
|
||||||
const char *alternateButton, const char *otherButton);
|
const char *alternateButton, const char *otherButton);
|
||||||
|
|
||||||
|
WMAlertPanel* WMCreateScaledAlertPanel(WMScreen *app, WMWindow *owner, const char *title,
|
||||||
|
const char *msg, const char *defaultButton,
|
||||||
|
const char *alternateButton, const char *otherButton);
|
||||||
|
|
||||||
WMInputPanel* WMCreateInputPanel(WMScreen *app, WMWindow *owner, const char *title,
|
WMInputPanel* WMCreateInputPanel(WMScreen *app, WMWindow *owner, const char *title,
|
||||||
const char *msg, const char *defaultText, const char *okButton,
|
const char *msg, const char *defaultText, const char *okButton,
|
||||||
const char *cancelButton);
|
const char *cancelButton);
|
||||||
|
|
||||||
|
WMInputPanel* WMCreateScaledInputPanel(WMScreen *app, WMWindow *owner, const char *title,
|
||||||
|
const char *msg, const char *defaultText, const char *okButton,
|
||||||
|
const char *cancelButton);
|
||||||
|
|
||||||
WMGenericPanel* WMCreateGenericPanel(WMScreen *scrPtr, WMWindow *owner,
|
WMGenericPanel* WMCreateGenericPanel(WMScreen *scrPtr, WMWindow *owner,
|
||||||
const char *title, const char *defaultButton,
|
const char *title, const char *defaultButton,
|
||||||
@@ -1867,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);
|
||||||
@@ -1875,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;
|
||||||
|
|
||||||
@@ -254,7 +252,7 @@ typedef struct W_Screen {
|
|||||||
Atom wmIconDragOffsetAtom;
|
Atom wmIconDragOffsetAtom;
|
||||||
|
|
||||||
Atom wmStateAtom; /* WM_STATE */
|
Atom wmStateAtom; /* WM_STATE */
|
||||||
|
|
||||||
Atom utf8String;
|
Atom utf8String;
|
||||||
|
|
||||||
Atom netwmName;
|
Atom netwmName;
|
||||||
@@ -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 ]--------------------------------------------------------- */
|
||||||
|
|
||||||
+12
-1
@@ -193,6 +193,16 @@ typedef void WMNotificationObserverAction(void *observerData,
|
|||||||
sizeof(array) / sizeof(array[0]); \
|
sizeof(array) / sizeof(array[0]); \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/* These macros can be used to adjust the location and size pixel values in
|
||||||
|
* the panel layouts so that they match the configured size of the system
|
||||||
|
* font (useful with high DPI screens, where you have to increase this size).
|
||||||
|
* The macros require two local variables to be set:
|
||||||
|
* wmScaleWidth: the width of the alphabet in the current system font
|
||||||
|
* wmScaleHeight: the height of the current system font
|
||||||
|
* Use the WMGetScaleBaseFromSystemFont function to set these values.
|
||||||
|
*/
|
||||||
|
#define WMScaleX(value) ((int)((double)value / 177.0 * (double)wmScaleWidth + 0.5))
|
||||||
|
#define WMScaleY(value) ((int)((double)value / 15.0 * (double)wmScaleHeight + 0.5))
|
||||||
|
|
||||||
/* ---[ WINGs/memory.c ]-------------------------------------------------- */
|
/* ---[ WINGs/memory.c ]-------------------------------------------------- */
|
||||||
|
|
||||||
@@ -239,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 ]------------------------------------------------ */
|
||||||
|
|
||||||
@@ -854,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;
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# [Christophe CURIS, 2015/01/31]
|
|
||||||
# This script is now reporting itself as deprecated (this should have been done
|
|
||||||
# a long time ago), so it should be kept for at least 2 years from now in order
|
|
||||||
# to allow users to update their scripts, and then removed.
|
|
||||||
|
|
||||||
if test $# -eq 0; then
|
|
||||||
echo "Error: $0 is deprecated, please use 'pkg-config WINGs ...'" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
while test $# -gt 0; do
|
|
||||||
case $1 in
|
|
||||||
--cflags)
|
|
||||||
echo "Warning: $0 is deprecated, please use 'pkg-config WINGs --cflags'" >&2
|
|
||||||
pkg-config WINGs --cflags
|
|
||||||
;;
|
|
||||||
--ldflags|--lflags)
|
|
||||||
echo "Warning: $0 is deprecated, please use 'pkg-config WINGs --libs'" >&2
|
|
||||||
pkg-config WINGs --libs-only-L
|
|
||||||
;;
|
|
||||||
--libs)
|
|
||||||
echo "Warning: $0 is deprecated, please use 'pkg-config WINGs --libs'" >&2
|
|
||||||
pkg-config WINGs --libs
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Error: $0 is deprecated, please use 'pkg-config WINGs ...'" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# [Christophe CURIS, 2015/01/31]
|
|
||||||
# This script is now reporting itself as deprecated (this should have been done
|
|
||||||
# a long time ago), so it should be kept for at least 2 years from now in order
|
|
||||||
# to allow users to update their scripts, and then removed.
|
|
||||||
|
|
||||||
if test $# -eq 0; then
|
|
||||||
echo "Error: $0 is deprecated, please use 'pkg-config WUtil ...'" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
while test $# -gt 0; do
|
|
||||||
case $1 in
|
|
||||||
--cflags)
|
|
||||||
echo "Warning: $0 is deprecated, please use 'pkg-config WUtil --cflags'" >&2
|
|
||||||
pkg-config WUtil --cflags
|
|
||||||
;;
|
|
||||||
--ldflags|--lflags)
|
|
||||||
echo "Warning: $0 is deprecated, please use 'pkg-config WUtil --libs'" >&2
|
|
||||||
pkg-config WUtil --libs-only-L
|
|
||||||
;;
|
|
||||||
--libs)
|
|
||||||
echo "Warning: $0 is deprecated, please use 'pkg-config WUtil --libs'" >&2
|
|
||||||
pkg-config WUtil --libs
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Error: $0 is deprecated, please use 'pkg-config WUtil ...'" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
+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;
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ POTFILES += \
|
|||||||
|
|
||||||
SUFFIXES = .po .mo
|
SUFFIXES = .po .mo
|
||||||
|
|
||||||
.po.mo:
|
.po.mo:
|
||||||
$(AM_V_GEN)$(MSGFMT) -c -o $@ $<
|
$(AM_V_GEN)$(MSGFMT) -c -o $@ $<
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -3,10 +3,10 @@
|
|||||||
#
|
#
|
||||||
# Initial translation
|
# Initial translation
|
||||||
# Gudio Scholz <guido.scholz@bayernline.de>
|
# Gudio Scholz <guido.scholz@bayernline.de>
|
||||||
#
|
#
|
||||||
# Adapted to versions 0.80 ff.
|
# Adapted to versions 0.80 ff.
|
||||||
# Torsten Marek <shlomme@gmx.net>
|
# Torsten Marek <shlomme@gmx.net>
|
||||||
#
|
#
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
+33
-72
@@ -1,14 +1,14 @@
|
|||||||
# Translation into Western Frisian for Window Maker
|
# Translation into Western Frisian for Window Maker
|
||||||
# Copyright (C) 2015 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.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: wmaker-0.95.6+\n"
|
"Project-Id-Version: wmaker-0.95.7+\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2015-06-14 16:10+0200\n"
|
"POT-Creation-Date: 2016-01-21 16:19+0100\n"
|
||||||
"PO-Revision-Date: 2015-06-14 00:00+0000\n"
|
"PO-Revision-Date: 2016-01-21 00:00+0000\n"
|
||||||
"Last-Translator: Alwin <translations@ziggo.nl>\n"
|
"Last-Translator: Alwin <translations@ziggo.nl>\n"
|
||||||
"Language-Team: Western Frisian\n"
|
"Language-Team: Western Frisian\n"
|
||||||
"Language: fy\n"
|
"Language: fy\n"
|
||||||
@@ -99,7 +99,7 @@ msgstr "foartidich bestânsein, ferwachte in nije rigel nei '\\'"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "reached end of file while searching '*/' for comment started at line %d"
|
msgid "reached end of file while searching '*/' for comment started at line %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"bestânsein berikt by sykje nei '*/' foar kommentaar begûnen op rigel %d"
|
"bestânsein berikt by sykjen nei '*/' foar kommentaar begûnen op rigel %d"
|
||||||
|
|
||||||
#: ../../WINGs/menuparser.c:344
|
#: ../../WINGs/menuparser.c:344
|
||||||
msgid "missing closing double-quote before end-of-line"
|
msgid "missing closing double-quote before end-of-line"
|
||||||
@@ -111,7 +111,7 @@ msgstr "ûntbrekkend slutend inkeld oanhelteken foar rigelein"
|
|||||||
|
|
||||||
#: ../../WINGs/menuparser.c:380
|
#: ../../WINGs/menuparser.c:380
|
||||||
msgid "too many nested macro expansions, breaking loop"
|
msgid "too many nested macro expansions, breaking loop"
|
||||||
msgstr "te folle neste makro-útwurkingen, syklus ôfbrutsen"
|
msgstr "te folle neske makro-útwurkingen, syklus ôfbrutsen"
|
||||||
|
|
||||||
#: ../../WINGs/menuparser.c:439
|
#: ../../WINGs/menuparser.c:439
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -140,7 +140,7 @@ msgstr "ûntbrekkende slutende '%c' yn bestânsnammeopjefte"
|
|||||||
|
|
||||||
#: ../../WINGs/menuparser.c:503
|
#: ../../WINGs/menuparser.c:503
|
||||||
msgid "too many nested #include's"
|
msgid "too many nested #include's"
|
||||||
msgstr "te folle neste #include's"
|
msgstr "te folle neske #include's"
|
||||||
|
|
||||||
#: ../../WINGs/menuparser.c:568
|
#: ../../WINGs/menuparser.c:568
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -150,11 +150,11 @@ msgstr "koe bestân \"%s\" net fine foar #include"
|
|||||||
#: ../../WINGs/menuparser.c:589
|
#: ../../WINGs/menuparser.c:589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "missing macro name argument to #%s"
|
msgid "missing macro name argument to #%s"
|
||||||
msgstr "ûntbrekkend makronammeargumint by #%s"
|
msgstr "ûntbrekkend makronamme-argumint by #%s"
|
||||||
|
|
||||||
#: ../../WINGs/menuparser.c:600
|
#: ../../WINGs/menuparser.c:600
|
||||||
msgid "too many nested #if sequences"
|
msgid "too many nested #if sequences"
|
||||||
msgstr "te folle neste #if-rigen"
|
msgstr "te folle neske #if-rigen"
|
||||||
|
|
||||||
#: ../../WINGs/menuparser.c:626 ../../WINGs/menuparser.c:643
|
#: ../../WINGs/menuparser.c:626 ../../WINGs/menuparser.c:643
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -168,7 +168,7 @@ msgstr "gjin makronamme fûn foar #define"
|
|||||||
#: ../../WINGs/menuparser_macros.c:187
|
#: ../../WINGs/menuparser_macros.c:187
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "premature end of file while reading arg-list for macro \"%s\""
|
msgid "premature end of file while reading arg-list for macro \"%s\""
|
||||||
msgstr "foartidich bestânsein by ynlêze arg.-list foar makro \"%s\""
|
msgstr "foartidich bestânsein by ynlêzen arg.-list foar makro \"%s\""
|
||||||
|
|
||||||
#: ../../WINGs/menuparser_macros.c:194
|
#: ../../WINGs/menuparser_macros.c:194
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -196,7 +196,7 @@ msgstr ""
|
|||||||
#: ../../WINGs/menuparser_macros.c:253
|
#: ../../WINGs/menuparser_macros.c:253
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "macro \"%s\" already defined, ignoring redefinition"
|
msgid "macro \"%s\" already defined, ignoring redefinition"
|
||||||
msgstr "makro \"%s\" al definiearre, negearret werdefiniearje"
|
msgstr "makro \"%s\" al definiearre, negearret werdefiniearjen"
|
||||||
|
|
||||||
#: ../../WINGs/menuparser_macros.c:346
|
#: ../../WINGs/menuparser_macros.c:346
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -225,7 +225,7 @@ msgstr "te folle arguminten foar makro \"%s\", ferwachte allinnich %d"
|
|||||||
#: ../../WINGs/menuparser_macros.c:530
|
#: ../../WINGs/menuparser_macros.c:530
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "premature end of line while searching for arguments to macro \"%s\""
|
msgid "premature end of line while searching for arguments to macro \"%s\""
|
||||||
msgstr "foartidich rigelein by sykje nei arguminten by makro \"%s\""
|
msgstr "foartidich rigelein by sykjen nei arguminten by makro \"%s\""
|
||||||
|
|
||||||
#: ../../WINGs/menuparser_macros.c:536
|
#: ../../WINGs/menuparser_macros.c:536
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -345,7 +345,7 @@ msgstr "koe grutte foar bestân '%s' net krije"
|
|||||||
#: ../../WINGs/proplist.c:1531
|
#: ../../WINGs/proplist.c:1531
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "error reading from file '%s'"
|
msgid "error reading from file '%s'"
|
||||||
msgstr "flater by ynlêze bestân '%s'"
|
msgstr "flater by ynlêzen bestân '%s'"
|
||||||
|
|
||||||
#: ../../WINGs/proplist.c:1578
|
#: ../../WINGs/proplist.c:1578
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -355,32 +355,32 @@ msgstr "%s:koe menubestân net iepenje"
|
|||||||
#: ../../WINGs/proplist.c:1660
|
#: ../../WINGs/proplist.c:1660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "mkstemp (%s) failed"
|
msgid "mkstemp (%s) failed"
|
||||||
msgstr "oanmeitsje unyk tydlik bestân (%s) mislearre"
|
msgstr "oanmeitsjen unyk tydlik bestân (%s) mislearre"
|
||||||
|
|
||||||
#: ../../WINGs/proplist.c:1670
|
#: ../../WINGs/proplist.c:1670
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "mktemp (%s) failed"
|
msgid "mktemp (%s) failed"
|
||||||
msgstr "oanmeitsje tydlik bestân (%s) mislearre"
|
msgstr "oanmeitsjen tydlik bestân (%s) mislearre"
|
||||||
|
|
||||||
#: ../../WINGs/proplist.c:1677
|
#: ../../WINGs/proplist.c:1677
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "open (%s) failed"
|
msgid "open (%s) failed"
|
||||||
msgstr "iepenje (%s) mislearre"
|
msgstr "iepenjen (%s) mislearre"
|
||||||
|
|
||||||
#: ../../WINGs/proplist.c:1684
|
#: ../../WINGs/proplist.c:1684
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "writing to file: %s failed"
|
msgid "writing to file: %s failed"
|
||||||
msgstr "skriuwe nei bestân: %s mislearre"
|
msgstr "skriuwen nei bestân: %s mislearre"
|
||||||
|
|
||||||
#: ../../WINGs/proplist.c:1693
|
#: ../../WINGs/proplist.c:1693
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "fclose (%s) failed"
|
msgid "fclose (%s) failed"
|
||||||
msgstr "ôfslute stream (%s) mislearre"
|
msgstr "ôfsluten stream (%s) mislearre"
|
||||||
|
|
||||||
#: ../../WINGs/proplist.c:1701
|
#: ../../WINGs/proplist.c:1701
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "rename ('%s' to '%s') failed"
|
msgid "rename ('%s' to '%s') failed"
|
||||||
msgstr "omneame ('%s' nei '%s') mislearre"
|
msgstr "omneamen ('%s' nei '%s') mislearre"
|
||||||
|
|
||||||
#: ../../WINGs/proplist.c:1772
|
#: ../../WINGs/proplist.c:1772
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -388,14 +388,14 @@ msgid "Could not create component %s"
|
|||||||
msgstr "Koe komponint %s net oanmeitsje"
|
msgstr "Koe komponint %s net oanmeitsje"
|
||||||
|
|
||||||
#: ../../WINGs/userdefaults.c:72
|
#: ../../WINGs/userdefaults.c:72
|
||||||
msgid "variable GNUSTEP_USER_ROOT defined with invalid path, not used"
|
msgid "variable WMAKER_USER_ROOT defined with invalid path, not used"
|
||||||
msgstr "fariabele GNUSTEP_USER_ROOT, definiearre mei ûnjildich paad, net brûkt"
|
msgstr "fariabele WMAKER_USER_ROOT, definiearre mei ûnjildich paad, net brûkt"
|
||||||
|
|
||||||
#. something happened with the file. just overwrite it
|
#. something happened with the file. just overwrite it
|
||||||
#: ../../WINGs/userdefaults.c:210 ../../WINGs/userdefaults.c:225
|
#: ../../WINGs/userdefaults.c:210 ../../WINGs/userdefaults.c:225
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot read domain from file '%s' when syncing"
|
msgid "cannot read domain from file '%s' when syncing"
|
||||||
msgstr "kin domeinbestân '%s' net ynlêze by syngronisearje"
|
msgstr "kin domeinbestân '%s' net ynlêze by syngronisearjen"
|
||||||
|
|
||||||
#: ../../WINGs/dragcommon.c:60
|
#: ../../WINGs/dragcommon.c:60
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -414,11 +414,11 @@ msgstr "net-stipe ferzje %i foar XDND-berjocht by binnen gean"
|
|||||||
|
|
||||||
#: ../../WINGs/dragsource.c:163
|
#: ../../WINGs/dragsource.c:163
|
||||||
msgid "XDND selection lost during drag operation..."
|
msgid "XDND selection lost during drag operation..."
|
||||||
msgstr "XDND-seleksje ferlern by fersleephanneling..."
|
msgstr "XDND-seleksje ferlern ûnder fersleephanneling..."
|
||||||
|
|
||||||
#: ../../WINGs/dragsource.c:758
|
#: ../../WINGs/dragsource.c:758
|
||||||
msgid "could not get XDND version for target of drop"
|
msgid "could not get XDND version for target of drop"
|
||||||
msgstr "koe XDND-ferzje net krije foar doel fan ferslepe"
|
msgstr "koe XDND-ferzje net krije foar doel fan ferslepen"
|
||||||
|
|
||||||
#: ../../WINGs/dragsource.c:774
|
#: ../../WINGs/dragsource.c:774
|
||||||
msgid "could not get ownership of XDND selection"
|
msgid "could not get ownership of XDND selection"
|
||||||
@@ -456,7 +456,7 @@ msgstr "Kleuren"
|
|||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:568 ../../WINGs/wcolorpanel.c:2720
|
#: ../../WINGs/wcolorpanel.c:568 ../../WINGs/wcolorpanel.c:2720
|
||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Helderheid"
|
msgstr "Helderens"
|
||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:570 ../../WINGs/wcolorpanel.c:644
|
#: ../../WINGs/wcolorpanel.c:570 ../../WINGs/wcolorpanel.c:644
|
||||||
#: ../../WINGs/wcolorpanel.c:675 ../../WINGs/wcolorpanel.c:706
|
#: ../../WINGs/wcolorpanel.c:675 ../../WINGs/wcolorpanel.c:706
|
||||||
@@ -558,7 +558,7 @@ msgstr "Nij..."
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Color Panel: Could not create directory %s needed to store configurations"
|
"Color Panel: Could not create directory %s needed to store configurations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kleurepaniel: Koe map %s, nedich om ynstellingen te bewarje, net oanmeitsje"
|
"Kleurepaniel: Koe map %s, nedich om ynstellingen te bewarjen, net oanmeitsje"
|
||||||
|
|
||||||
#. Delete the file, it doesn't belong here
|
#. Delete the file, it doesn't belong here
|
||||||
#: ../../WINGs/wcolorpanel.c:1176 ../../WINGs/wcolorpanel.c:3073
|
#: ../../WINGs/wcolorpanel.c:1176 ../../WINGs/wcolorpanel.c:3073
|
||||||
@@ -568,7 +568,7 @@ msgstr "Bestânsflater"
|
|||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:1177
|
#: ../../WINGs/wcolorpanel.c:1177
|
||||||
msgid "Could not create ColorPanel configuration directory"
|
msgid "Could not create ColorPanel configuration directory"
|
||||||
msgstr "Koe ynstellingenmap Kleurepaniel net oanmeitsje"
|
msgstr "Koe ynstellingemap Kleurepaniel net oanmeitsje"
|
||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:1178 ../../WINGs/wcolorpanel.c:3074
|
#: ../../WINGs/wcolorpanel.c:1178 ../../WINGs/wcolorpanel.c:3074
|
||||||
#: ../../WINGs/wcolorpanel.c:3079 ../../WINGs/wcolorpanel.c:3104
|
#: ../../WINGs/wcolorpanel.c:3079 ../../WINGs/wcolorpanel.c:3104
|
||||||
@@ -593,7 +593,7 @@ msgstr "Fersêding"
|
|||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:2788
|
#: ../../WINGs/wcolorpanel.c:2788
|
||||||
msgid "Hue"
|
msgid "Hue"
|
||||||
msgstr "Tinte"
|
msgstr "Tint"
|
||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:3012
|
#: ../../WINGs/wcolorpanel.c:3012
|
||||||
msgid "Open Palette"
|
msgid "Open Palette"
|
||||||
@@ -610,7 +610,7 @@ msgstr "kin bestân %s net ferwiderje"
|
|||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:3078
|
#: ../../WINGs/wcolorpanel.c:3078
|
||||||
msgid "Couldn't remove file from Configuration Directory !"
|
msgid "Couldn't remove file from Configuration Directory !"
|
||||||
msgstr "Koe bestân net ferwiderje út ynstellingenmap!"
|
msgstr "Koe bestân net ferwiderje út ynstellingemap!"
|
||||||
|
|
||||||
#: ../../WINGs/wcolorpanel.c:3103
|
#: ../../WINGs/wcolorpanel.c:3103
|
||||||
msgid "Rename"
|
msgid "Rename"
|
||||||
@@ -737,12 +737,12 @@ msgstr "Bestân"
|
|||||||
#: ../../WINGs/wfilepanel.c:719
|
#: ../../WINGs/wfilepanel.c:719
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Removing %s failed: %s"
|
msgid "Removing %s failed: %s"
|
||||||
msgstr "Ferwiderje %s mislearre: %s"
|
msgstr "Ferwiderjen %s mislearre: %s"
|
||||||
|
|
||||||
#: ../../WINGs/wfilepanel.c:751
|
#: ../../WINGs/wfilepanel.c:751
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "An error occurred browsing '%s'."
|
msgid "An error occurred browsing '%s'."
|
||||||
msgstr "Der trede in flater op by blêdzje troch '%s'."
|
msgstr "Der trede in flater op by blêdzjen troch '%s'."
|
||||||
|
|
||||||
#: ../../WINGs/wfilepanel.c:754
|
#: ../../WINGs/wfilepanel.c:754
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -799,7 +799,7 @@ msgstr "Koe biblioteek 'lettertype ynstelle' net inisjalisearje\n"
|
|||||||
#: ../../WINGs/widgets.c:446
|
#: ../../WINGs/widgets.c:446
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WINGs: could not load widget images file: %s"
|
msgid "WINGs: could not load widget images file: %s"
|
||||||
msgstr "WINGs: Koe ôfbyldingenbestân bestjoeringseleminten net lade: %s"
|
msgstr "WINGs: Koe ôfbyldingebestân bestjoeringseleminten net lade: %s"
|
||||||
|
|
||||||
#: ../../WINGs/widgets.c:542
|
#: ../../WINGs/widgets.c:542
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -824,7 +824,7 @@ msgstr "0 inch"
|
|||||||
|
|
||||||
#: ../../WINGs/wtextfield.c:494
|
#: ../../WINGs/wtextfield.c:494
|
||||||
msgid "only left alignment is supported in textfields"
|
msgid "only left alignment is supported in textfields"
|
||||||
msgstr "allinnich lofts rjochtsje wurdt stipe yn tekstfjilden"
|
msgstr "allinnich lofts rjochtsjen wurdt stipe yn tekstfjilden"
|
||||||
|
|
||||||
#: ../../WINGs/wwindow.c:160
|
#: ../../WINGs/wwindow.c:160
|
||||||
msgid "window title conversion error... using STRING encoding"
|
msgid "window title conversion error... using STRING encoding"
|
||||||
@@ -833,42 +833,3 @@ msgstr "finstertitelomsettingsflater... brûkt STRING-kodearring"
|
|||||||
#: ../../WINGs/wwindow.c:181
|
#: ../../WINGs/wwindow.c:181
|
||||||
msgid "icon title conversion error... using STRING encoding"
|
msgid "icon title conversion error... using STRING encoding"
|
||||||
msgstr "ikoantitelomsettingsflater... brûkt STRING-kodearring"
|
msgstr "ikoantitelomsettingsflater... brûkt STRING-kodearring"
|
||||||
|
|
||||||
# Keep next entries for wmaker-0.95.6
|
|
||||||
msgid "Could not open input file \"%s\""
|
|
||||||
msgstr "Koe ynfierbestân \"%s\" net iepenje"
|
|
||||||
|
|
||||||
msgid "Could not create target file \"%s\""
|
|
||||||
msgstr "Koe doelbestân \"%s\" net oanmeitsje"
|
|
||||||
|
|
||||||
msgid "An error occured browsing '%s'."
|
|
||||||
msgstr "Der trede in flater op by blêdzje troch '%s'."
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"invalid characted '%c' in arg-list for macro \"%s\" while expecting "
|
|
||||||
"parameter name"
|
|
||||||
msgstr ""
|
|
||||||
"ûnjildich letterteken '%c' yn arg.-list foar makro \"%s\", ferwachte "
|
|
||||||
"parameternamme"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"invalid characted '%c' in arg-list for macro \"%s\" while expecting ',' "
|
|
||||||
"or ')'"
|
|
||||||
msgstr ""
|
|
||||||
"ûnjildich letterteken '%c' yn arg.-list foar makro \"%s\", ferwachte ',' "
|
|
||||||
"of ')'"
|
|
||||||
|
|
||||||
msgid "unknow directive '#%s'"
|
|
||||||
msgstr "ûnbekende oanwizing '#%s'"
|
|
||||||
|
|
||||||
msgid "found #%s but have no matching #if"
|
|
||||||
msgstr "#%s fûn, mar hat gjin bybehearrende #if"
|
|
||||||
|
|
||||||
msgid "too many nested includes"
|
|
||||||
msgstr "te folle neste #include's"
|
|
||||||
|
|
||||||
msgid "could not find file \"%s\" for include"
|
|
||||||
msgstr "koe bestân \"%s\" net fine foar #include"
|
|
||||||
|
|
||||||
msgid "too many nested macro expansion, breaking loop"
|
|
||||||
msgstr "te folle neste makro-útwurkingen, syklus ôfbrutsen"
|
|
||||||
|
|||||||
+2
-2
@@ -197,8 +197,8 @@ msgid "Could not create component %s"
|
|||||||
msgstr "Nem sikerült létrehozni a %s elemet"
|
msgstr "Nem sikerült létrehozni a %s elemet"
|
||||||
|
|
||||||
#: ../../../wmaker-crm/WINGs/userdefaults.c:65
|
#: ../../../wmaker-crm/WINGs/userdefaults.c:65
|
||||||
msgid "variable GNUSTEP_USER_ROOT defined with invalid path, not used"
|
msgid "variable WMAKER_USER_ROOT defined with invalid path, not used"
|
||||||
msgstr "A GNUSTEP_USER_ROOT változó be van állítva, de rossz értékre. Nem használom"
|
msgstr "A WMAKER_USER_ROOT változó be van állítva, de rossz értékre. Nem használom"
|
||||||
|
|
||||||
#. something happened with the file. just overwrite it
|
#. something happened with the file. just overwrite it
|
||||||
#: ../../../wmaker-crm/WINGs/userdefaults.c:196
|
#: ../../../wmaker-crm/WINGs/userdefaults.c:196
|
||||||
|
|||||||
+3
-3
@@ -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.
|
||||||
#
|
#
|
||||||
@@ -389,9 +389,9 @@ msgid "Could not create component %s"
|
|||||||
msgstr "Kon component %s niet aanmaken"
|
msgstr "Kon component %s niet aanmaken"
|
||||||
|
|
||||||
#: ../../WINGs/userdefaults.c:72
|
#: ../../WINGs/userdefaults.c:72
|
||||||
msgid "variable GNUSTEP_USER_ROOT defined with invalid path, not used"
|
msgid "variable WMAKER_USER_ROOT defined with invalid path, not used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"variabele GNUSTEP_USER_ROOT, gedefinieerd met ongeldig pad, niet gebruikt"
|
"variabele WMAKER_USER_ROOT, gedefinieerd met ongeldig pad, niet gebruikt"
|
||||||
|
|
||||||
#. something happened with the file. just overwrite it
|
#. something happened with the file. just overwrite it
|
||||||
#: ../../WINGs/userdefaults.c:210 ../../WINGs/userdefaults.c:225
|
#: ../../WINGs/userdefaults.c:210 ../../WINGs/userdefaults.c:225
|
||||||
|
|||||||
+38
-13
@@ -1253,22 +1253,34 @@ int WMGetPropListItemCount(WMPropList * plist)
|
|||||||
|
|
||||||
Bool WMIsPLString(WMPropList * plist)
|
Bool WMIsPLString(WMPropList * plist)
|
||||||
{
|
{
|
||||||
return (plist->type == WPLString);
|
if (plist)
|
||||||
|
return (plist->type == WPLString);
|
||||||
|
else
|
||||||
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool WMIsPLData(WMPropList * plist)
|
Bool WMIsPLData(WMPropList * plist)
|
||||||
{
|
{
|
||||||
return (plist->type == WPLData);
|
if (plist)
|
||||||
|
return (plist->type == WPLData);
|
||||||
|
else
|
||||||
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool WMIsPLArray(WMPropList * plist)
|
Bool WMIsPLArray(WMPropList * plist)
|
||||||
{
|
{
|
||||||
return (plist->type == WPLArray);
|
if (plist)
|
||||||
|
return (plist->type == WPLArray);
|
||||||
|
else
|
||||||
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool WMIsPLDictionary(WMPropList * plist)
|
Bool WMIsPLDictionary(WMPropList * plist)
|
||||||
{
|
{
|
||||||
return (plist->type == WPLDictionary);
|
if (plist)
|
||||||
|
return (plist->type == WPLDictionary);
|
||||||
|
else
|
||||||
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool WMIsPropListEqualTo(WMPropList * plist, WMPropList * other)
|
Bool WMIsPropListEqualTo(WMPropList * plist, WMPropList * other)
|
||||||
@@ -1683,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1719,7 +1732,7 @@ Bool WMWritePropListToFile(WMPropList * plist, const char *path)
|
|||||||
* file, and the last component is stripped off. the rest is the
|
* file, and the last component is stripped off. the rest is the
|
||||||
* the hierarchy to be created.
|
* the hierarchy to be created.
|
||||||
*
|
*
|
||||||
* refuses to create anything outside $GNUSTEP_USER_ROOT
|
* refuses to create anything outside $WMAKER_USER_ROOT
|
||||||
*
|
*
|
||||||
* returns 1 on success, 0 on failure
|
* returns 1 on success, 0 on failure
|
||||||
*/
|
*/
|
||||||
@@ -1730,7 +1743,7 @@ int wmkdirhier(const char *path)
|
|||||||
size_t p, plen;
|
size_t p, plen;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
/* Only create directories under $GNUSTEP_USER_ROOT */
|
/* Only create directories under $WMAKER_USER_ROOT */
|
||||||
if ((t = wusergnusteppath()) == NULL)
|
if ((t = wusergnusteppath()) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
if (strncmp(path, t, strlen(t)) != 0)
|
if (strncmp(path, t, strlen(t)) != 0)
|
||||||
@@ -1811,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 $GNUSTEP_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
|
||||||
*
|
*
|
||||||
@@ -1821,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 $GNUSTEP_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)
|
||||||
|
|||||||
+2
-2
@@ -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;
|
||||||
@@ -261,7 +261,7 @@ static WMData *getSelectionData(Display * dpy, Window win, Atom where)
|
|||||||
|
|
||||||
bpi = bits / 8;
|
bpi = bits / 8;
|
||||||
|
|
||||||
wdata = WMCreateDataWithBytesNoCopy(data, len * bpi, (WMFreeDataProc *) XFree);
|
wdata = WMCreateDataWithBytesNoCopy(data, len * bpi, (void *) XFree);
|
||||||
WMSetDataFormat(wdata, bits);
|
WMSetDataFormat(wdata, bits);
|
||||||
|
|
||||||
return wdata;
|
return wdata;
|
||||||
|
|||||||
+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;
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-24
@@ -40,36 +40,32 @@ 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("GNUSTEP_USER_ROOT");
|
|
||||||
#else
|
|
||||||
gspath = getenv("GNUSTEP_USER_ROOT");
|
|
||||||
#endif
|
|
||||||
if (gspath) {
|
if (gspath) {
|
||||||
gspath = wexpandpath(gspath);
|
gspath = wexpandpath(gspath);
|
||||||
if (gspath) {
|
if (gspath) {
|
||||||
path = gspath;
|
path = gspath;
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
wwarning(_("variable GNUSTEP_USER_ROOT defined with invalid path, not used"));
|
wwarning(_("variable WMAKER_USER_ROOT defined with invalid path, not used"));
|
||||||
}
|
}
|
||||||
|
|
||||||
h = wgethomedir();
|
h = wgethomedir();
|
||||||
@@ -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,31 +100,20 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: doesn't quite belong to *user*defaults.c */
|
/* XXX: doesn't quite belong to *user*defaults.c */
|
||||||
#ifndef GLOBAL_DEFAULTS_SUBDIR
|
|
||||||
#define GLOBAL_DEFAULTS_SUBDIR "WindowMaker"
|
|
||||||
#endif
|
|
||||||
char *wglobaldefaultspathfordomain(const char *domain)
|
char *wglobaldefaultspathfordomain(const char *domain)
|
||||||
{
|
{
|
||||||
char *t = NULL;
|
return wstrconcat(PKGCONFDIR "/", domain);
|
||||||
size_t len;
|
|
||||||
|
|
||||||
len = strlen( SYSCONFDIR ) + strlen( GLOBAL_DEFAULTS_SUBDIR ) + strlen(domain) + 3;
|
|
||||||
t = wmalloc(len);
|
|
||||||
snprintf(t, len, "%s/%s/%s", SYSCONFDIR, GLOBAL_DEFAULTS_SUBDIR, domain);
|
|
||||||
|
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void w_save_defaults_changes(void)
|
void w_save_defaults_changes(void)
|
||||||
|
|||||||
+32
-22
@@ -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;
|
||||||
@@ -140,12 +142,12 @@ char *WMPathForResourceOfType(const char *resource, const char *ext)
|
|||||||
* Paths are searched in this order:
|
* Paths are searched in this order:
|
||||||
* - resourcePath/ext
|
* - resourcePath/ext
|
||||||
* - dirname(argv[0])/ext
|
* - dirname(argv[0])/ext
|
||||||
* - GNUSTEP_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("GNUSTEP_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;
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-30
@@ -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
|
||||||
@@ -67,9 +67,6 @@ static unsigned char Cursor_bits[] = {
|
|||||||
0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x70
|
0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x70
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Cursor shape-mask */
|
|
||||||
#define Cursor_shape_width 32
|
|
||||||
#define Cursor_shape_height 32
|
|
||||||
static unsigned char Cursor_shape_bits[] = {
|
static unsigned char Cursor_shape_bits[] = {
|
||||||
0x00, 0x7e, 0x00, 0x00, 0xc0, 0x81, 0x03, 0x00, 0x20, 0x00, 0x04, 0x00, 0x10, 0x00, 0x08,
|
0x00, 0x7e, 0x00, 0x00, 0xc0, 0x81, 0x03, 0x00, 0x20, 0x00, 0x04, 0x00, 0x10, 0x00, 0x08,
|
||||||
0x00, 0x08, 0x00, 0x10, 0x00, 0x04, 0x00, 0x20, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00,
|
0x00, 0x08, 0x00, 0x10, 0x00, 0x04, 0x00, 0x20, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00,
|
||||||
@@ -397,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);
|
||||||
@@ -1162,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2265,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;
|
||||||
@@ -2388,6 +2382,8 @@ void rgbIntToChar(W_ColorPanel *panel, int *value)
|
|||||||
case RGBhex:
|
case RGBhex:
|
||||||
format = "%0X";
|
format = "%0X";
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
format = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(tmp, format, value[0]);
|
sprintf(tmp, format, value[0]);
|
||||||
@@ -2608,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;
|
||||||
@@ -2644,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;
|
||||||
|
|
||||||
@@ -3399,6 +3395,9 @@ static void rgbInit(W_ColorPanel * panel)
|
|||||||
case RGBhex:
|
case RGBhex:
|
||||||
format = "%0X";
|
format = "%0X";
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
/* Avoid compiler warning */
|
||||||
|
format = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(tmp, format, panel->color.rgb.red);
|
sprintf(tmp, format, panel->color.rgb.red);
|
||||||
@@ -3451,7 +3450,7 @@ static void hsbInit(W_ColorPanel * panel)
|
|||||||
WMSetSliderValue(panel->hsbSaturationS, value[1]);
|
WMSetSliderValue(panel->hsbSaturationS, value[1]);
|
||||||
WMSetSliderValue(panel->hsbBrightnessS, value[2]);
|
WMSetSliderValue(panel->hsbBrightnessS, value[2]);
|
||||||
|
|
||||||
sprintf(tmp, "%d", value[0]);
|
sprintf(tmp, "%hu", value[0]);
|
||||||
WMSetTextFieldText(panel->hsbHueT, tmp);
|
WMSetTextFieldText(panel->hsbHueT, tmp);
|
||||||
sprintf(tmp, "%d", value[1]);
|
sprintf(tmp, "%d", value[1]);
|
||||||
WMSetTextFieldText(panel->hsbSaturationT, tmp);
|
WMSetTextFieldText(panel->hsbSaturationT, tmp);
|
||||||
@@ -3502,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;
|
||||||
|
|||||||
@@ -237,6 +237,16 @@ char *WMGetFontName(WMFont * font)
|
|||||||
return font->name;
|
return font->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WMGetScaleBaseFromSystemFont(WMScreen *scrPtr, int *alphabetWidth, int *fontHeight)
|
||||||
|
{
|
||||||
|
WMFont *font;
|
||||||
|
|
||||||
|
font = WMDefaultSystemFont(scrPtr);
|
||||||
|
*alphabetWidth = WMWidthOfString(font, "abcdefghijklmnopqrstuvwxyz", 26);
|
||||||
|
*fontHeight = WMFontHeight(font);
|
||||||
|
WMReleaseFont(font);
|
||||||
|
}
|
||||||
|
|
||||||
WMFont *WMDefaultSystemFont(WMScreen * scrPtr)
|
WMFont *WMDefaultSystemFont(WMScreen * scrPtr)
|
||||||
{
|
{
|
||||||
return WMRetainFont(scrPtr->normalFont);
|
return WMRetainFont(scrPtr->normalFont);
|
||||||
|
|||||||
+2
-2
@@ -700,7 +700,7 @@ static void typefaceClick(WMWidget * w, void *data)
|
|||||||
|
|
||||||
WM_ITERATE_ARRAY(face->sizes, size, i) {
|
WM_ITERATE_ARRAY(face->sizes, size, i) {
|
||||||
if (size != NULL) {
|
if (size != NULL) {
|
||||||
int size_int = (int) size;
|
int size_int = (intptr_t) size;
|
||||||
|
|
||||||
sprintf(buffer, "%i", size_int);
|
sprintf(buffer, "%i", size_int);
|
||||||
|
|
||||||
@@ -802,7 +802,7 @@ static void setFontPanelFontName(FontPanel * panel, const char *family, const ch
|
|||||||
char buffer[32];
|
char buffer[32];
|
||||||
|
|
||||||
if (vsize != NULL) {
|
if (vsize != NULL) {
|
||||||
int size_int = (int) vsize;
|
int size_int = (intptr_t) vsize;
|
||||||
|
|
||||||
sprintf(buffer, "%i", size_int);
|
sprintf(buffer, "%i", size_int);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -385,6 +385,7 @@ static void renderPixmap(W_Screen * screen, Pixmap d, Pixmap mask, char **data,
|
|||||||
if (mask)
|
if (mask)
|
||||||
XDrawPoint(screen->display, mask, screen->monoGC, x, y);
|
XDrawPoint(screen->display, mask, screen->monoGC, x, y);
|
||||||
|
|
||||||
|
/* FALLTHRU */
|
||||||
case '.':
|
case '.':
|
||||||
case 'l':
|
case 'l':
|
||||||
XDrawPoint(screen->display, d, lightGC, x, y);
|
XDrawPoint(screen->display, d, lightGC, x, y);
|
||||||
@@ -944,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;
|
||||||
|
|||||||
+290
-10
@@ -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) {
|
||||||
@@ -89,10 +89,12 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
const char *alternateButton, const char *otherButton)
|
const char *alternateButton, const char *otherButton)
|
||||||
{
|
{
|
||||||
WMAlertPanel *panel;
|
WMAlertPanel *panel;
|
||||||
|
WMFont *defaultFont;
|
||||||
int dw = 0, aw = 0, ow = 0, w;
|
int dw = 0, aw = 0, ow = 0, w;
|
||||||
WMBox *hbox;
|
WMBox *hbox;
|
||||||
WMPixmap *icon;
|
WMPixmap *icon;
|
||||||
|
|
||||||
|
defaultFont = WMSystemFontOfSize(scrPtr, 12);
|
||||||
panel = wmalloc(sizeof(WMAlertPanel));
|
panel = wmalloc(sizeof(WMAlertPanel));
|
||||||
|
|
||||||
if (owner) {
|
if (owner) {
|
||||||
@@ -160,6 +162,7 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
WMFontHeight(scrPtr->normalFont) * 4, 0, 5);
|
WMFontHeight(scrPtr->normalFont) * 4, 0, 5);
|
||||||
WMSetLabelText(panel->mLbl, msg);
|
WMSetLabelText(panel->mLbl, msg);
|
||||||
WMSetLabelTextAlignment(panel->mLbl, WACenter);
|
WMSetLabelTextAlignment(panel->mLbl, WACenter);
|
||||||
|
WMSetLabelFont(panel->mLbl, defaultFont);
|
||||||
}
|
}
|
||||||
|
|
||||||
panel->hbox = WMCreateBox(panel->vbox);
|
panel->hbox = WMCreateBox(panel->vbox);
|
||||||
@@ -170,13 +173,13 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
|
|
||||||
/* create buttons */
|
/* create buttons */
|
||||||
if (otherButton)
|
if (otherButton)
|
||||||
ow = WMWidthOfString(scrPtr->normalFont, otherButton, strlen(otherButton));
|
ow = WMWidthOfString(defaultFont, otherButton, strlen(otherButton));
|
||||||
|
|
||||||
if (alternateButton)
|
if (alternateButton)
|
||||||
aw = WMWidthOfString(scrPtr->normalFont, alternateButton, strlen(alternateButton));
|
aw = WMWidthOfString(defaultFont, alternateButton, strlen(alternateButton));
|
||||||
|
|
||||||
if (defaultButton)
|
if (defaultButton)
|
||||||
dw = WMWidthOfString(scrPtr->normalFont, defaultButton, strlen(defaultButton));
|
dw = WMWidthOfString(defaultFont, defaultButton, strlen(defaultButton));
|
||||||
|
|
||||||
dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||||
|
|
||||||
@@ -206,18 +209,187 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
||||||
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
||||||
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
||||||
|
WMSetButtonFont(panel->defBtn, defaultFont);
|
||||||
}
|
}
|
||||||
if (alternateButton) {
|
if (alternateButton) {
|
||||||
panel->altBtn = WMCreateCommandButton(panel->hbox);
|
panel->altBtn = WMCreateCommandButton(panel->hbox);
|
||||||
WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->altBtn), False, True, aw, 0, 5);
|
WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->altBtn), False, True, aw, 0, 5);
|
||||||
WMSetButtonAction(panel->altBtn, alertPanelOnClick, panel);
|
WMSetButtonAction(panel->altBtn, alertPanelOnClick, panel);
|
||||||
WMSetButtonText(panel->altBtn, alternateButton);
|
WMSetButtonText(panel->altBtn, alternateButton);
|
||||||
|
WMSetButtonFont(panel->altBtn, defaultFont);
|
||||||
}
|
}
|
||||||
if (otherButton) {
|
if (otherButton) {
|
||||||
panel->othBtn = WMCreateCommandButton(panel->hbox);
|
panel->othBtn = WMCreateCommandButton(panel->hbox);
|
||||||
WMSetButtonAction(panel->othBtn, alertPanelOnClick, panel);
|
WMSetButtonAction(panel->othBtn, alertPanelOnClick, panel);
|
||||||
WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->othBtn), False, True, ow, 0, 5);
|
WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->othBtn), False, True, ow, 0, 5);
|
||||||
WMSetButtonText(panel->othBtn, otherButton);
|
WMSetButtonText(panel->othBtn, otherButton);
|
||||||
|
WMSetButtonFont(panel->othBtn, defaultFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hbox);
|
||||||
|
|
||||||
|
WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress, panel);
|
||||||
|
|
||||||
|
WMRealizeWidget(panel->win);
|
||||||
|
WMMapSubwidgets(panel->win);
|
||||||
|
|
||||||
|
WMReleaseFont(defaultFont);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
WMAlertPanel *WMCreateScaledAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||||
|
const char *title, const char *msg, const char *defaultButton,
|
||||||
|
const char *alternateButton, const char *otherButton)
|
||||||
|
{
|
||||||
|
WMAlertPanel *panel;
|
||||||
|
int dw = 0, aw = 0, ow = 0, w;
|
||||||
|
WMBox *hbox;
|
||||||
|
WMPixmap *icon;
|
||||||
|
int wmScaleWidth, wmScaleHeight;
|
||||||
|
int pwidth, pheight;
|
||||||
|
|
||||||
|
panel = wmalloc(sizeof(WMAlertPanel));
|
||||||
|
|
||||||
|
if (owner) {
|
||||||
|
panel->win = WMCreatePanelWithStyleForWindow(owner, "alertPanel", WMTitledWindowMask);
|
||||||
|
} else {
|
||||||
|
panel->win = WMCreateWindowWithStyle(scrPtr, "alertPanel", WMTitledWindowMask);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* calculate and set the panel's size */
|
||||||
|
WMGetScaleBaseFromSystemFont(scrPtr, &wmScaleWidth, &wmScaleHeight);
|
||||||
|
pwidth = WMScaleX(400);
|
||||||
|
pheight = WMScaleY(5) /* upper margin */
|
||||||
|
+ 64 /* icon size */
|
||||||
|
+ WMScaleY(5) /* space between icon and divider line */
|
||||||
|
+ 2 /* divider line */
|
||||||
|
+ WMScaleY(5); /* space between divider line and message */
|
||||||
|
if (msg)
|
||||||
|
pheight += WMFontHeight(scrPtr->normalFont) * 4 + WMScaleY(5);
|
||||||
|
pheight += WMScaleY(44);
|
||||||
|
WMResizeWidget(panel->win, pwidth, pheight);
|
||||||
|
|
||||||
|
WMSetWindowInitialPosition(panel->win,
|
||||||
|
(scrPtr->rootView->size.width - pwidth) / 2,
|
||||||
|
(scrPtr->rootView->size.height - pheight) / 2);
|
||||||
|
|
||||||
|
WMSetWindowTitle(panel->win, "");
|
||||||
|
|
||||||
|
panel->vbox = WMCreateBox(panel->win);
|
||||||
|
WMSetViewExpandsToParent(WMWidgetView(panel->vbox), 0, 0, 0, 0);
|
||||||
|
WMSetBoxHorizontal(panel->vbox, False);
|
||||||
|
WMMapWidget(panel->vbox);
|
||||||
|
|
||||||
|
hbox = WMCreateBox(panel->vbox);
|
||||||
|
WMSetBoxBorderWidth(hbox, WMScaleX(5));
|
||||||
|
WMSetBoxHorizontal(hbox, True);
|
||||||
|
WMMapWidget(hbox);
|
||||||
|
WMAddBoxSubview(panel->vbox, WMWidgetView(hbox), False, True, 64 + 2 * WMScaleY(5), 0, WMScaleY(5));
|
||||||
|
|
||||||
|
panel->iLbl = WMCreateLabel(hbox);
|
||||||
|
WMSetLabelImagePosition(panel->iLbl, WIPImageOnly);
|
||||||
|
WMMapWidget(panel->iLbl);
|
||||||
|
WMAddBoxSubview(hbox, WMWidgetView(panel->iLbl), False, True, 64, 0, 10);
|
||||||
|
icon = WMCreateApplicationIconBlendedPixmap(scrPtr, (RColor *) NULL);
|
||||||
|
if (icon) {
|
||||||
|
WMSetLabelImage(panel->iLbl, icon);
|
||||||
|
WMReleasePixmap(icon);
|
||||||
|
} else {
|
||||||
|
WMSetLabelImage(panel->iLbl, scrPtr->applicationIconPixmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (title) {
|
||||||
|
WMFont *largeFont;
|
||||||
|
|
||||||
|
largeFont = WMBoldSystemFontOfSize(scrPtr, 24);
|
||||||
|
|
||||||
|
panel->tLbl = WMCreateLabel(hbox);
|
||||||
|
WMMapWidget(panel->tLbl);
|
||||||
|
WMAddBoxSubview(hbox, WMWidgetView(panel->tLbl), True, True, 64, 0, 0);
|
||||||
|
WMSetLabelText(panel->tLbl, title);
|
||||||
|
WMSetLabelTextAlignment(panel->tLbl, WALeft);
|
||||||
|
WMSetLabelFont(panel->tLbl, largeFont);
|
||||||
|
|
||||||
|
WMReleaseFont(largeFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* create divider line */
|
||||||
|
|
||||||
|
panel->line = WMCreateFrame(panel->win);
|
||||||
|
WMMapWidget(panel->line);
|
||||||
|
WMAddBoxSubview(panel->vbox, WMWidgetView(panel->line), False, True, 2, 2, WMScaleY(5));
|
||||||
|
WMSetFrameRelief(panel->line, WRGroove);
|
||||||
|
|
||||||
|
if (msg) {
|
||||||
|
panel->mLbl = WMCreateLabel(panel->vbox);
|
||||||
|
WMSetLabelWraps(panel->mLbl, True);
|
||||||
|
WMMapWidget(panel->mLbl);
|
||||||
|
WMAddBoxSubview(panel->vbox, WMWidgetView(panel->mLbl), True, True,
|
||||||
|
WMFontHeight(scrPtr->normalFont) * 4, 0, WMScaleY(5));
|
||||||
|
WMSetLabelText(panel->mLbl, msg);
|
||||||
|
WMSetLabelTextAlignment(panel->mLbl, WACenter);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->hbox = WMCreateBox(panel->vbox);
|
||||||
|
WMSetBoxBorderWidth(panel->hbox, WMScaleX(10));
|
||||||
|
WMSetBoxHorizontal(panel->hbox, True);
|
||||||
|
WMMapWidget(panel->hbox);
|
||||||
|
WMAddBoxSubview(panel->vbox, WMWidgetView(panel->hbox), False, True, WMScaleY(44), 0, 0);
|
||||||
|
|
||||||
|
/* create buttons */
|
||||||
|
if (otherButton)
|
||||||
|
ow = WMWidthOfString(scrPtr->normalFont, otherButton, strlen(otherButton));
|
||||||
|
|
||||||
|
if (alternateButton)
|
||||||
|
aw = WMWidthOfString(scrPtr->normalFont, alternateButton, strlen(alternateButton));
|
||||||
|
|
||||||
|
if (defaultButton)
|
||||||
|
dw = WMWidthOfString(scrPtr->normalFont, defaultButton, strlen(defaultButton));
|
||||||
|
|
||||||
|
dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||||
|
|
||||||
|
aw += WMScaleX(30);
|
||||||
|
ow += WMScaleX(30);
|
||||||
|
dw += WMScaleX(30);
|
||||||
|
|
||||||
|
w = WMAX(dw, WMAX(aw, ow));
|
||||||
|
if ((w + WMScaleX(10)) * 3 < pwidth) {
|
||||||
|
aw = w;
|
||||||
|
ow = w;
|
||||||
|
dw = w;
|
||||||
|
} else {
|
||||||
|
int t;
|
||||||
|
|
||||||
|
t = pwidth - 4 * WMScaleX(10) - aw - ow - dw;
|
||||||
|
aw += t / 3;
|
||||||
|
ow += t / 3;
|
||||||
|
dw += t / 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defaultButton) {
|
||||||
|
panel->defBtn = WMCreateCommandButton(panel->hbox);
|
||||||
|
WMResizeWidget(panel->defBtn, dw, WMScaleY(24));
|
||||||
|
WMSetButtonAction(panel->defBtn, alertPanelOnClick, panel);
|
||||||
|
WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->defBtn), False, True, dw, 0, 0);
|
||||||
|
WMSetButtonText(panel->defBtn, defaultButton);
|
||||||
|
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
||||||
|
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
||||||
|
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
||||||
|
}
|
||||||
|
if (alternateButton) {
|
||||||
|
panel->altBtn = WMCreateCommandButton(panel->hbox);
|
||||||
|
WMResizeWidget(panel->altBtn, aw, WMScaleY(24));
|
||||||
|
WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->altBtn), False, True, aw, 0, WMScaleX(5));
|
||||||
|
WMSetButtonAction(panel->altBtn, alertPanelOnClick, panel);
|
||||||
|
WMSetButtonText(panel->altBtn, alternateButton);
|
||||||
|
}
|
||||||
|
if (otherButton) {
|
||||||
|
panel->othBtn = WMCreateCommandButton(panel->hbox);
|
||||||
|
WMResizeWidget(panel->othBtn, ow, WMScaleY(24));
|
||||||
|
WMSetButtonAction(panel->othBtn, alertPanelOnClick, panel);
|
||||||
|
WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->othBtn), False, True, ow, 0, WMScaleX(5));
|
||||||
|
WMSetButtonText(panel->othBtn, otherButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
WMMapSubwidgets(panel->hbox);
|
WMMapSubwidgets(panel->hbox);
|
||||||
@@ -249,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) {
|
||||||
@@ -338,8 +510,10 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
|||||||
const char *defaultText, const char *okButton, const char *cancelButton)
|
const char *defaultText, const char *okButton, const char *cancelButton)
|
||||||
{
|
{
|
||||||
WMInputPanel *panel;
|
WMInputPanel *panel;
|
||||||
|
WMFont *defaultFont;
|
||||||
int x, dw = 0, aw = 0, w;
|
int x, dw = 0, aw = 0, w;
|
||||||
|
|
||||||
|
defaultFont = WMSystemFontOfSize(scrPtr, 12);
|
||||||
panel = wmalloc(sizeof(WMInputPanel));
|
panel = wmalloc(sizeof(WMInputPanel));
|
||||||
|
|
||||||
if (owner)
|
if (owner)
|
||||||
@@ -371,21 +545,23 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
|||||||
WMResizeWidget(panel->mLbl, 320 - 40, WMFontHeight(scrPtr->normalFont) * 2);
|
WMResizeWidget(panel->mLbl, 320 - 40, WMFontHeight(scrPtr->normalFont) * 2);
|
||||||
WMSetLabelText(panel->mLbl, msg);
|
WMSetLabelText(panel->mLbl, msg);
|
||||||
WMSetLabelTextAlignment(panel->mLbl, WALeft);
|
WMSetLabelTextAlignment(panel->mLbl, WALeft);
|
||||||
|
WMSetLabelFont(panel->mLbl, defaultFont);
|
||||||
}
|
}
|
||||||
|
|
||||||
panel->text = WMCreateTextField(panel->win);
|
panel->text = WMCreateTextField(panel->win);
|
||||||
WMMoveWidget(panel->text, 20, 85);
|
WMMoveWidget(panel->text, 20, 85);
|
||||||
WMResizeWidget(panel->text, 320 - 40, WMWidgetHeight(panel->text));
|
WMResizeWidget(panel->text, 320 - 40, WMWidgetHeight(panel->text));
|
||||||
WMSetTextFieldText(panel->text, defaultText);
|
WMSetTextFieldText(panel->text, defaultText);
|
||||||
|
WMSetTextFieldFont(panel->text, defaultFont);
|
||||||
|
|
||||||
WMAddNotificationObserver(endedEditingObserver, panel, WMTextDidEndEditingNotification, panel->text);
|
WMAddNotificationObserver(endedEditingObserver, panel, WMTextDidEndEditingNotification, panel->text);
|
||||||
|
|
||||||
/* create buttons */
|
/* create buttons */
|
||||||
if (cancelButton)
|
if (cancelButton)
|
||||||
aw = WMWidthOfString(scrPtr->normalFont, cancelButton, strlen(cancelButton));
|
aw = WMWidthOfString(defaultFont, cancelButton, strlen(cancelButton));
|
||||||
|
|
||||||
if (okButton)
|
if (okButton)
|
||||||
dw = WMWidthOfString(scrPtr->normalFont, okButton, strlen(okButton));
|
dw = WMWidthOfString(defaultFont, okButton, strlen(okButton));
|
||||||
|
|
||||||
w = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
w = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||||
if (aw > w)
|
if (aw > w)
|
||||||
@@ -406,6 +582,7 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
|||||||
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
||||||
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
||||||
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
||||||
|
WMSetButtonFont(panel->defBtn, defaultFont);
|
||||||
}
|
}
|
||||||
if (cancelButton) {
|
if (cancelButton) {
|
||||||
x -= w + 10;
|
x -= w + 10;
|
||||||
@@ -415,6 +592,104 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
|||||||
WMMoveWidget(panel->altBtn, x, 124);
|
WMMoveWidget(panel->altBtn, x, 124);
|
||||||
WMResizeWidget(panel->altBtn, w, 24);
|
WMResizeWidget(panel->altBtn, w, 24);
|
||||||
WMSetButtonText(panel->altBtn, cancelButton);
|
WMSetButtonText(panel->altBtn, cancelButton);
|
||||||
|
WMSetButtonFont(panel->altBtn, defaultFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress2, panel);
|
||||||
|
|
||||||
|
WMRealizeWidget(panel->win);
|
||||||
|
WMMapSubwidgets(panel->win);
|
||||||
|
|
||||||
|
WMSetFocusToWidget(panel->text);
|
||||||
|
|
||||||
|
WMReleaseFont(defaultFont);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
WMInputPanel *WMCreateScaledInputPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *msg,
|
||||||
|
const char *defaultText, const char *okButton, const char *cancelButton)
|
||||||
|
{
|
||||||
|
WMInputPanel *panel;
|
||||||
|
int x, dw = 0, aw = 0, w;
|
||||||
|
int wmScaleWidth, wmScaleHeight;
|
||||||
|
|
||||||
|
panel = wmalloc(sizeof(WMInputPanel));
|
||||||
|
|
||||||
|
if (owner)
|
||||||
|
panel->win = WMCreatePanelWithStyleForWindow(owner, "inputPanel", WMTitledWindowMask);
|
||||||
|
else
|
||||||
|
panel->win = WMCreateWindowWithStyle(scrPtr, "inputPanel", WMTitledWindowMask);
|
||||||
|
WMSetWindowTitle(panel->win, "");
|
||||||
|
|
||||||
|
WMGetScaleBaseFromSystemFont(scrPtr, &wmScaleWidth, &wmScaleHeight);
|
||||||
|
WMResizeWidget(panel->win, WMScaleX(320), WMScaleY(160));
|
||||||
|
|
||||||
|
if (title) {
|
||||||
|
WMFont *largeFont;
|
||||||
|
|
||||||
|
largeFont = WMBoldSystemFontOfSize(scrPtr, WMScaleY(24));
|
||||||
|
|
||||||
|
panel->tLbl = WMCreateLabel(panel->win);
|
||||||
|
WMMoveWidget(panel->tLbl, WMScaleX(20), WMScaleY(16));
|
||||||
|
WMResizeWidget(panel->tLbl, WMScaleX(320) - 2 * WMScaleX(20), WMFontHeight(largeFont) + WMScaleY(4));
|
||||||
|
WMSetLabelText(panel->tLbl, title);
|
||||||
|
WMSetLabelTextAlignment(panel->tLbl, WALeft);
|
||||||
|
WMSetLabelFont(panel->tLbl, largeFont);
|
||||||
|
|
||||||
|
WMReleaseFont(largeFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg) {
|
||||||
|
panel->mLbl = WMCreateLabel(panel->win);
|
||||||
|
WMMoveWidget(panel->mLbl, WMScaleX(20), WMScaleY(50));
|
||||||
|
WMResizeWidget(panel->mLbl, WMScaleX(320) - 2 * WMScaleX(20), WMFontHeight(scrPtr->normalFont) * 2);
|
||||||
|
WMSetLabelText(panel->mLbl, msg);
|
||||||
|
WMSetLabelTextAlignment(panel->mLbl, WALeft);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->text = WMCreateTextField(panel->win);
|
||||||
|
WMMoveWidget(panel->text, WMScaleX(20), WMScaleY(85));
|
||||||
|
WMResizeWidget(panel->text, WMScaleX(320) - 2 * WMScaleX(20), WMScaleY(20));
|
||||||
|
WMSetTextFieldText(panel->text, defaultText);
|
||||||
|
|
||||||
|
WMAddNotificationObserver(endedEditingObserver, panel, WMTextDidEndEditingNotification, panel->text);
|
||||||
|
|
||||||
|
/* create buttons */
|
||||||
|
if (cancelButton)
|
||||||
|
aw = WMWidthOfString(scrPtr->normalFont, cancelButton, strlen(cancelButton));
|
||||||
|
|
||||||
|
if (okButton)
|
||||||
|
dw = WMWidthOfString(scrPtr->normalFont, okButton, strlen(okButton));
|
||||||
|
|
||||||
|
w = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||||
|
if (aw > w)
|
||||||
|
w = aw;
|
||||||
|
|
||||||
|
w += WMScaleX(30);
|
||||||
|
x = WMScaleX(310);
|
||||||
|
|
||||||
|
if (okButton) {
|
||||||
|
x -= w + WMScaleX(10);
|
||||||
|
|
||||||
|
panel->defBtn = WMCreateCustomButton(panel->win, WBBPushInMask
|
||||||
|
| WBBPushChangeMask | WBBPushLightMask);
|
||||||
|
WMSetButtonAction(panel->defBtn, inputBoxOnClick, panel);
|
||||||
|
WMMoveWidget(panel->defBtn, x, WMScaleY(124));
|
||||||
|
WMResizeWidget(panel->defBtn, w, WMScaleY(24));
|
||||||
|
WMSetButtonText(panel->defBtn, okButton);
|
||||||
|
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
||||||
|
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
||||||
|
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
||||||
|
}
|
||||||
|
if (cancelButton) {
|
||||||
|
x -= w + WMScaleX(10);
|
||||||
|
|
||||||
|
panel->altBtn = WMCreateCommandButton(panel->win);
|
||||||
|
WMSetButtonAction(panel->altBtn, inputBoxOnClick, panel);
|
||||||
|
WMMoveWidget(panel->altBtn, x, WMScaleY(124));
|
||||||
|
WMResizeWidget(panel->altBtn, w, WMScaleY(24));
|
||||||
|
WMSetButtonText(panel->altBtn, cancelButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress2, panel);
|
WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress2, panel);
|
||||||
@@ -434,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) {
|
||||||
@@ -457,10 +732,12 @@ WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
const char *title, const char *defaultButton, const char *alternateButton)
|
const char *title, const char *defaultButton, const char *alternateButton)
|
||||||
{
|
{
|
||||||
WMGenericPanel *panel;
|
WMGenericPanel *panel;
|
||||||
|
WMFont *defaultFont;
|
||||||
int dw = 0, aw = 0, w;
|
int dw = 0, aw = 0, w;
|
||||||
WMBox *hbox;
|
WMBox *hbox;
|
||||||
WMPixmap *icon;
|
WMPixmap *icon;
|
||||||
|
|
||||||
|
defaultFont = WMSystemFontOfSize(scrPtr, 12);
|
||||||
panel = wmalloc(sizeof(WMGenericPanel));
|
panel = wmalloc(sizeof(WMGenericPanel));
|
||||||
|
|
||||||
if (owner) {
|
if (owner) {
|
||||||
@@ -533,10 +810,10 @@ WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
|
|
||||||
/* create buttons */
|
/* create buttons */
|
||||||
if (defaultButton)
|
if (defaultButton)
|
||||||
dw = WMWidthOfString(scrPtr->normalFont, defaultButton, strlen(defaultButton));
|
dw = WMWidthOfString(defaultFont, defaultButton, strlen(defaultButton));
|
||||||
|
|
||||||
if (alternateButton)
|
if (alternateButton)
|
||||||
aw = WMWidthOfString(scrPtr->normalFont, alternateButton, strlen(alternateButton));
|
aw = WMWidthOfString(defaultFont, alternateButton, strlen(alternateButton));
|
||||||
|
|
||||||
dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||||
|
|
||||||
@@ -561,6 +838,7 @@ WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
||||||
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
||||||
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
||||||
|
WMSetButtonFont(panel->defBtn, defaultFont);
|
||||||
}
|
}
|
||||||
|
|
||||||
WMMapSubwidgets(hbox);
|
WMMapSubwidgets(hbox);
|
||||||
@@ -570,5 +848,7 @@ WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner,
|
|||||||
WMRealizeWidget(panel->win);
|
WMRealizeWidget(panel->win);
|
||||||
WMMapSubwidgets(panel->win);
|
WMMapSubwidgets(panel->win);
|
||||||
|
|
||||||
|
WMReleaseFont(defaultFont);
|
||||||
|
|
||||||
return panel;
|
return panel;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -181,10 +181,7 @@ static void drawRulerOnPixmap(Ruler * rPtr)
|
|||||||
XDrawLine(rPtr->view->screen->display, rPtr->drawBuffer,
|
XDrawLine(rPtr->view->screen->display, rPtr->drawBuffer,
|
||||||
rPtr->fgGC, rPtr->margins.left + m, 23, rPtr->margins.left + m, marks[i % 8] + 23);
|
rPtr->fgGC, rPtr->margins.left + m, 23, rPtr->margins.left + m, marks[i % 8] + 23);
|
||||||
if (i != 0 && i % 8 == 0) {
|
if (i != 0 && i % 8 == 0) {
|
||||||
if (j < 10)
|
snprintf(c, sizeof(c), "%hu", ++j);
|
||||||
snprintf(c, 3, "%d", ++j);
|
|
||||||
else
|
|
||||||
snprintf(c, 3, "%2d", ++j);
|
|
||||||
WMDrawString(rPtr->view->screen, rPtr->drawBuffer, rPtr->fg,
|
WMDrawString(rPtr->view->screen, rPtr->drawBuffer, rPtr->fg,
|
||||||
rPtr->font, rPtr->margins.left + 2 + m, 26, c, 2);
|
rPtr->font, rPtr->margins.left + 2 + m, 26, c, 2);
|
||||||
}
|
}
|
||||||
|
|||||||
+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;
|
||||||
|
|||||||
@@ -41,9 +41,6 @@ typedef struct W_SplitView {
|
|||||||
/* TODO: rewrite --Dan */
|
/* TODO: rewrite --Dan */
|
||||||
#define _GetSubviewsCount() WMGetArrayItemCount(sPtr->subviews)
|
#define _GetSubviewsCount() WMGetArrayItemCount(sPtr->subviews)
|
||||||
|
|
||||||
#define _AddPSubviewStruct(P) \
|
|
||||||
(WMAddToArray(sPtr->subviews,((void*)P)))
|
|
||||||
|
|
||||||
#define _GetPSubviewStructAt(i) \
|
#define _GetPSubviewStructAt(i) \
|
||||||
((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))
|
((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))
|
||||||
|
|
||||||
|
|||||||
+27
-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);
|
||||||
@@ -2305,6 +2308,7 @@ static void handleTextKeyPress(Text * tPtr, XEvent * event)
|
|||||||
|
|
||||||
case XK_Return:
|
case XK_Return:
|
||||||
*buffer = '\n';
|
*buffer = '\n';
|
||||||
|
/* FALLTHRU */
|
||||||
default:
|
default:
|
||||||
if (*buffer != 0 && !control_pressed) {
|
if (*buffer != 0 && !control_pressed) {
|
||||||
insertTextInteractively(tPtr, buffer, strlen(buffer));
|
insertTextInteractively(tPtr, buffer, strlen(buffer));
|
||||||
@@ -2544,6 +2548,7 @@ static void handleActionEvents(XEvent * event, void *data)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FALLTHRU */
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
if (tPtr->flags.pointerGrabbed) {
|
if (tPtr->flags.pointerGrabbed) {
|
||||||
tPtr->flags.pointerGrabbed = False;
|
tPtr->flags.pointerGrabbed = False;
|
||||||
@@ -2972,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;
|
||||||
|
|||||||
+19
-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;
|
||||||
@@ -965,6 +965,7 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
switch (ksym) {
|
switch (ksym) {
|
||||||
case XK_Tab:
|
case XK_Tab:
|
||||||
#ifdef XK_ISO_Left_Tab
|
#ifdef XK_ISO_Left_Tab
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_ISO_Left_Tab:
|
case XK_ISO_Left_Tab:
|
||||||
#endif
|
#endif
|
||||||
if (!controled) {
|
if (!controled) {
|
||||||
@@ -1001,8 +1002,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef XK_KP_Enter
|
#ifdef XK_KP_Enter
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_KP_Enter:
|
case XK_KP_Enter:
|
||||||
#endif
|
#endif
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_Return:
|
case XK_Return:
|
||||||
if (!modified) {
|
if (!modified) {
|
||||||
data = (void *)WMReturnTextMovement;
|
data = (void *)WMReturnTextMovement;
|
||||||
@@ -1019,8 +1022,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
controled = False;
|
controled = False;
|
||||||
|
|
||||||
#ifdef XK_KP_Left
|
#ifdef XK_KP_Left
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_KP_Left:
|
case XK_KP_Left:
|
||||||
#endif
|
#endif
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_Left:
|
case XK_Left:
|
||||||
if (tPtr->cursorPosition > 0) {
|
if (tPtr->cursorPosition > 0) {
|
||||||
int i;
|
int i;
|
||||||
@@ -1058,8 +1063,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
controled = False;
|
controled = False;
|
||||||
|
|
||||||
#ifdef XK_KP_Right
|
#ifdef XK_KP_Right
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_KP_Right:
|
case XK_KP_Right:
|
||||||
#endif
|
#endif
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_Right:
|
case XK_Right:
|
||||||
if (tPtr->cursorPosition < tPtr->textLen) {
|
if (tPtr->cursorPosition < tPtr->textLen) {
|
||||||
int i;
|
int i;
|
||||||
@@ -1095,8 +1102,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
controled = False;
|
controled = False;
|
||||||
|
|
||||||
#ifdef XK_KP_Home
|
#ifdef XK_KP_Home
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_KP_Home:
|
case XK_KP_Home:
|
||||||
#endif
|
#endif
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_Home:
|
case XK_Home:
|
||||||
if (!controled) {
|
if (!controled) {
|
||||||
if (tPtr->cursorPosition > 0) {
|
if (tPtr->cursorPosition > 0) {
|
||||||
@@ -1122,8 +1131,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
controled = False;
|
controled = False;
|
||||||
|
|
||||||
#ifdef XK_KP_End
|
#ifdef XK_KP_End
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_KP_End:
|
case XK_KP_End:
|
||||||
#endif
|
#endif
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_End:
|
case XK_End:
|
||||||
if (!controled) {
|
if (!controled) {
|
||||||
if (tPtr->cursorPosition < tPtr->textLen) {
|
if (tPtr->cursorPosition < tPtr->textLen) {
|
||||||
@@ -1149,6 +1160,7 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
else
|
else
|
||||||
modified = False;
|
modified = False;
|
||||||
|
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_BackSpace:
|
case XK_BackSpace:
|
||||||
if (!modified) {
|
if (!modified) {
|
||||||
if (tPtr->selection.count) {
|
if (tPtr->selection.count) {
|
||||||
@@ -1177,8 +1189,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
|||||||
modified = False;
|
modified = False;
|
||||||
|
|
||||||
#ifdef XK_KP_Delete
|
#ifdef XK_KP_Delete
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_KP_Delete:
|
case XK_KP_Delete:
|
||||||
#endif
|
#endif
|
||||||
|
/* FALLTHRU */
|
||||||
case XK_Delete:
|
case XK_Delete:
|
||||||
if (!modified) {
|
if (!modified) {
|
||||||
if (tPtr->selection.count) {
|
if (tPtr->selection.count) {
|
||||||
|
|||||||
+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();
|
||||||
|
|||||||
+5
-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| \
|
||||||
@@ -490,6 +490,7 @@ void W_SetViewBackgroundColor(W_View * view, WMColor * color)
|
|||||||
view->backColor = WMRetainColor(color);
|
view->backColor = WMRetainColor(color);
|
||||||
|
|
||||||
view->attribFlags |= CWBackPixel;
|
view->attribFlags |= CWBackPixel;
|
||||||
|
view->attribFlags &= ~CWBackPixmap;
|
||||||
view->attribs.background_pixel = W_PIXEL(color);
|
view->attribs.background_pixel = W_PIXEL(color);
|
||||||
if (view->flags.realized) {
|
if (view->flags.realized) {
|
||||||
XSetWindowBackground(view->screen->display, view->window, W_PIXEL(color));
|
XSetWindowBackground(view->screen->display, view->window, W_PIXEL(color));
|
||||||
@@ -504,6 +505,7 @@ void W_SetViewBackgroundPixmap(W_View *view, WMPixmap *pix)
|
|||||||
view->backImage = WMRetainPixmap(pix);
|
view->backImage = WMRetainPixmap(pix);
|
||||||
|
|
||||||
view->attribFlags |= CWBackPixmap;
|
view->attribFlags |= CWBackPixmap;
|
||||||
|
view->attribFlags &= ~CWBackPixel;
|
||||||
view->attribs.background_pixmap = pix->pixmap;
|
view->attribs.background_pixmap = pix->pixmap;
|
||||||
if (view->flags.realized) {
|
if (view->flags.realized) {
|
||||||
XSetWindowBackgroundPixmap(view->screen->display, view->window, pix->pixmap);
|
XSetWindowBackgroundPixmap(view->screen->display, view->window, pix->pixmap);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
+33
-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)
|
||||||
@@ -611,6 +617,7 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
||||||
|
/* FALLTHRU */
|
||||||
case 'D':
|
case 'D':
|
||||||
style = RDiagonalGradient;
|
style = RDiagonalGradient;
|
||||||
break;
|
break;
|
||||||
@@ -637,6 +644,7 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
||||||
|
/* FALLTHRU */
|
||||||
case 'D':
|
case 'D':
|
||||||
style = RDiagonalGradient;
|
style = RDiagonalGradient;
|
||||||
break;
|
break;
|
||||||
@@ -671,6 +679,7 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
||||||
|
/* FALLTHRU */
|
||||||
case 'D':
|
case 'D':
|
||||||
style = RDiagonalGradient;
|
style = RDiagonalGradient;
|
||||||
break;
|
break;
|
||||||
@@ -1067,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;
|
||||||
@@ -1125,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]);
|
||||||
|
|
||||||
@@ -1224,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;
|
||||||
@@ -1252,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;
|
||||||
@@ -1281,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);
|
||||||
@@ -1416,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;
|
||||||
|
|
||||||
@@ -1427,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)
|
||||||
@@ -1728,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]);
|
||||||
|
|
||||||
@@ -1819,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;
|
||||||
}
|
}
|
||||||
@@ -1832,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -68,7 +68,7 @@ typedef struct _Panel {
|
|||||||
WMButton *autoDelayB[wlengthof_nocheck(auto_delay)][wlengthof_nocheck(autoDelayPresetValues)];
|
WMButton *autoDelayB[wlengthof_nocheck(auto_delay)][wlengthof_nocheck(autoDelayPresetValues)];
|
||||||
WMTextField *autoDelayT[wlengthof_nocheck(auto_delay)];
|
WMTextField *autoDelayT[wlengthof_nocheck(auto_delay)];
|
||||||
WMLabel *autoDelayMsL[wlengthof_nocheck(auto_delay)];
|
WMLabel *autoDelayMsL[wlengthof_nocheck(auto_delay)];
|
||||||
|
|
||||||
WMFrame *dockF;
|
WMFrame *dockF;
|
||||||
WMButton *docksB[wlengthof_nocheck(dock_config)];
|
WMButton *docksB[wlengthof_nocheck(dock_config)];
|
||||||
} _Panel;
|
} _Panel;
|
||||||
@@ -267,7 +267,7 @@ static void createPanel(Panel *p)
|
|||||||
WMSetBalloonTextForView(_(dock_config[i].balloon_text), WMWidgetView(panel->docksB[i]));
|
WMSetBalloonTextForView(_(dock_config[i].balloon_text), WMWidgetView(panel->docksB[i]));
|
||||||
WMSetButtonAction(panel->docksB[i], pushDockButton, panel);
|
WMSetButtonAction(panel->docksB[i], pushDockButton, panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
WMMapSubwidgets(panel->dockF);
|
WMMapSubwidgets(panel->dockF);
|
||||||
|
|
||||||
if (xis)
|
if (xis)
|
||||||
|
|||||||
+47
-7
@@ -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,8 +98,31 @@ 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_("Snap a window to the top to maximize it to the full screen."),
|
||||||
|
/* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" },
|
||||||
|
|
||||||
|
{ N_("Allow move half-maximized windows between multiple screens."),
|
||||||
|
/* default: */ False, OPTION_WMAKER, "MoveHalfMaximizedWindowsBetweenScreens" },
|
||||||
|
|
||||||
|
{ N_("Alternative transitions between states for half maximized windows."),
|
||||||
|
/* default: */ False, OPTION_WMAKER, "AlternativeHalfMaximized" },
|
||||||
|
|
||||||
|
{ N_("Move mouse pointer with half maximized windows."),
|
||||||
|
/* default: */ False, OPTION_WMAKER, "PointerWithHalfMaxWindows" },
|
||||||
|
|
||||||
{ N_("Open dialogs in the same workspace as their owners."),
|
{ N_("Open dialogs in the same workspace as their owners."),
|
||||||
/* default: */ False, OPTION_WMAKER, "OpenTransientOnOwnerWorkspace" }
|
/* default: */ False, OPTION_WMAKER, "OpenTransientOnOwnerWorkspace" },
|
||||||
|
|
||||||
|
{ N_("Wrap dock-attached icons around the screen edges."),
|
||||||
|
/* 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"},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -125,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)
|
||||||
@@ -148,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;
|
||||||
@@ -171,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);
|
||||||
@@ -293,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;
|
||||||
|
|||||||
+13
-16
@@ -1,9 +1,9 @@
|
|||||||
/* FontSimple.c- simplified font configuration panel
|
/* FontSimple.c- simplified font configuration panel
|
||||||
*
|
*
|
||||||
* WPrefs - Window Maker Preferences Program
|
* WPrefs - Window Maker Preferences Program
|
||||||
*
|
*
|
||||||
* Copyright (c) 1998-2004 Alfredo K. Kojima
|
* Copyright (c) 1998-2004 Alfredo K. Kojima
|
||||||
*
|
*
|
||||||
* 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
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
@@ -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;
|
||||||
@@ -569,6 +570,9 @@ static void showData(_Panel * panel)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
WMMenuItem *item;
|
WMMenuItem *item;
|
||||||
|
WMScreen *scr;
|
||||||
|
|
||||||
|
scr = WMWidgetScreen(panel->parent);
|
||||||
|
|
||||||
for (i = 0; i < WMGetPopUpButtonNumberOfItems(panel->optionP); i++) {
|
for (i = 0; i < WMGetPopUpButtonNumberOfItems(panel->optionP); i++) {
|
||||||
char *ofont, *font;
|
char *ofont, *font;
|
||||||
@@ -579,19 +583,12 @@ static void showData(_Panel * panel)
|
|||||||
if (ofont)
|
if (ofont)
|
||||||
wfree(ofont);
|
wfree(ofont);
|
||||||
|
|
||||||
if (strcmp(fontOptions[i].option, "SystemFont") == 0 ||
|
if (strcmp(fontOptions[i].option, "SystemFont") == 0)
|
||||||
strcmp(fontOptions[i].option, "BoldSystemFont") == 0) {
|
font = WMGetFontName(WMDefaultSystemFont(scr));
|
||||||
char *path;
|
else if (strcmp(fontOptions[i].option, "BoldSystemFont") == 0)
|
||||||
WMUserDefaults *defaults;
|
font = WMGetFontName(WMDefaultBoldSystemFont(scr));
|
||||||
|
else
|
||||||
path = wdefaultspathfordomain("WMGLOBAL");
|
|
||||||
defaults = WMGetDefaultsFromPath(path);
|
|
||||||
wfree(path);
|
|
||||||
font = WMGetUDStringForKey(defaults,
|
|
||||||
fontOptions[i].option);
|
|
||||||
} else {
|
|
||||||
font = GetStringForKey(fontOptions[i].option);
|
font = GetStringForKey(fontOptions[i].option);
|
||||||
}
|
|
||||||
if (font)
|
if (font)
|
||||||
font = wstrdup(font);
|
font = wstrdup(font);
|
||||||
WMSetMenuItemRepresentedObject(item, font);
|
WMSetMenuItemRepresentedObject(item, font);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
+33
-61
@@ -60,8 +60,6 @@ typedef struct _Panel {
|
|||||||
|
|
||||||
CallbackRec callbacks;
|
CallbackRec callbacks;
|
||||||
|
|
||||||
Bool have_legacy_apercu;
|
|
||||||
|
|
||||||
WMWidget *parent;
|
WMWidget *parent;
|
||||||
|
|
||||||
WMFrame *posF;
|
WMFrame *posF;
|
||||||
@@ -75,12 +73,13 @@ typedef struct _Panel {
|
|||||||
WMButton *posB[wlengthof_nocheck(icon_position_dbvalue)];
|
WMButton *posB[wlengthof_nocheck(icon_position_dbvalue)];
|
||||||
|
|
||||||
WMFrame *animF;
|
WMFrame *animF;
|
||||||
WMButton *animB[wlengthof_nocheck(icon_animation)];
|
WMPopUpButton *animP;
|
||||||
|
|
||||||
WMFrame *optF;
|
WMFrame *optF;
|
||||||
WMButton *arrB;
|
WMButton *arrB;
|
||||||
WMButton *omnB;
|
WMButton *omnB;
|
||||||
WMButton *sclB;
|
WMButton *sclB;
|
||||||
|
WMButton *marginB;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
WMFrame *frame;
|
WMFrame *frame;
|
||||||
@@ -175,6 +174,7 @@ static void showData(_Panel * panel)
|
|||||||
WMSetButtonSelected(panel->arrB, GetBoolForKey("AutoArrangeIcons"));
|
WMSetButtonSelected(panel->arrB, GetBoolForKey("AutoArrangeIcons"));
|
||||||
WMSetButtonSelected(panel->omnB, GetBoolForKey("StickyIcons"));
|
WMSetButtonSelected(panel->omnB, GetBoolForKey("StickyIcons"));
|
||||||
WMSetButtonSelected(panel->sclB, GetBoolForKey("SingleClickLaunch"));
|
WMSetButtonSelected(panel->sclB, GetBoolForKey("SingleClickLaunch"));
|
||||||
|
WMSetButtonSelected(panel->marginB, GetBoolForKey("EnforceIconMargin"));
|
||||||
|
|
||||||
str = GetStringForKey("IconPosition");
|
str = GetStringForKey("IconPosition");
|
||||||
if (str != NULL) {
|
if (str != NULL) {
|
||||||
@@ -195,20 +195,12 @@ 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 */
|
||||||
|
|
||||||
/*
|
|
||||||
* Backward Compatibility:
|
|
||||||
* These settings changed names after 0.95.6, so to avoid breaking user's
|
|
||||||
* config we still support the old names, and silently convert them to the
|
|
||||||
* new settings
|
|
||||||
* This hack should be kept for at least 2 years, that means >= 2017.
|
|
||||||
*/
|
|
||||||
panel->have_legacy_apercu = False;
|
|
||||||
str = GetStringForKey("MiniwindowPreviewBalloons");
|
str = GetStringForKey("MiniwindowPreviewBalloons");
|
||||||
if (str != NULL) {
|
if (str != NULL) {
|
||||||
/* New names found, use them in priority */
|
/* New names found, use them in priority */
|
||||||
@@ -220,25 +212,6 @@ static void showData(_Panel * panel)
|
|||||||
} else {
|
} else {
|
||||||
i = minipreview_minimum_size;
|
i = minipreview_minimum_size;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
/* No new names, try the legacy names */
|
|
||||||
b = GetBoolForKey("MiniwindowApercuBalloons");
|
|
||||||
if (b) {
|
|
||||||
panel->have_legacy_apercu = True;
|
|
||||||
i = GetIntegerForKey("ApercuSize");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* In the beginning, the option was coded as a multiple of the icon
|
|
||||||
* size; then it was converted to pixel size
|
|
||||||
*/
|
|
||||||
if (i < 24)
|
|
||||||
i *= GetIntegerForKey("IconSize");
|
|
||||||
|
|
||||||
if (i <= minipreview_minimum_size)
|
|
||||||
i = minipreview_minimum_size + 1; /* +1 to not display as "off" */
|
|
||||||
} else {
|
|
||||||
i = minipreview_minimum_size;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
WMSetSliderValue(panel->minipreview.slider, i);
|
WMSetSliderValue(panel->minipreview.slider, i);
|
||||||
minipreview_slider_changed(panel->minipreview.slider, panel);
|
minipreview_slider_changed(panel->minipreview.slider, panel);
|
||||||
@@ -248,7 +221,7 @@ static void showData(_Panel * panel)
|
|||||||
if (str != NULL) {
|
if (str != NULL) {
|
||||||
for (i = 0; i < wlengthof(icon_animation); i++) {
|
for (i = 0; i < wlengthof(icon_animation); i++) {
|
||||||
if (strcasecmp(str, icon_animation[i].db_value) == 0) {
|
if (strcasecmp(str, icon_animation[i].db_value) == 0) {
|
||||||
WMPerformButtonClick(panel->animB[i]);
|
WMSetPopUpButtonSelectedItem(panel->animP, i);
|
||||||
goto found_animation_value;
|
goto found_animation_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -256,7 +229,7 @@ static void showData(_Panel * panel)
|
|||||||
str, icon_animation[0].db_value);
|
str, icon_animation[0].db_value);
|
||||||
}
|
}
|
||||||
/* If we're here, no valid value have been found so we fall-back to the default */
|
/* If we're here, no valid value have been found so we fall-back to the default */
|
||||||
WMPerformButtonClick(panel->animB[0]);
|
WMSetPopUpButtonSelectedItem(panel->animP, 0);
|
||||||
found_animation_value:
|
found_animation_value:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@@ -366,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);
|
||||||
}
|
}
|
||||||
@@ -399,50 +372,57 @@ static void createPanel(Panel * p)
|
|||||||
|
|
||||||
/***************** Animation ****************/
|
/***************** Animation ****************/
|
||||||
panel->animF = WMCreateFrame(panel->box);
|
panel->animF = WMCreateFrame(panel->box);
|
||||||
WMResizeWidget(panel->animF, 215, 110);
|
WMResizeWidget(panel->animF, 215, 52);
|
||||||
WMMoveWidget(panel->animF, 292, 6);
|
WMMoveWidget(panel->animF, 292, 6);
|
||||||
WMSetFrameTitle(panel->animF, _("Iconification Animation"));
|
WMSetFrameTitle(panel->animF, _("Iconification Animation"));
|
||||||
|
|
||||||
for (i = 0; i < wlengthof(icon_animation); i++) {
|
panel->animP = WMCreatePopUpButton(panel->animF);
|
||||||
panel->animB[i] = WMCreateRadioButton(panel->animF);
|
WMResizeWidget(panel->animP, 195, 20);
|
||||||
WMResizeWidget(panel->animB[i], 192, 20);
|
WMMoveWidget(panel->animP, 10, 19);
|
||||||
WMMoveWidget(panel->animB[i], 12, 16 + i * 22);
|
for (i = 0; i < wlengthof(icon_animation); i++)
|
||||||
|
WMAddPopUpButtonItem(panel->animP, _(icon_animation[i].label));
|
||||||
if (i > 0)
|
|
||||||
WMGroupButtons(panel->animB[0], panel->animB[i]);
|
|
||||||
|
|
||||||
WMSetButtonText(panel->animB[i], _(icon_animation[i].label));
|
|
||||||
}
|
|
||||||
|
|
||||||
WMMapSubwidgets(panel->animF);
|
WMMapSubwidgets(panel->animF);
|
||||||
|
|
||||||
/***************** Options ****************/
|
/***************** Options ****************/
|
||||||
panel->optF = WMCreateFrame(panel->box);
|
panel->optF = WMCreateFrame(panel->box);
|
||||||
WMResizeWidget(panel->optF, 215, 90);
|
WMResizeWidget(panel->optF, 215, 148);
|
||||||
WMMoveWidget(panel->optF, 292, 130);
|
WMMoveWidget(panel->optF, 292, 72);
|
||||||
/* WMSetFrameTitle(panel->optF, _("Icon Display")); */
|
/* WMSetFrameTitle(panel->optF, _("Icon Display")); */
|
||||||
|
starty = 8 + 14; /* the last term centers the checkboxes within the panel; subtract 13 for a new option */
|
||||||
|
|
||||||
panel->arrB = WMCreateSwitchButton(panel->optF);
|
panel->arrB = WMCreateSwitchButton(panel->optF);
|
||||||
WMResizeWidget(panel->arrB, 198, 26);
|
WMResizeWidget(panel->arrB, 198, 26);
|
||||||
WMMoveWidget(panel->arrB, 12, 8);
|
WMMoveWidget(panel->arrB, 12, starty);
|
||||||
|
starty += 26;
|
||||||
WMSetButtonText(panel->arrB, _("Auto-arrange icons"));
|
WMSetButtonText(panel->arrB, _("Auto-arrange icons"));
|
||||||
|
|
||||||
WMSetBalloonTextForView(_("Keep icons and miniwindows arranged all the time."), WMWidgetView(panel->arrB));
|
WMSetBalloonTextForView(_("Keep icons and miniwindows arranged all the time."), WMWidgetView(panel->arrB));
|
||||||
|
|
||||||
panel->omnB = WMCreateSwitchButton(panel->optF);
|
panel->omnB = WMCreateSwitchButton(panel->optF);
|
||||||
WMResizeWidget(panel->omnB, 198, 26);
|
WMResizeWidget(panel->omnB, 198, 26);
|
||||||
WMMoveWidget(panel->omnB, 12, 34);
|
WMMoveWidget(panel->omnB, 12, starty);
|
||||||
|
starty += 26;
|
||||||
WMSetButtonText(panel->omnB, _("Omnipresent miniwindows"));
|
WMSetButtonText(panel->omnB, _("Omnipresent miniwindows"));
|
||||||
|
|
||||||
WMSetBalloonTextForView(_("Make miniwindows be present in all workspaces."), WMWidgetView(panel->omnB));
|
WMSetBalloonTextForView(_("Make miniwindows be present in all workspaces."), WMWidgetView(panel->omnB));
|
||||||
|
|
||||||
panel->sclB = WMCreateSwitchButton(panel->optF);
|
panel->sclB = WMCreateSwitchButton(panel->optF);
|
||||||
WMResizeWidget(panel->sclB, 198, 26);
|
WMResizeWidget(panel->sclB, 198, 26);
|
||||||
WMMoveWidget(panel->sclB, 12, 60);
|
WMMoveWidget(panel->sclB, 12, starty);
|
||||||
|
starty += 26;
|
||||||
WMSetButtonText(panel->sclB, _("Single click activation"));
|
WMSetButtonText(panel->sclB, _("Single click activation"));
|
||||||
|
|
||||||
WMSetBalloonTextForView(_("Launch applications and restore windows with a single click."), WMWidgetView(panel->sclB));
|
WMSetBalloonTextForView(_("Launch applications and restore windows with a single click."), WMWidgetView(panel->sclB));
|
||||||
|
|
||||||
|
panel->marginB = WMCreateSwitchButton(panel->optF);
|
||||||
|
WMResizeWidget(panel->marginB, 198, 26);
|
||||||
|
WMMoveWidget(panel->marginB, 12, starty);
|
||||||
|
starty += 26;
|
||||||
|
WMSetButtonText(panel->marginB, _("Enforce icon margin"));
|
||||||
|
|
||||||
|
WMSetBalloonTextForView(_("Make sure that the icon image does not protrude into the icon frame."), WMWidgetView(panel->marginB));
|
||||||
|
|
||||||
WMMapSubwidgets(panel->optF);
|
WMMapSubwidgets(panel->optF);
|
||||||
|
|
||||||
WMRealizeWidget(panel->box);
|
WMRealizeWidget(panel->box);
|
||||||
@@ -458,6 +438,7 @@ static void storeData(_Panel * panel)
|
|||||||
SetBoolForKey(WMGetButtonSelected(panel->arrB), "AutoArrangeIcons");
|
SetBoolForKey(WMGetButtonSelected(panel->arrB), "AutoArrangeIcons");
|
||||||
SetBoolForKey(WMGetButtonSelected(panel->omnB), "StickyIcons");
|
SetBoolForKey(WMGetButtonSelected(panel->omnB), "StickyIcons");
|
||||||
SetBoolForKey(WMGetButtonSelected(panel->sclB), "SingleClickLaunch");
|
SetBoolForKey(WMGetButtonSelected(panel->sclB), "SingleClickLaunch");
|
||||||
|
SetBoolForKey(WMGetButtonSelected(panel->marginB), "EnforceIconMargin");
|
||||||
|
|
||||||
SetIntegerForKey(WMGetPopUpButtonSelectedItem(panel->sizeP) * 8 + 24, "IconSize");
|
SetIntegerForKey(WMGetPopUpButtonSelectedItem(panel->sizeP) * 8 + 24, "IconSize");
|
||||||
|
|
||||||
@@ -478,17 +459,8 @@ static void storeData(_Panel * panel)
|
|||||||
}
|
}
|
||||||
SetIntegerForKey(i, "MiniPreviewSize");
|
SetIntegerForKey(i, "MiniPreviewSize");
|
||||||
}
|
}
|
||||||
if (panel->have_legacy_apercu) {
|
|
||||||
RemoveObjectForKey("MiniwindowApercuBalloons");
|
|
||||||
RemoveObjectForKey("ApercuSize");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < wlengthof(icon_animation); i++) {
|
SetStringForKey(icon_animation[WMGetPopUpButtonSelectedItem(panel->animP)].db_value, "IconificationStyle");
|
||||||
if (WMGetButtonSelected(panel->animB[i])) {
|
|
||||||
SetStringForKey(icon_animation[i].db_value, "IconificationStyle");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Panel *InitIcons(WMWidget *parent)
|
Panel *InitIcons(WMWidget *parent)
|
||||||
|
|||||||
@@ -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,14 @@ 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") },
|
||||||
|
{ "KeepAtBottomKey",N_("Toggle window at bottom status") },
|
||||||
{ "OmnipresentKey", N_("Toggle window omnipresent status") },
|
{ "OmnipresentKey", N_("Toggle window omnipresent status") },
|
||||||
{ "RaiseKey", N_("Raise active window") },
|
{ "RaiseKey", N_("Raise active window") },
|
||||||
{ "LowerKey", N_("Lower active window") },
|
{ "LowerKey", N_("Lower active window") },
|
||||||
@@ -146,12 +149,20 @@ static const struct {
|
|||||||
{ "WindowShortcut9Key", N_("Shortcut for window 9") },
|
{ "WindowShortcut9Key", N_("Shortcut for window 9") },
|
||||||
{ "WindowShortcut10Key", N_("Shortcut for window 10") },
|
{ "WindowShortcut10Key", N_("Shortcut for window 10") },
|
||||||
|
|
||||||
|
/* Head Selection */
|
||||||
|
{ "MoveTo12to6Head", N_("Move to right/bottom/left/top head") },
|
||||||
|
{ "MoveTo6to12Head", N_("Move to left/top/right/bottom head") },
|
||||||
|
|
||||||
/* 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 */
|
||||||
@@ -310,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) {
|
||||||
@@ -362,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;
|
||||||
@@ -376,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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -493,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;
|
||||||
@@ -532,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));
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-4
@@ -4,15 +4,26 @@ AUTOMAKE_OPTIONS =
|
|||||||
|
|
||||||
wpexecbindir = @wprefs_bindir@
|
wpexecbindir = @wprefs_bindir@
|
||||||
|
|
||||||
wpexecbin_PROGRAMS = WPrefs
|
wpexecbin_PROGRAMS = WPrefs
|
||||||
|
|
||||||
wpdatadir = @wprefs_datadir@
|
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
|
||||||
|
|
||||||
|
|||||||
+81
-20
@@ -22,6 +22,7 @@
|
|||||||
#include "WPrefs.h"
|
#include "WPrefs.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <X11/keysym.h>
|
#include <X11/keysym.h>
|
||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
@@ -290,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]);
|
||||||
|
|
||||||
@@ -506,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/X11/WindowMaker/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";
|
||||||
@@ -517,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"));
|
||||||
@@ -613,12 +622,13 @@ static void createPanel(_Panel * p)
|
|||||||
WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->pathT);
|
WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->pathT);
|
||||||
|
|
||||||
label = WMCreateLabel(panel->pathF);
|
label = WMCreateLabel(panel->pathF);
|
||||||
WMResizeWidget(label, width - 20, 80);
|
WMResizeWidget(label, width - 20, 90);
|
||||||
WMMoveWidget(label, 10, 50);
|
WMMoveWidget(label, 10, 50);
|
||||||
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);
|
||||||
|
|
||||||
@@ -913,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);
|
||||||
@@ -925,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 == '|') {
|
||||||
@@ -1435,12 +1456,12 @@ static WEditMenu *buildSubmenu(_Panel * panel, WMPropList * pl)
|
|||||||
WSetEditMenuItemImage(item, panel->markerPix[data->type]);
|
WSetEditMenuItemImage(item, panel->markerPix[data->type]);
|
||||||
WSetEditMenuItemData(item, data, (WMCallback *) freeItemData);
|
WSetEditMenuItemData(item, data, (WMCallback *) freeItemData);
|
||||||
} else {
|
} else {
|
||||||
char *buf = wmalloc(1024);
|
char buf[256];
|
||||||
snprintf(buf, 1024, _("Invalid menu command \"%s\" with label \"%s\" cleared"),
|
|
||||||
|
snprintf(buf, sizeof(buf), _("Invalid menu command \"%s\" with label \"%s\" cleared"),
|
||||||
WMGetFromPLString(WMGetFromPLArray(pi, 1)),
|
WMGetFromPLString(WMGetFromPLArray(pi, 1)),
|
||||||
WMGetFromPLString(WMGetFromPLArray(pi, 0)));
|
WMGetFromPLString(WMGetFromPLArray(pi, 0)));
|
||||||
WMRunAlertPanel(scr, panel->parent, _("Warning"), buf, _("OK"), NULL, NULL);
|
WMRunAlertPanel(scr, panel->parent, _("Warning"), buf, _("OK"), NULL, NULL);
|
||||||
wfree(buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1481,18 +1502,53 @@ static WMPropList *getDefaultMenu(_Panel * panel)
|
|||||||
|
|
||||||
static void showData(_Panel * panel)
|
static void showData(_Panel * panel)
|
||||||
{
|
{
|
||||||
const char *gspath;
|
char *menuPath, *labelText;
|
||||||
char *menuPath;
|
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);
|
||||||
|
|
||||||
|
/* check if WMRootMenu references another file, and if so,
|
||||||
|
if that file is in proplist format */
|
||||||
|
while (WMIsPLString(pmenu)) {
|
||||||
|
char *path = NULL;
|
||||||
|
|
||||||
|
path = wexpandpath(WMGetFromPLString(pmenu));
|
||||||
|
|
||||||
|
if (access(path, F_OK) < 0) {
|
||||||
|
char *old_path = path;
|
||||||
|
|
||||||
|
path = wfindfile(DEF_CONFIG_PATHS, path);
|
||||||
|
wfree(old_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO: if needed, concatenate locale suffix to path.
|
||||||
|
See getLocalizedMenuFile() in src/rootmenu.c. */
|
||||||
|
|
||||||
|
if (!path)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (access(path, W_OK) < 0) {
|
||||||
|
snprintf(buf, sizeof(buf),
|
||||||
|
_("The menu file \"%s\" referenced by "
|
||||||
|
"WMRootMenu is read-only.\n"
|
||||||
|
"You cannot use WPrefs to modify it."),
|
||||||
|
path);
|
||||||
|
WMRunAlertPanel(WMWidgetScreen(panel->parent),
|
||||||
|
panel->parent,
|
||||||
|
_("Warning"), buf,
|
||||||
|
_("OK"), NULL, NULL);
|
||||||
|
panel->dontSave = True;
|
||||||
|
wfree(path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
pmenu = WMReadPropListFromFile(path);
|
||||||
|
menuPath = path;
|
||||||
|
}
|
||||||
|
|
||||||
if (!pmenu || !WMIsPLArray(pmenu)) {
|
if (!pmenu || !WMIsPLArray(pmenu)) {
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
@@ -1517,6 +1573,14 @@ static void showData(_Panel * panel)
|
|||||||
|
|
||||||
panel->menuPath = menuPath;
|
panel->menuPath = menuPath;
|
||||||
|
|
||||||
|
snprintf(buf, sizeof(buf),
|
||||||
|
_("\n\nWhen saved, the menu will be written to the file\n\"%s\"."),
|
||||||
|
menuPath);
|
||||||
|
labelText = WMGetLabelText(panel->sections[NoInfo][0]);
|
||||||
|
labelText = wstrconcat(labelText, buf);
|
||||||
|
WMSetLabelText(panel->sections[NoInfo][0], labelText);
|
||||||
|
wfree(labelText);
|
||||||
|
|
||||||
buildMenuFromPL(panel, pmenu);
|
buildMenuFromPL(panel, pmenu);
|
||||||
|
|
||||||
WMReleasePropList(pmenu);
|
WMReleasePropList(pmenu);
|
||||||
@@ -1557,15 +1621,12 @@ static WMPropList *processData(const char *title, ItemData * data)
|
|||||||
case ExecInfo:
|
case ExecInfo:
|
||||||
if (data->param.exec.command == NULL)
|
if (data->param.exec.command == NULL)
|
||||||
goto return_null;
|
goto return_null;
|
||||||
#if 1
|
|
||||||
if (strpbrk(data->param.exec.command, "&$*|><?`=;")) {
|
if (strpbrk(data->param.exec.command, "&$*|><?`=;")) {
|
||||||
s1 = "SHEXEC";
|
s1 = "SHEXEC";
|
||||||
} else {
|
} else {
|
||||||
s1 = "EXEC";
|
s1 = "EXEC";
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
s1 = "SHEXEC";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (notblank(data->param.exec.shortcut)) {
|
if (notblank(data->param.exec.shortcut)) {
|
||||||
WMAddToPLArray(item, pscut);
|
WMAddToPLArray(item, pscut);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
+16
-16
@@ -3,12 +3,12 @@
|
|||||||
==========
|
==========
|
||||||
|
|
||||||
The WindowMaker Prerefences Application
|
The WindowMaker Prerefences Application
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
user guide to be fully aware of all available options and other features
|
user guide to be fully aware of all available options and other features
|
||||||
@@ -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
|
||||||
@@ -26,7 +26,7 @@ option in the attributes panel for the WPrefs window. Of course, it will
|
|||||||
use some memory, but by leaving it hidden it'll probably be swapped out and
|
use some memory, but by leaving it hidden it'll probably be swapped out and
|
||||||
stay there until you unhide it.
|
stay there until you unhide it.
|
||||||
|
|
||||||
WPrefs is still under development. Some of the configuration options are
|
WPrefs is still under development. Some of the configuration options are
|
||||||
not yet configurable from WPrefs, notably the appearance related options.
|
not yet configurable from WPrefs, notably the appearance related options.
|
||||||
It might contain bugs that can corrupt your configuration files, so backup
|
It might contain bugs that can corrupt your configuration files, so backup
|
||||||
the contents of the ~/GNUstep/Defaults directory before using it.
|
the contents of the ~/GNUstep/Defaults directory before using it.
|
||||||
@@ -37,19 +37,19 @@ License
|
|||||||
-------
|
-------
|
||||||
|
|
||||||
Like Window Maker, WPrefs is distributed with through the General Public
|
Like Window Maker, WPrefs is distributed with through the General Public
|
||||||
License (as stated in the file COPYING).
|
License (as stated in the file COPYING).
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The mouse speed configuration is saved as a call for xset in
|
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
|
||||||
system-wide configuration file is saved.
|
system-wide configuration file is saved.
|
||||||
|
|
||||||
WPrefs only supports property list menus. If you have a plain text file
|
WPrefs only supports property list menus. If you have a plain text file
|
||||||
@@ -68,13 +68,13 @@ WPrefs will be built automatically and installed with the rest of WindowMaker.
|
|||||||
Customized Installation
|
Customized Installation
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
By default, WPrefs.app will be installed in the GNUstep applications directory,
|
By default, WPrefs.app will be installed in the GNUstep applications directory,
|
||||||
which is /usr/local/GNUstep/Applications. If you want to install it somewhere
|
which is /usr/local/GNUstep/Applications. If you want to install it somewhere
|
||||||
else, like in /some_weird_path/Applications, set the GNUSTEP_LOCAL_ROOT
|
else, like in /some_weird_path/Applications, set the GNUSTEP_LOCAL_ROOT
|
||||||
environment variable to some_weird_path before running configure for
|
environment variable to some_weird_path before running configure for
|
||||||
WindowMaker. You can also configure Window Maker supplying the --with-gnustepdir
|
WindowMaker. You can also configure Window Maker supplying the --with-gnustepdir
|
||||||
option to configure, like ./configure --with-gnustepdir=/usr/GNUstep/Applications
|
option to configure, like ./configure --with-gnustepdir=/usr/GNUstep/Applications
|
||||||
If you change your mind after installing, you can move the .app directory
|
If you change your mind after installing, you can move the .app directory
|
||||||
to one of the following GNUstep/Applications directories:
|
to one of the following GNUstep/Applications directories:
|
||||||
|
|
||||||
/usr/GNUstep/Applications
|
/usr/GNUstep/Applications
|
||||||
@@ -93,7 +93,7 @@ Credits
|
|||||||
-------
|
-------
|
||||||
|
|
||||||
User interface design, programming and a few icons:
|
User interface design, programming and a few icons:
|
||||||
Alfredo K. Kojima <kojima@windowmaker.info>
|
Alfredo K. Kojima <kojima@windowmaker.info>
|
||||||
|
|
||||||
Additional programming:
|
Additional programming:
|
||||||
James Thompson <jamest@math.ksu.edu>
|
James Thompson <jamest@math.ksu.edu>
|
||||||
@@ -108,7 +108,7 @@ Icon and image artwork:
|
|||||||
WindowMaker
|
WindowMaker
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
If for some weird reason you end up with this preferences program and
|
If for some weird reason you end up with this preferences program and
|
||||||
don't have Window Maker yet, you can get more information about it at
|
don't have Window Maker yet, you can get more information about it at
|
||||||
http://windowmaker.info and download it at ftp://ftp.windowmaker.info
|
http://windowmaker.info and download it at ftp://ftp.windowmaker.info
|
||||||
|
|
||||||
@@ -116,6 +116,6 @@ http://windowmaker.info and download it at ftp://ftp.windowmaker.info
|
|||||||
Contact
|
Contact
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Send comments and bug reports to kojima@windowmaker.info
|
Send comments and bug reports to kojima@windowmaker.info
|
||||||
Use the WindowMaker BUGFORM to report bugs.
|
Use the WindowMaker BUGFORM to report bugs.
|
||||||
|
|
||||||
|
|||||||
+81
-81
@@ -117,16 +117,21 @@ typedef struct _TexturePanel {
|
|||||||
|
|
||||||
} _TexturePanel;
|
} _TexturePanel;
|
||||||
|
|
||||||
#define TYPE_SOLID 0
|
enum {
|
||||||
#define TYPE_GRADIENT 1
|
TYPE_SOLID,
|
||||||
#define TYPE_SGRADIENT 2
|
TYPE_GRADIENT,
|
||||||
#define TYPE_TGRADIENT 3
|
TYPE_SGRADIENT,
|
||||||
#define TYPE_PIXMAP 4
|
TYPE_TGRADIENT,
|
||||||
|
TYPE_PIXMAP
|
||||||
|
};
|
||||||
|
|
||||||
#define PTYPE_TILE 0
|
enum {
|
||||||
#define PTYPE_SCALE 1
|
PTYPE_TILE,
|
||||||
#define PTYPE_CENTER 2
|
PTYPE_SCALE,
|
||||||
#define PTYPE_MAXIMIZE 3
|
PTYPE_CENTER,
|
||||||
|
PTYPE_MAXIMIZE,
|
||||||
|
PTYPE_FILL
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*--------------------------------------------------------------------------
|
*--------------------------------------------------------------------------
|
||||||
@@ -136,7 +141,7 @@ typedef struct _TexturePanel {
|
|||||||
|
|
||||||
/************/
|
/************/
|
||||||
|
|
||||||
static void updateGradButtons(TexturePanel * panel)
|
static void updateGradButtons(TexturePanel *panel)
|
||||||
{
|
{
|
||||||
RImage *image;
|
RImage *image;
|
||||||
WMPixmap *pixmap;
|
WMPixmap *pixmap;
|
||||||
@@ -180,7 +185,7 @@ static void updateGradButtons(TexturePanel * panel)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateTGradImage(TexturePanel * panel)
|
static void updateTGradImage(TexturePanel *panel)
|
||||||
{
|
{
|
||||||
RImage *image, *gradient;
|
RImage *image, *gradient;
|
||||||
WMPixmap *pixmap;
|
WMPixmap *pixmap;
|
||||||
@@ -201,19 +206,17 @@ static void updateTGradImage(TexturePanel * panel)
|
|||||||
to.green = WMGreenComponentOfColor(color) >> 8;
|
to.green = WMGreenComponentOfColor(color) >> 8;
|
||||||
to.blue = WMBlueComponentOfColor(color) >> 8;
|
to.blue = WMBlueComponentOfColor(color) >> 8;
|
||||||
|
|
||||||
if (panel->image->width < 141 || panel->image->height < 91) {
|
if (panel->image->width < 141 || panel->image->height < 91)
|
||||||
image = RMakeTiledImage(panel->image, 141, 91);
|
image = RMakeTiledImage(panel->image, 141, 91);
|
||||||
} else {
|
else
|
||||||
image = RCloneImage(panel->image);
|
image = RCloneImage(panel->image);
|
||||||
}
|
|
||||||
|
|
||||||
if (WMGetButtonSelected(panel->dirhB)) {
|
if (WMGetButtonSelected(panel->dirhB))
|
||||||
gradient = RRenderGradient(image->width, image->height, &from, &to, RHorizontalGradient);
|
gradient = RRenderGradient(image->width, image->height, &from, &to, RHorizontalGradient);
|
||||||
} else if (WMGetButtonSelected(panel->dirvB)) {
|
else if (WMGetButtonSelected(panel->dirvB))
|
||||||
gradient = RRenderGradient(image->width, image->height, &from, &to, RVerticalGradient);
|
gradient = RRenderGradient(image->width, image->height, &from, &to, RVerticalGradient);
|
||||||
} else {
|
else
|
||||||
gradient = RRenderGradient(image->width, image->height, &from, &to, RDiagonalGradient);
|
gradient = RRenderGradient(image->width, image->height, &from, &to, RDiagonalGradient);
|
||||||
}
|
|
||||||
|
|
||||||
RCombineImagesWithOpaqueness(image, gradient, WMGetSliderValue(panel->topaS));
|
RCombineImagesWithOpaqueness(image, gradient, WMGetSliderValue(panel->topaS));
|
||||||
RReleaseImage(gradient);
|
RReleaseImage(gradient);
|
||||||
@@ -225,7 +228,7 @@ static void updateTGradImage(TexturePanel * panel)
|
|||||||
RReleaseImage(image);
|
RReleaseImage(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateSGradButtons(TexturePanel * panel)
|
static void updateSGradButtons(TexturePanel *panel)
|
||||||
{
|
{
|
||||||
RImage *image;
|
RImage *image;
|
||||||
WMPixmap *pixmap;
|
WMPixmap *pixmap;
|
||||||
@@ -264,7 +267,7 @@ static void updateSGradButtons(TexturePanel * panel)
|
|||||||
|
|
||||||
/*********** Gradient ************/
|
/*********** Gradient ************/
|
||||||
|
|
||||||
static void updateSVSlider(WMSlider * sPtr, Bool saturation, WMFont * font, RHSVColor * hsv)
|
static void updateSVSlider(WMSlider *sPtr, Bool saturation, WMFont *font, RHSVColor *hsv)
|
||||||
{
|
{
|
||||||
RImage *image;
|
RImage *image;
|
||||||
WMPixmap *pixmap;
|
WMPixmap *pixmap;
|
||||||
@@ -312,7 +315,7 @@ static void updateSVSlider(WMSlider * sPtr, Bool saturation, WMFont * font, RHSV
|
|||||||
WMReleasePixmap(pixmap);
|
WMReleasePixmap(pixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateHueSlider(WMSlider * sPtr, WMFont * font, RHSVColor * hsv)
|
static void updateHueSlider(WMSlider *sPtr, WMFont *font, RHSVColor *hsv)
|
||||||
{
|
{
|
||||||
RColor *colors[8];
|
RColor *colors[8];
|
||||||
RImage *image;
|
RImage *image;
|
||||||
@@ -353,7 +356,7 @@ static void updateHueSlider(WMSlider * sPtr, WMFont * font, RHSVColor * hsv)
|
|||||||
wfree(colors[i]);
|
wfree(colors[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sliderChangeCallback(WMWidget * w, void *data)
|
static void sliderChangeCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
RHSVColor hsv;
|
RHSVColor hsv;
|
||||||
@@ -417,9 +420,8 @@ static void sliderChangeCallback(WMWidget * w, void *data)
|
|||||||
}
|
}
|
||||||
colors[i] = NULL;
|
colors[i] = NULL;
|
||||||
|
|
||||||
if (panel->gimage != None) {
|
if (panel->gimage != None)
|
||||||
XFreePixmap(WMScreenDisplay(scr), panel->gimage);
|
XFreePixmap(WMScreenDisplay(scr), panel->gimage);
|
||||||
}
|
|
||||||
|
|
||||||
image = RRenderMultiGradient(30, i * WMGetListItemHeight(panel->gcolL), colors, RVerticalGradient);
|
image = RRenderMultiGradient(30, i * WMGetListItemHeight(panel->gcolL), colors, RVerticalGradient);
|
||||||
RConvertImage(WMScreenRContext(scr), image, &panel->gimage);
|
RConvertImage(WMScreenRContext(scr), image, &panel->gimage);
|
||||||
@@ -432,7 +434,7 @@ static void sliderChangeCallback(WMWidget * w, void *data)
|
|||||||
updateGradButtons(panel);
|
updateGradButtons(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void paintGradListItem(WMList * lPtr, int index, Drawable d, char *text, int state, WMRect * rect)
|
static void paintGradListItem(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) WMGetHangedData(lPtr);
|
TexturePanel *panel = (TexturePanel *) WMGetHangedData(lPtr);
|
||||||
WMScreen *scr = WMWidgetScreen(lPtr);
|
WMScreen *scr = WMWidgetScreen(lPtr);
|
||||||
@@ -465,7 +467,7 @@ static void paintGradListItem(WMList * lPtr, int index, Drawable d, char *text,
|
|||||||
WMReleaseColor(gray);
|
WMReleaseColor(gray);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gradAddCallback(WMWidget * w, void *data)
|
static void gradAddCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
WMListItem *item;
|
WMListItem *item;
|
||||||
@@ -489,7 +491,7 @@ static void gradAddCallback(WMWidget * w, void *data)
|
|||||||
WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL) > 1);
|
WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL) > 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gradClickCallback(WMWidget * w, void *data)
|
static void gradClickCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
WMListItem *item;
|
WMListItem *item;
|
||||||
@@ -511,7 +513,7 @@ static void gradClickCallback(WMWidget * w, void *data)
|
|||||||
sliderChangeCallback(panel->gsatS, panel);
|
sliderChangeCallback(panel->gsatS, panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gradDeleteCallback(WMWidget * w, void *data)
|
static void gradDeleteCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
WMListItem *item;
|
WMListItem *item;
|
||||||
@@ -545,7 +547,7 @@ static void gradDeleteCallback(WMWidget * w, void *data)
|
|||||||
|
|
||||||
/*************** Simple Gradient ***************/
|
/*************** Simple Gradient ***************/
|
||||||
|
|
||||||
static void colorWellObserver(void *self, WMNotification * n)
|
static void colorWellObserver(void *self, WMNotification *n)
|
||||||
{
|
{
|
||||||
/* Parameter not used, but tell the compiler that it is ok */
|
/* Parameter not used, but tell the compiler that it is ok */
|
||||||
(void) n;
|
(void) n;
|
||||||
@@ -553,7 +555,7 @@ static void colorWellObserver(void *self, WMNotification * n)
|
|||||||
updateSGradButtons(self);
|
updateSGradButtons(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void opaqChangeCallback(WMWidget * w, void *data)
|
static void opaqChangeCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
|
|
||||||
@@ -565,7 +567,7 @@ static void opaqChangeCallback(WMWidget * w, void *data)
|
|||||||
|
|
||||||
/****************** Image ******************/
|
/****************** Image ******************/
|
||||||
|
|
||||||
static void updateImage(TexturePanel * panel, const char *path)
|
static void updateImage(TexturePanel *panel, const char *path)
|
||||||
{
|
{
|
||||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||||
RImage *image;
|
RImage *image;
|
||||||
@@ -613,12 +615,12 @@ static void updateImage(TexturePanel * panel, const char *path)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void browseImageCallback(WMWidget * w, void *data)
|
static void browseImageCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
WMOpenPanel *opanel;
|
WMOpenPanel *opanel;
|
||||||
WMScreen *scr = WMWidgetScreen(w);
|
WMScreen *scr = WMWidgetScreen(w);
|
||||||
static char *ipath = NULL;
|
static char *ipath;
|
||||||
|
|
||||||
opanel = WMGetOpenPanel(scr);
|
opanel = WMGetOpenPanel(scr);
|
||||||
WMSetFilePanelCanChooseDirectories(opanel, False);
|
WMSetFilePanelCanChooseDirectories(opanel, False);
|
||||||
@@ -670,25 +672,24 @@ static void browseImageCallback(WMWidget * w, void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void buttonCallback(WMWidget * w, void *data)
|
static void buttonCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
|
|
||||||
if (w == panel->okB) {
|
if (w == panel->okB)
|
||||||
(*panel->okAction) (panel->okData);
|
(*panel->okAction) (panel->okData);
|
||||||
} else {
|
else
|
||||||
(*panel->cancelAction) (panel->cancelData);
|
(*panel->cancelAction) (panel->cancelData);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void changeTypeCallback(WMWidget * w, void *data)
|
static void changeTypeCallback(WMWidget *w, void *data)
|
||||||
{
|
{
|
||||||
TexturePanel *panel = (TexturePanel *) data;
|
TexturePanel *panel = (TexturePanel *) data;
|
||||||
int newType;
|
int newType;
|
||||||
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) {
|
||||||
@@ -731,7 +732,7 @@ static void changeTypeCallback(WMWidget * w, void *data)
|
|||||||
* Public functions
|
* Public functions
|
||||||
*--------------------------------------------------------------------------
|
*--------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
void ShowTexturePanel(TexturePanel * panel)
|
void ShowTexturePanel(TexturePanel *panel)
|
||||||
{
|
{
|
||||||
Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->win));
|
Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->win));
|
||||||
Screen *scr = DefaultScreenOfDisplay(dpy);
|
Screen *scr = DefaultScreenOfDisplay(dpy);
|
||||||
@@ -742,24 +743,24 @@ void ShowTexturePanel(TexturePanel * panel)
|
|||||||
WMMapWidget(panel->win);
|
WMMapWidget(panel->win);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HideTexturePanel(TexturePanel * panel)
|
void HideTexturePanel(TexturePanel *panel)
|
||||||
{
|
{
|
||||||
WMUnmapWidget(panel->win);
|
WMUnmapWidget(panel->win);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetTexturePanelOkAction(TexturePanel * panel, WMCallback * action, void *clientData)
|
void SetTexturePanelOkAction(TexturePanel *panel, WMCallback *action, void *clientData)
|
||||||
{
|
{
|
||||||
panel->okAction = action;
|
panel->okAction = action;
|
||||||
panel->okData = clientData;
|
panel->okData = clientData;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetTexturePanelCancelAction(TexturePanel * panel, WMCallback * action, void *clientData)
|
void SetTexturePanelCancelAction(TexturePanel *panel, WMCallback *action, void *clientData)
|
||||||
{
|
{
|
||||||
panel->cancelAction = action;
|
panel->cancelAction = action;
|
||||||
panel->cancelData = clientData;
|
panel->cancelData = clientData;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList * texture)
|
void SetTexturePanelTexture(TexturePanel *panel, const char *name, WMPropList *texture)
|
||||||
{
|
{
|
||||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||||
char *str, *type;
|
char *str, *type;
|
||||||
@@ -775,9 +776,8 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, 0);
|
p = WMGetFromPLArray(texture, 0);
|
||||||
if (!p) {
|
if (!p)
|
||||||
goto bad_texture;
|
goto bad_texture;
|
||||||
}
|
|
||||||
type = WMGetFromPLString(p);
|
type = WMGetFromPLString(p);
|
||||||
|
|
||||||
/*............................................... */
|
/*............................................... */
|
||||||
@@ -786,11 +786,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SOLID);
|
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SOLID);
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, 1);
|
p = WMGetFromPLArray(texture, 1);
|
||||||
if (!p) {
|
if (!p)
|
||||||
str = "black";
|
str = "black";
|
||||||
} else {
|
else
|
||||||
str = WMGetFromPLString(p);
|
str = WMGetFromPLString(p);
|
||||||
}
|
|
||||||
color = WMCreateNamedColor(scr, str, False);
|
color = WMCreateNamedColor(scr, str, False);
|
||||||
|
|
||||||
WMSetColorWellColor(panel->defcW, color);
|
WMSetColorWellColor(panel->defcW, color);
|
||||||
@@ -803,11 +802,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SGRADIENT);
|
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SGRADIENT);
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, 1);
|
p = WMGetFromPLArray(texture, 1);
|
||||||
if (!p) {
|
if (!p)
|
||||||
str = "black";
|
str = "black";
|
||||||
} else {
|
else
|
||||||
str = WMGetFromPLString(p);
|
str = WMGetFromPLString(p);
|
||||||
}
|
|
||||||
color = WMCreateNamedColor(scr, str, False);
|
color = WMCreateNamedColor(scr, str, False);
|
||||||
|
|
||||||
WMSetColorWellColor(panel->tcol1W, color);
|
WMSetColorWellColor(panel->tcol1W, color);
|
||||||
@@ -815,11 +813,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
WMReleaseColor(color);
|
WMReleaseColor(color);
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, 2);
|
p = WMGetFromPLArray(texture, 2);
|
||||||
if (!p) {
|
if (!p)
|
||||||
str = "black";
|
str = "black";
|
||||||
} else {
|
else
|
||||||
str = WMGetFromPLString(p);
|
str = WMGetFromPLString(p);
|
||||||
}
|
|
||||||
color = WMCreateNamedColor(scr, str, False);
|
color = WMCreateNamedColor(scr, str, False);
|
||||||
|
|
||||||
WMSetColorWellColor(panel->tcol2W, color);
|
WMSetColorWellColor(panel->tcol2W, color);
|
||||||
@@ -846,11 +843,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
WMSetSliderValue(panel->topaS, i);
|
WMSetSliderValue(panel->topaS, i);
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, 3);
|
p = WMGetFromPLArray(texture, 3);
|
||||||
if (!p) {
|
if (!p)
|
||||||
str = "black";
|
str = "black";
|
||||||
} else {
|
else
|
||||||
str = WMGetFromPLString(p);
|
str = WMGetFromPLString(p);
|
||||||
}
|
|
||||||
color = WMCreateNamedColor(scr, str, False);
|
color = WMCreateNamedColor(scr, str, False);
|
||||||
|
|
||||||
WMSetColorWellColor(panel->tcol1W, color);
|
WMSetColorWellColor(panel->tcol1W, color);
|
||||||
@@ -858,11 +854,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
WMReleaseColor(color);
|
WMReleaseColor(color);
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, 4);
|
p = WMGetFromPLArray(texture, 4);
|
||||||
if (!p) {
|
if (!p)
|
||||||
str = "black";
|
str = "black";
|
||||||
} else {
|
else
|
||||||
str = WMGetFromPLString(p);
|
str = WMGetFromPLString(p);
|
||||||
}
|
|
||||||
color = WMCreateNamedColor(scr, str, False);
|
color = WMCreateNamedColor(scr, str, False);
|
||||||
|
|
||||||
WMSetColorWellColor(panel->tcol2W, color);
|
WMSetColorWellColor(panel->tcol2W, color);
|
||||||
@@ -873,9 +868,9 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
|
|
||||||
if (panel->imageFile)
|
if (panel->imageFile)
|
||||||
wfree(panel->imageFile);
|
wfree(panel->imageFile);
|
||||||
if ((panel->imageFile = wfindfileinarray(panel->pathList,
|
panel->imageFile = wfindfileinarray(panel->pathList,
|
||||||
WMGetFromPLString(WMGetFromPLArray(texture, 1)))) !=
|
WMGetFromPLString(WMGetFromPLArray(texture, 1)));
|
||||||
NULL) {
|
if (panel->imageFile != NULL) {
|
||||||
|
|
||||||
panel->image = RLoadImage(WMScreenRContext(scr), panel->imageFile, 0);
|
panel->image = RLoadImage(WMScreenRContext(scr), panel->imageFile, 0);
|
||||||
updateTGradImage(panel);
|
updateTGradImage(panel);
|
||||||
@@ -899,11 +894,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_GRADIENT);
|
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_GRADIENT);
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, 1);
|
p = WMGetFromPLArray(texture, 1);
|
||||||
if (!p) {
|
if (!p)
|
||||||
str = "black";
|
str = "black";
|
||||||
} else {
|
else
|
||||||
str = WMGetFromPLString(p);
|
str = WMGetFromPLString(p);
|
||||||
}
|
|
||||||
color = WMCreateNamedColor(scr, str, False);
|
color = WMCreateNamedColor(scr, str, False);
|
||||||
|
|
||||||
WMSetColorWellColor(panel->defcW, color);
|
WMSetColorWellColor(panel->defcW, color);
|
||||||
@@ -915,11 +909,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
XColor xcolor;
|
XColor xcolor;
|
||||||
|
|
||||||
p = WMGetFromPLArray(texture, i);
|
p = WMGetFromPLArray(texture, i);
|
||||||
if (!p) {
|
if (!p)
|
||||||
str = "black";
|
str = "black";
|
||||||
} else {
|
else
|
||||||
str = WMGetFromPLString(p);
|
str = WMGetFromPLString(p);
|
||||||
}
|
|
||||||
|
|
||||||
XParseColor(WMScreenDisplay(scr), WMScreenRContext(scr)->cmap, str, &xcolor);
|
XParseColor(WMScreenDisplay(scr), WMScreenRContext(scr)->cmap, str, &xcolor);
|
||||||
|
|
||||||
@@ -953,6 +946,9 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
case 'M':
|
case 'M':
|
||||||
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_MAXIMIZE);
|
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_MAXIMIZE);
|
||||||
break;
|
break;
|
||||||
|
case 'F':
|
||||||
|
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_FILL);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
case 'T':
|
case 'T':
|
||||||
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_TILE);
|
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_TILE);
|
||||||
@@ -1001,13 +997,13 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *GetTexturePanelTextureName(TexturePanel * panel)
|
char *GetTexturePanelTextureName(TexturePanel *panel)
|
||||||
{
|
{
|
||||||
return WMGetTextFieldText(panel->nameT);
|
return WMGetTextFieldText(panel->nameT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WMPropList *GetTexturePanelTexture(TexturePanel * panel)
|
WMPropList *GetTexturePanelTexture(TexturePanel *panel)
|
||||||
{
|
{
|
||||||
WMPropList *prop = NULL;
|
WMPropList *prop = NULL;
|
||||||
WMColor *color;
|
WMColor *color;
|
||||||
@@ -1038,6 +1034,10 @@ WMPropList *GetTexturePanelTexture(TexturePanel * panel)
|
|||||||
prop = WMCreatePLArray(WMCreatePLString("mpixmap"),
|
prop = WMCreatePLArray(WMCreatePLString("mpixmap"),
|
||||||
WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL);
|
WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL);
|
||||||
break;
|
break;
|
||||||
|
case PTYPE_FILL:
|
||||||
|
prop = WMCreatePLArray(WMCreatePLString("fpixmap"),
|
||||||
|
WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL);
|
||||||
|
break;
|
||||||
case PTYPE_CENTER:
|
case PTYPE_CENTER:
|
||||||
prop = WMCreatePLArray(WMCreatePLString("cpixmap"),
|
prop = WMCreatePLArray(WMCreatePLString("cpixmap"),
|
||||||
WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL);
|
WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL);
|
||||||
@@ -1104,13 +1104,12 @@ WMPropList *GetTexturePanelTexture(TexturePanel * panel)
|
|||||||
color = WMGetColorWellColor(panel->defcW);
|
color = WMGetColorWellColor(panel->defcW);
|
||||||
str = WMGetColorRGBDescription(color);
|
str = WMGetColorRGBDescription(color);
|
||||||
|
|
||||||
if (WMGetButtonSelected(panel->dirdB)) {
|
if (WMGetButtonSelected(panel->dirdB))
|
||||||
prop = WMCreatePLArray(WMCreatePLString("mdgradient"), WMCreatePLString(str), NULL);
|
prop = WMCreatePLArray(WMCreatePLString("mdgradient"), WMCreatePLString(str), NULL);
|
||||||
} else if (WMGetButtonSelected(panel->dirvB)) {
|
else if (WMGetButtonSelected(panel->dirvB))
|
||||||
prop = WMCreatePLArray(WMCreatePLString("mvgradient"), WMCreatePLString(str), NULL);
|
prop = WMCreatePLArray(WMCreatePLString("mvgradient"), WMCreatePLString(str), NULL);
|
||||||
} else {
|
else
|
||||||
prop = WMCreatePLArray(WMCreatePLString("mhgradient"), WMCreatePLString(str), NULL);
|
prop = WMCreatePLArray(WMCreatePLString("mhgradient"), WMCreatePLString(str), NULL);
|
||||||
}
|
|
||||||
wfree(str);
|
wfree(str);
|
||||||
|
|
||||||
for (i = 0; i < WMGetListNumberOfRows(panel->gcolL); i++) {
|
for (i = 0; i < WMGetListNumberOfRows(panel->gcolL); i++) {
|
||||||
@@ -1131,12 +1130,12 @@ WMPropList *GetTexturePanelTexture(TexturePanel * panel)
|
|||||||
return prop;
|
return prop;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetTexturePanelPixmapPath(TexturePanel * panel, WMPropList * array)
|
void SetTexturePanelPixmapPath(TexturePanel *panel, WMPropList *array)
|
||||||
{
|
{
|
||||||
panel->pathList = array;
|
panel->pathList = array;
|
||||||
}
|
}
|
||||||
|
|
||||||
TexturePanel *CreateTexturePanel(WMWindow * keyWindow)
|
TexturePanel *CreateTexturePanel(WMWindow *keyWindow)
|
||||||
/*CreateTexturePanel(WMScreen *scr)*/
|
/*CreateTexturePanel(WMScreen *scr)*/
|
||||||
{
|
{
|
||||||
TexturePanel *panel;
|
TexturePanel *panel;
|
||||||
@@ -1407,6 +1406,7 @@ TexturePanel *CreateTexturePanel(WMWindow * keyWindow)
|
|||||||
WMAddPopUpButtonItem(panel->arrP, _("Scale"));
|
WMAddPopUpButtonItem(panel->arrP, _("Scale"));
|
||||||
WMAddPopUpButtonItem(panel->arrP, _("Center"));
|
WMAddPopUpButtonItem(panel->arrP, _("Center"));
|
||||||
WMAddPopUpButtonItem(panel->arrP, _("Maximize"));
|
WMAddPopUpButtonItem(panel->arrP, _("Maximize"));
|
||||||
|
WMAddPopUpButtonItem(panel->arrP, _("Fill"));
|
||||||
WMSetPopUpButtonSelectedItem(panel->arrP, 0);
|
WMSetPopUpButtonSelectedItem(panel->arrP, 0);
|
||||||
|
|
||||||
WMMapSubwidgets(panel->imageF);
|
WMMapSubwidgets(panel->imageF);
|
||||||
@@ -1475,7 +1475,7 @@ TexturePanel *CreateTexturePanel(WMWindow * keyWindow)
|
|||||||
|
|
||||||
char *ProgName = "test";
|
char *ProgName = "test";
|
||||||
|
|
||||||
void testOKButton(WMWidget * self, void *data)
|
void testOKButton(WMWidget *self, void *data)
|
||||||
{
|
{
|
||||||
char *test;
|
char *test;
|
||||||
Display *dpy;
|
Display *dpy;
|
||||||
@@ -1504,13 +1504,13 @@ void testOKButton(WMWidget * self, void *data)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void testCancelButton(WMWidget * self, void *data)
|
void testCancelButton(WMWidget *self, void *data)
|
||||||
{
|
{
|
||||||
wwarning("Exiting test....");
|
wwarning("Exiting test....");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wAbort()
|
void wAbort(void)
|
||||||
{
|
{
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -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);
|
||||||
@@ -602,7 +603,7 @@ static void loadConfigurations(WMScreen * scr, WMWindow * mainw)
|
|||||||
char *path;
|
char *path;
|
||||||
FILE *file;
|
FILE *file;
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
char mbuf[1024];
|
char mbuf[1069]; /* Size of buffer and extra characters for the sprintfs */
|
||||||
int v1, v2, v3;
|
int v1, v2, v3;
|
||||||
|
|
||||||
path = wdefaultspathfordomain("WindowMaker");
|
path = wdefaultspathfordomain("WindowMaker");
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -66,19 +64,6 @@ static void print_help(const char *progname)
|
|||||||
puts(_(" --help print this message and exit"));
|
puts(_(" --help print this message and exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static RETSIGTYPE handleDeadChild(int sig)
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
pid = waitpid(-1, &status, WNOHANG);
|
|
||||||
if (pid > 0) {
|
|
||||||
DeadChildren[DeadChildrenCount++] = pid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void AddDeadChildHandler(pid_t pid, void (*handler) (void *), void *data)
|
void AddDeadChildHandler(pid_t pid, void (*handler) (void *), void *data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -164,17 +149,12 @@ int main(int argc, char **argv)
|
|||||||
wfatal(_("could not open display %s"), XDisplayName(display_name));
|
wfatal(_("could not open display %s"), XDisplayName(display_name));
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
XSynchronize(dpy, 1);
|
|
||||||
#endif
|
|
||||||
scr = WMCreateScreen(dpy, DefaultScreen(dpy));
|
scr = WMCreateScreen(dpy, DefaultScreen(dpy));
|
||||||
if (!scr) {
|
if (!scr) {
|
||||||
wfatal(_("could not initialize application"));
|
wfatal(_("could not initialize application"));
|
||||||
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 \
|
||||||
@@ -37,7 +38,7 @@ POTFILES = \
|
|||||||
|
|
||||||
SUFFIXES = .po .mo
|
SUFFIXES = .po .mo
|
||||||
|
|
||||||
.po.mo:
|
.po.mo:
|
||||||
$(AM_V_GEN)$(MSGFMT) -c -o $@ $<
|
$(AM_V_GEN)$(MSGFMT) -c -o $@ $<
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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 ""
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# French Message file for WPrefs.app
|
# French Message file for WPrefs.app
|
||||||
#
|
#
|
||||||
# Update History:
|
# Update History:
|
||||||
# Antoine Hulin <antoine.hulin@origan.fdn.org>
|
# Antoine Hulin <antoine.hulin@origan.fdn.org>
|
||||||
|
|||||||
+411
-443
File diff suppressed because it is too large
Load Diff
+26
-26
@@ -1168,88 +1168,88 @@ msgid "could not initialize application"
|
|||||||
msgstr "ne mogu inicijalizirati aplikaciju"
|
msgstr "ne mogu inicijalizirati aplikaciju"
|
||||||
# msgid "could not extract version information from WindowMaker"
|
# msgid "could not extract version information from WindowMaker"
|
||||||
# msgstr "ne mogu izvuči informaciju o verziji WindowMaker-a"
|
# msgstr "ne mogu izvuči informaciju o verziji WindowMaker-a"
|
||||||
#
|
#
|
||||||
# msgid "Could not load WindowMaker domain (%s) from defaults database."
|
# msgid "Could not load WindowMaker domain (%s) from defaults database."
|
||||||
# msgstr "Ne mogu učitati WindowMaker domenu (%s) iz početne baze."
|
# msgstr "Ne mogu učitati WindowMaker domenu (%s) iz početne baze."
|
||||||
#
|
#
|
||||||
# msgid "Version %s for WindowMaker %s"
|
# msgid "Version %s for WindowMaker %s"
|
||||||
# msgstr "Verzija %s za WindowMaker %s"
|
# msgstr "Verzija %s za WindowMaker %s"
|
||||||
#
|
#
|
||||||
# msgid "Could not extract version from WindowMaker. Make sure it is correctly installed."
|
# msgid "Could not extract version from WindowMaker. Make sure it is correctly installed."
|
||||||
# msgstr "Ne mogu izvuči verziju WindowMakera. Provjerite da je ispravno instaliran."
|
# msgstr "Ne mogu izvuči verziju WindowMakera. Provjerite da je ispravno instaliran."
|
||||||
#
|
#
|
||||||
# msgid ""
|
# msgid ""
|
||||||
# "Programming/Design: Alfredo K. Kojima\n"
|
# "Programming/Design: Alfredo K. Kojima\n"
|
||||||
# "Artwork: Marco van Hylckama Vlieg"
|
# "Artwork: Marco van Hylckama Vlieg"
|
||||||
# msgstr ""
|
# msgstr ""
|
||||||
# "Programiranje/Dizajn: Alfredo K. Kojima\n"
|
# "Programiranje/Dizajn: Alfredo K. Kojima\n"
|
||||||
# "Artwork: Marco van Hylckama Vlieg"
|
# "Artwork: Marco van Hylckama Vlieg"
|
||||||
#
|
#
|
||||||
# msgid "WindowMaker domain (%s) is corrupted!"
|
# msgid "WindowMaker domain (%s) is corrupted!"
|
||||||
# msgstr "WindowMaker domena (%s) je oštećena!"
|
# msgstr "WindowMaker domena (%s) je oštećena!"
|
||||||
#
|
#
|
||||||
# msgid "WindowMaker %i.%i.%i, which is installed in your system, is not fully supported by this version of WPrefs."
|
# msgid "WindowMaker %i.%i.%i, which is installed in your system, is not fully supported by this version of WPrefs."
|
||||||
# msgstr "WindowMaker %i.%i.%i, koji je instaliran na vašem sistemu, nije potpuno podržan ovom verzijom WPrefs-a."
|
# msgstr "WindowMaker %i.%i.%i, koji je instaliran na vašem sistemu, nije potpuno podržan ovom verzijom WPrefs-a."
|
||||||
#
|
#
|
||||||
# msgid "WindowMaker Preferences"
|
# msgid "WindowMaker Preferences"
|
||||||
# msgstr "Postavke WindowMaker-a"
|
# msgstr "Postavke WindowMaker-a"
|
||||||
#
|
#
|
||||||
# msgid "Make sure WindowMaker is in your search path."
|
# msgid "Make sure WindowMaker is in your search path."
|
||||||
# msgstr "Provjerite da je WindowMaker u vašoj search stazi."
|
# msgstr "Provjerite da je WindowMaker u vašoj search stazi."
|
||||||
#
|
#
|
||||||
# msgid "...do not resize over dock"
|
# msgid "...do not resize over dock"
|
||||||
# msgstr "ne pokrivati dock"
|
# msgstr "ne pokrivati dock"
|
||||||
#
|
#
|
||||||
# msgid ""
|
# msgid ""
|
||||||
# "WPrefs only supports WindowMaker 0.18.0 or newer.\n"
|
# "WPrefs only supports WindowMaker 0.18.0 or newer.\n"
|
||||||
# "The version installed is %i.%i.%i\n"
|
# "The version installed is %i.%i.%i\n"
|
||||||
# msgstr ""
|
# msgstr ""
|
||||||
# "WPrefs podržava samo WindowMaker 0.18.0 ili noviji.\n"
|
# "WPrefs podržava samo WindowMaker 0.18.0 ili noviji.\n"
|
||||||
# "Instalirana je verzija %i.%i.%i\n"
|
# "Instalirana je verzija %i.%i.%i\n"
|
||||||
#
|
#
|
||||||
# msgid "Could not load global WindowMaker domain (%s)."
|
# msgid "Could not load global WindowMaker domain (%s)."
|
||||||
# msgstr "Ne mogu učitati globlanu WindowMaker domenu (%s)."
|
# msgstr "Ne mogu učitati globlanu WindowMaker domenu (%s)."
|
||||||
#
|
#
|
||||||
# msgid "Loading WindowMaker configuration files..."
|
# msgid "Loading WindowMaker configuration files..."
|
||||||
# msgstr "Učitavam WindowMaker konfiguracijske datoteke..."
|
# msgstr "Učitavam WindowMaker konfiguracijske datoteke..."
|
||||||
#
|
#
|
||||||
# msgid "Aplications Menu Definition"
|
# msgid "Aplications Menu Definition"
|
||||||
# msgstr "Definiranje izbornika Aplikacije"
|
# msgstr "Definiranje izbornika Aplikacije"
|
||||||
#
|
#
|
||||||
# msgid "The command supplied must generate and output a valid menu definition to stdout. This definition should be in the plain text menu file format, described in the menu files included with WindowMaker, probably at ~/GNUstep/Library/WindowMaker/menu"
|
# msgid "The command supplied must generate and output a valid menu definition to stdout. This definition should be in the plain text menu file format, described in the menu files included with WindowMaker, probably at ~/GNUstep/Library/WindowMaker/menu"
|
||||||
# msgstr "Ponuđena naredba mora generirati i ispisati važeću definicuju izbornika na stdout. Ova bi definicja trebala biti u čistom tekst menu formatu koji je opisan u menu datotekama iz distribucije, vjerojatno u ~/GNUstep/Library/WindowMaker/menu"
|
# msgstr "Ponuđena naredba mora generirati i ispisati važeću definicuju izbornika na stdout. Ova bi definicja trebala biti u čistom tekst menu formatu koji je opisan u menu datotekama iz distribucije, vjerojatno u ~/GNUstep/Library/WindowMaker/menu"
|
||||||
#
|
#
|
||||||
# msgid ""
|
# msgid ""
|
||||||
# "bad speed value for option %s.\n"
|
# "bad speed value for option %s.\n"
|
||||||
# "Using default Medium"
|
# "Using default Medium"
|
||||||
# msgstr ""
|
# msgstr ""
|
||||||
# "kriva vrijednost za brzinu za opciju %s.\n"
|
# "kriva vrijednost za brzinu za opciju %s.\n"
|
||||||
# "Koristm Medium"
|
# "Koristm Medium"
|
||||||
#
|
#
|
||||||
# msgid "The format of the current menu file (%s) is not supported by WPrefs. A new menu will be created."
|
# msgid "The format of the current menu file (%s) is not supported by WPrefs. A new menu will be created."
|
||||||
# msgstr "Format trenutne datoteke izbornika (%s) nije podržan od strane WPrefs-a. Kreirat ću novi izbornik."
|
# msgstr "Format trenutne datoteke izbornika (%s) nije podržan od strane WPrefs-a. Kreirat ću novi izbornik."
|
||||||
#
|
#
|
||||||
# msgid "Omnipresent miniwindows"
|
# msgid "Omnipresent miniwindows"
|
||||||
# msgstr "SvugdjePrisutni mini prozori"
|
# msgstr "SvugdjePrisutni mini prozori"
|
||||||
#
|
#
|
||||||
# msgid "Error extracting version from WindowMaker. Make sure it is correctly installed."
|
# msgid "Error extracting version from WindowMaker. Make sure it is correctly installed."
|
||||||
# msgstr "Greška pri izvlačenju verzije WindowMakera. Provjerite da je ispravno instaliran."
|
# msgstr "Greška pri izvlačenju verzije WindowMakera. Provjerite da je ispravno instaliran."
|
||||||
#
|
#
|
||||||
# msgid "Auto-arrange icons"
|
# msgid "Auto-arrange icons"
|
||||||
# msgstr "Auto-pospremanje ikona"
|
# msgstr "Auto-pospremanje ikona"
|
||||||
#
|
#
|
||||||
# msgid "Open submenus to the left if they don't fit inside the screen."
|
# msgid "Open submenus to the left if they don't fit inside the screen."
|
||||||
# msgstr "Otvoriti podizbornike na lijevo ako ne stanu unutar ekrana."
|
# msgstr "Otvoriti podizbornike na lijevo ako ne stanu unutar ekrana."
|
||||||
#
|
#
|
||||||
# msgid "Use SaveUnders in icons, menus and other objects"
|
# msgid "Use SaveUnders in icons, menus and other objects"
|
||||||
# msgstr "Koristi SnimiIspod u ikonama, izbornicima i drugim objektima"
|
# msgstr "Koristi SnimiIspod u ikonama, izbornicima i drugim objektima"
|
||||||
#
|
#
|
||||||
# msgid "Type the path for the directory. You can type more than one path by separating them with spaces."
|
# msgid "Type the path for the directory. You can type more than one path by separating them with spaces."
|
||||||
# msgstr "Upišite stazu za direktorij. Možete upisati više od jedne staze odvajajući ih razmacima."
|
# msgstr "Upišite stazu za direktorij. Možete upisati više od jedne staze odvajajući ih razmacima."
|
||||||
#
|
#
|
||||||
# msgid "invalid data in option WindowPlacementOrigin. Using default (0,0)"
|
# msgid "invalid data in option WindowPlacementOrigin. Using default (0,0)"
|
||||||
# msgstr "krivi podaci u opciji WindowPlacementOrigin. Koristim (0,0)"
|
# msgstr "krivi podaci u opciji WindowPlacementOrigin. Koristim (0,0)"
|
||||||
#
|
#
|
||||||
# msgid "Icon Size"
|
# msgid "Icon Size"
|
||||||
# msgstr "Veličina ikone"
|
# msgstr "Veličina ikone"
|
||||||
#
|
#
|
||||||
|
|||||||
+296
-330
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user