-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChangeLog
862 lines (765 loc) · 50.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
0.1.3:
no longer use A_NONE as null pointer equivalent (shouldn't make a difference unless your platform doesn't use ((void *)0) as NULL, which is unlikely)
0.1.2:
take into account the action with NET_WM_STATE messages for NET_WM_STATE_ABOVE and NET_WM_STATE_BELOW
added comment about why we focus NULL on FocusOut events in events.c
initialize screen member of clients propperly, fixes potential segfaulting when a window is initially maximized/fullscreen
fixed filtering ConfigureNotify events for debugging output (would catch a lot of events it schouldn't catch)
send extra ConfigureNotify when updating size (jedit needs this)
corrected debugging message for FocusIn events on root windows
respect ICCCM input hints
added support for WM_TAKE_FOCUS protocol - fixes focussing jedit and probally a lot of other (java and perhaps non-java) applications
check if the pointer just dropped into another window on client_focus_first
ignore FocusIn on root window - FocusOut with NotifyAncestor detail will do instead
**pre1 release
return instead of break on receiving MapNotify
use X11 client messages instead of pipe
updated manual about lesser required system calls + small correction
di no longer only declared it when USE_SHAPE is defined, we use it too otherwise
added --cflags --ldflags --libs and --force-* flags to configure script so you can specify compiler and linker flags manually
print the names of libraries the way they are passed to pkg-config in configure script
moved unset stuff down in configurescript for better structure
don't print usage on invalid argument
a lot of small changes like ${opt} instead of $opt etc in configure script
configure script listens to CFLAGS, DEFINES, LDFLAGS and LIBS environment variables
initialize CFLAGS, LDFLAGS and LIBS with = instead of += in Makefile
updated README about command line arguments required to configure for minix
added dot after last sentence of README
configure script now tries to choose compiler and linker flags itself if pkg-config can't, and has --disable-pkg-conf option now
added quit key action
**pre2 release
fixed client_save for windows above current screen
added segin's fullscreen and maximize button patches
NET_WM_STATE_ADD -REMOVE and -TOGGLE no longer defined twice (had then in atoms list while they're not atoms)
0.1.1:
fixed expanding while window maximised/fullscreen
strip whitespace from cflags etc in configure script
fixed buttons_create(), calls buttons_update() after calculating button parent sizes and doesn't map the button parents (buttons_update() schould do that)
don't set HAS_BUTTONS in client_add(), this is up to buttons_update()
fixed windows without WM_NORMAL_HINTS property behaving inapropriately
s/print all events/debugging output about events/g in -version output
makedefcfg.pl handles double quotes and backslashes propperly now (it escapes them)
act variable defined at top of str_action() instead of in the middle somewhere, len variable used there instead of calling strlen() twice
added correct_center_separate option to select wheter to correct x and y axis separately or not (defaults to false)
corrected calculation of min and max vertical coördinates in screens_correct_center()
moved declaration of act to the top of str_action() in config.c
0.1.0:
wrapped all screen dimensions stuff, so multiple screens can be used
initial xinerama support
don't calculate workarea dimensions 4 times to set them 4 times in ewmh.c
removed a few misplaced tabs from configure script
first argument of expand() is now bool instead of int
event handlers return bool instead of int
update window list before mapping it
added drag_warp option to disable warping desktops while dragging
boolean options in config.c now use bool datatype too
don't strut _KDE_NET_WM_WINDOW_TYPE_OVERRIDE windows
ewmh_initialize() split up in ewmh_initialize() and ewmh_update()
update windows when strutting changes
remove frame around fullscreen windows so fullscreen doesn't look odd with xinerama setups
client_expand()'s a argument is now bool instead of int
allow overrideredirect windows to take focus
use error() for pipe() errors too
follow focus where application try to set it
added allow_focus_stealing option (setting it false makes focus policy more strict, like it used to be)
set input focus to None while in window list modus
added comment about _NET_WM_STRUT_PARTIAL not being fully supported to BUGS
ewmh_screen option to set where the desktop windows and such go on xinerama setups
updated README and manual page about new features
**pre1 release
more generic explanation about the compile time options being printed at -defaults in the manual
type casting in DEBUG_EVENTS printf statements
client_visible() is now bool and returns false if called with NULL argument
moved a few includes that are only needed by one or two files from matwm.h to the files that need them, and added comments on why they are necessary
removed a few includes that are no longer necessary
added comment about why there is an include in evn.c and one about why we set input focus to the root window in quit()
corrected version number of this changelog entry
raise override_redirect windows on startup
check if any window we don't manage is focussed before focussing a new window because no other current window is there (when focus_new is disabled)
corrected intendation of Makefile a little
added --enable-debug flag for configure script
configure scripts says what libraries are needed for
action codes are typed unsigned char now
use action codes for drag modes
use pointers for events
call wlist_handle_event() and not handle_event() in wlist_start
don't allocate memory to grab a key without valid key action
key actions and mouse button actions are now the same thing (and this fixes double5 setting not working)
added options to assign button actions for the root window
reworked potentionally disfunctional code for handling (double) clicks
don't return true on every configurenotify event in screens_handle_event
corrected intendation in button_handle_event
make sure client_visbile() returns either true or false
preserve stacking with client_iconify_all()
keep override_redirect windows on top
check if next and prev keys have at least one modifier
added correct_center option, wich places windows that go in the center of the root window to the center of the current screen
added click_root option to enable/disable selecting ButtonPressMask on the root window
changed default configuration (set focus_new and map_center to true, and double2 to expand)
update the manual page above all(i hope) above changes, and made a small correction
nicer printing of X errors and -DDEBUG_EVENTS stuff
moved client_warp() and client_focus_first() to actions.c and client_over_fullscreen() to client.c
removed trailing new lines from a lot of files
**pre2 release
str_opcode() returns "unknown" instead of "unknown opcode" if opcode isn't known
propperly free xinerama's screen info when we no longer need it
don't wait before exiting if we can't select events on the root window
select events on the root window again when reloading the configuration file
new error message for not being able to select events on the root window
clients_alloc() no longer pointlessly returns true nor is the result used
moved some stuff from ewmh_initialize() to ewmh_update()
repaired dumbness that would result in segmentation fault on linux (allocating not enough memory for screens)
make very sure there is at least one screen
use exit instead of return in configure script (return doesn't work with linux sh it appears), also removed trailing newline
expand now also takes outer edges of screens into account (useful if you have overlapping monitors)
rewrote snap to edge stuff, and also made it snap to outer edges of screens
**pre3 release
don't listen to FocusOut events with detail NotifyInferior, this fixes focussing opera
do XSetBorderwidth() in client_update(), fixes fullscreen mode (the border would remain around the window and the window would be misplaced)
don't substract border width and title height for fullscreen coördinates anymore (they are zero anyway)
focus windows before processing click action on them (fixes trying to drag not-focussed windows)
corrected README s/ppc/32-bit PowerPC/
added correct_center_all option wich enables correct_center but for override_redirect windows
fixed client_save() and made it obey map_center too
call client_save() in client_add()
added some printf statements for -DDEBUG
**pre4 release
corrected debugging message about adding client
added some debugging messages, improved old debugging messages
don't do the focus_new thing when adding existing clients on startup
try to preserve input focus on startup
more comments in main.c, and around things concerning input focus
client_focus_first() checks if the pointer is in a window of ours first, checks if previous is visible and can be focussed
don't handle NotifyPointer events normally, just set input focus the right way when it goes to the root window
don't listen to EnterNotify events generated because of grabbing/ungrabbing
set border width only right before reparenting a window
choose events for parent window and button windows etc separately
don't report focus changes with -DDEBUG
replaced some spaces by tabs in ewmh.h
configure script prints error on invalid argument, and returns 0 instead of 1 on --help or -h
configure script accepts --mandir instead of --maprefix (this apears to be the convention)
--enable-debug intended correctly in configure script usage message
removed taskbar plan from TODO - doesn't belong there it will be a separate project
removed matwm-remote plan from TODO - currently seems like a dumb idea, might reconsider this in future
0.0.99:
using pid_t instead of int for pid in spawn()
passing a propper adress to wait() instead of NULL in spawn()
grouped declaration of int's in main()
changed act variable in sighandler to char datatype
sighandler now waits for zombie processes so we don't need to fork twice in spawn()
huh wth @ all tabs in matwm.h replaced with spaces, fixed this
send an extra configurenotify event when mapping windows - fixes gtk gvim
changed format of -version output, added info about wheter compiled to use vfork and debugging stuff
changed comments in makefile: "shaped windows support" instead of "shape support"
separate prefix for freetype2 and comments about what different prefixes are for
introduced configure script to generate makefile
**pre1 release
rewrote README, wrapped lines in the LICENCE file at 80 columns
fixed placemend of exec commands and exec key action in man page
a lot of improvements to the new configure script
**pre2 release
updated ChangeLog about releasing pre1 and pre2
small correction to README (suggestion to read man page before use)
not using sprintf anymore, as suggested by warning i got while compiling on openbsd
comment out -W flags in default makefile template (apearantly not all compilers like them)
fixed a lot of dumbness in error checking
attempt to quit nicely on malloc errors
fixed makeheader once again (allow non-word characters so initialization of strings etc can be done)
format errors like "matwm: error: " instead of "error: "
only set first to 0 in cfg_parse_defaults
reordered the giant list of int decrarations in config.c a bit
initialize nbuttons_left and nbuttons_right, so faulty default config can't fuck up fatally on that
don't allocate too much memory for mod_ignore
skip realloc()-ing mod_ignore if not necessary due to bad modifier name
support for _KDE_NET_WM_WINDOW_TYPE_OVERRIDE window type
check for multiple window types
don't quit if malloc()-ing a crapload of memory fails because of an insanely big configuration file
moved error() to misc.c
don't free data before exit, this apearantly is not necessary
removed comment in defcfg.c's generated by makedefcfg.pl
removed the firefox/seamonkey fullscreening bug from BUGS, it's fixed in newer firefox and seamonkey versions
propperly check for xinerama extension before trying to use it
0.0.98:
updated synopsys section of manual page
SHAPE and XFT -> USE_SHAPE and USE_XFT
added parenthesis around assertion in client_add()
fixed bug that would make windows hinted to start iconic being mapped visible
removed adding comments from TODO, code is readable enough now in my opinion
Xft support disabled by default
renamed d argument of client_handle_button() and buttonaction() to is_double
use true and false for boolean values instead of 1 and 0, also use bool datatype (for wich a typedef and enum statement are added to matwm.h)
only use map_center behaviour (if enabled) for clients added because of MapRequest events
use vfork anyway - fuck the plan of making matwm valid ISO C90, it seems to be impossible
placed defcfg and header targets at the bottom of the makefile
removed HEADERS from makefile (depending on them doesn't work anyway apearantly)
fixed title window width calculation wich broke with last release
0.0.97:
also did intendation for #ifdef stuff
makeheader.pl now handles #ifdef things too
use strict and warnings in them perl scrips
ifdefs around declaration of variables only used by shape extention stuff
don't put -l flags in $(LDFLAGS) but in $(LIBS) as gentoo patch suggests
DefaultDepth() and DefaultVisual() no longer used directly everywhere
also replaced direct use of DefaultColormap() with colormap in config.c
removed if(c->name) in wlist_item_draw - windows always have names
only calculate window list item width's once
removed misplaced tab in default_matwmrc
added support for Xft fonts
-version now also prints wheter matwm was compiled with/without shape extention and Xft support
added wlist_margin option to set how much space goes around text on items in the window list
updated manual page about changes described by last three lines
revised the calculations done for constructing the window list
0.0.96:
always return 1 if we could use an event in ewmh_handle_event()
don't define variable in the middle of ewmh_handle_event()
handle some _NET_RESTACK_WINDOW client messages - kicker panel needs this to work propperly
added map_center option to make new windows apear in the center of the screen
fixed bug that would give windows without titlebar buttons if config was reloaded
renamed border_width to border_spacing, border_width now sets the real border width
added border_color and inactive_border_color options to set border color separately
added button_width option so the user can set the amount of space between buttons
border_spacing and title_spacing no longer have to be at least 1 (0 now)
edited man page accordingly
0.0.95:
initialise dpy as NULL, don't try use it in quit() if it still is NULL
set up signal handler first, then open display
added comments in main.c and moved some stuff around for better readability
don't try to map already mapped windows in quit() - only iconic ones are really unmapped
comments about defcfg and header targets in Makefile, comments in the perl files about their function
added comment about the function of buttons_update() in buttons.c
use sprintf() instead of strncpy and strncat in cfg_read()
added comments in config.c
don't include <X11/extentions/shape.h> if SHAPE is not defined
modified licence for release in 2010
removed -std=89 and -pedantic, still complains on some platforms and it's doubtful if matwm well ever fully comply with the ISO C90 standard
set _NET_WORKAREA in a way nautilus listens to (when managing the desktop it would place icons under the top panel)
0.0.94:
fixed evil bug that would happen when windows would dissapear while being dragged
renamed qsh to sighandler
using signal() instead of sigaction() now - apearantly sigaction() is no valid ISO C90
using fork() instead of vfork() by default - also to comply with ISO C90
0.0.93:
revised motif hints implementation once more (decoration hints schould be fixed now)
mid-sentence tabs in mwm_hints.h replaced by spaces, added comments
little correction in README to sound less stupid
**pre1 release
modified makefile to work with minix
added ifdefs for people without vfork
a few spaces in client() replaced by tab
made make*.pl executable
using nested if's instead of one big if in main loop and other places (for i am uncertain if the language implies that in if(this() && that()) that won't be called if this() returns 0 - and it's more readable anyway)
prevent strlen on NULL pointer in client_update_name() for similar reasons
replaced load of if's for some key actions with case statement in events.c
only call keyaction() once in wlist.c
more parenthesis in call to select() in main() in main.c
explicity check if sr is zero in main loop
send only one char to qsfd instead of an integer
check if current exists if trying to raise it when adding new client in drag mode
better error message if -display without argument given
0.0.92:
makeheader now allows comments next to global variables - needed for client.c since 0.0.91
removed useless calculation (result wasn't used) in config.c
emwh_get_hints() now void instead of int, as it schould have been
include <sys/wait.h>, as apearantly needed for wait()
sorted includes in matwm.h a bit
corrected giant assertion in client_grab_buttons() (there was && instead of || for checking if the button was not one of a load of buttons)
removed a few unused variables
modified use of XGetWindowProperty() ewmh.c and x11.c so it doesn't break strict antialiasing rules
added a bit of comments in get_mwm_hints(), removed useless stuff in it and (MWM_FUNC_RESIZE | MWM_FUNC_MOVE) reversed for readability
added ifndef stuff in headers to prevent including them twice
did a lot of stuff for better complyance with ISO C90
added headers as dependencies in Makefile
replaces := by = in Makefile, don't know the difference
using new _malloc() function (wich does error checking) now instead of malloc() directly
prevent forgetting to free in get_wm_state() when not able to read correct hint
use sizeof() macro in xerrorhandler instead of twice the same stray number
do error checking on XGetWindowAttributes() in main() and isviewable()
removed useless initialization of i in clients_apply_stacking()
makeheader replaced by more portable perl script (makeheader.pl)
default configuration now is an array of strings (one for each line) generated by the makedefcfg.pl script (makedefcfg target in makefile added for interfacing)
added comments in matwm.h about enum statements
qsfd now used differently, instead of sending signals to it we make it able to receive info that can be used to deceide what to do
instead of calling exit directly we use qsfd_send(ERROR) or qsfd_send(QUIT) now
0.0.91:
added comments in actions.c
only unmap frame window when hiding, but not iconifying window - apearantly some applications did not like the previous behaviour
**pre1 release
when a new client maps on another desktop still map the client window - to comply with new behaviour described above
added comments in client.c and x11.c
do better checking on wheter to map the window list item or not in client_add()
default keybindings for lower/raise
schould only call get_wm_state() once in client_add() - hurray for drunk programming
attempted to make client_add() more readable
only focus new clients if focus_new is true AND the new window is visible (only checked if it wasn't iconic before, now propperly uses client_visible())
also listen to UnmapNotify events if the the client's window can't be verified to be a child of the parent window
0.0.90:
deinstall target of Makefile now uses $(RM) too
iconic windows that are restored by a maprequest event also become focussed if focus_new is enabled
fixed focus_new refocussing the window under the mouse after a delay sometimes (happened with xterm if the mouse was over the title bar)
improved makeheader a bit, so it no longer fails due to the recent changes (added comments) in misc.c
client_title_y renamed to client_title_x
comments explaining the purpose of functions in evn.c and info.c
0.0.89:
prevent collecting zombie children when spawning proceses
respect motif hints flags better
TODO list updated about plan to comment code for better readability
added a lot of comments in misc.c
0.0.88:
avoid hang on iconifying of windows not visible because they are on another desktop (client_hide is only to be called for visible windows)
0.0.87:
don't call client_over_fullscreen() for new windows if they are iconic
0.0.86:
better choise of wich buttons to grab on windows in client_grab_button()
store return value of buttonaction() in client_grab_button() instead of using it over and over in the assertions
0.0.85:
multiple stacking modes for fullscreen windows
0.0.84:
double click can be set for every mouse button in the same way normal mouse buttons can be configured
check if both clicks come from the same client with double clicks
fuck menus and taskbar @ TODO
0.0.83:
sticky, ontop and below buttons added & man updated about this
double click actions now possible & added info about the options for this in the manual
added info about wich buttons can be used to click buttons in manual
0.0.82:
added title_spacing option to set amount of space between title and client window
re-ordered things in default configuration
removed unnecessary assertion in eat()
apearantly title_width schould be one pixel bigger then XTextWidth() returns, corrected this
configuration file supports escape codes now (this turned out to be useful as X color names can be html style hex colors prepended with #)
updated the man page about the about two new features, divided it into more paragraphs to be readable by humans too and made a few corrections
small edit to comment in makefile
eat for space first in cfg_parse as this is a bit more efficient with default, and supossedly most configurations
removed a few old plans from changelog, don't like it anymore
added center_title option to make title centered and updated manual about it
added some things to TODO list
don't focus windows automatically if in drag or window list mode, updated manual about this behaviour
client_focus doesn't set previous anymore when trying to focus a window with DONT_FOCUS bit set
input focus set only at end of window list
SIGHUP for config reload replaced with SIGUSR1 as using SIGHUP turns out to be a dumb idea
update buttons before title in client_update()
buttons_update() also handles position of right buttons parent window
buttons can now be configured with buttons_left and buttons_right option, updated man about this
don't call buttons_update() from client_add() as buttons_create() already calls it now
do not focus windows that apear iconic when focus_new is enabled
added center_wlist_items option to set text alignment of the window list, also updated man for this
0.0.81:
"maximise" schould be "maximize", replaced it everywhere
fixed Makefile: has propper depends now, compile objects separately, etc - with thanks to segin
makeheader generaties c89 compliant comments now
removed tmp.h - wth was it doing there anyway
SIGHUP makes matwm reload all configuration files
propperly free font structures, colors and ignore modifiers
added exec_onload command to run things from configuration file whenever it is loaded (exec commands will only be executed when matwm starts)
updated manual about new functions and added some details about configuration behaviour
reversed order of ChangeLog, and fixed typo in 0.0.52 entry in it
** pre1 release
replaces some tabs by spaces in matwm.h, main.c, client.c and buttons.c
removed comma at end of enum statement for key actions
check if desktop count is more then 0 in config, instead of greater then STICKY
update _NET_NUMBER_OF_DESKTOPS on configuration reload
update buttons size and position, and title window size on config reload
added -version argument - /me must not forget to edit makefile to set the version before release now
remove plan for shade function from TODO as i don't like the idea anymore
same for reloading config on change plans
first initialized as 1 instead of 0, solves BadAccess errors and lack of sence
free GCs propperly on config reload
moved some stuff from main loop over to cfg_reinitialize()
button size now separated from text_height, and compensated to draw expand button correctly if text_height is even
iconify button now fixed size, so it doesn't fuck up if font size changes
Button3 can also be used for window buttons, some left handed people might like this
moved 2 calls to ewmh_update_clist() from event loop to client_add() and client_remove()
removed a newline in client_hide that schouldn't be there
0.0.80:
don't try to expand to directions already expanded to
removed obsolete variable undermouse in client.c
0.0.79:
removed obsolete selecting of EnterNotify on root window
don't listen to EnterNotify events from client window to it's frame
edited Makefile and README slightly to be more clear
added argument for expand to make it calculate vertical space first instead of horizontal space and default keybinding for it, updated manual about this too
0.0.78:
fixed client_focus_first() on desktop change
fixed client_save() wich broke recently due to last changes in client_move()
0.0.77:
only spaces in default config, no tabs (they fuck up if tabstop is different then mine)
same for Makefile (where apropriate), 1 tab instead of 2 for intendation
moveresize client window in client_update(), this fixes maximising/expanding/fullscreening openoffice.org and perhaps some other applications
0.0.76:
configurenotify() uses functions from info.c to send data now - it used the client structure directly wich made it send faulty values
client_move() and client_resize() also use the right functions to check if something has really changed
client_clear_state() now sets x, y, width and height members of client structure as it schould and no more using current client instead of the one passed
0.0.75:
allocate the right amount of memory in read_file() (was 1 byte too short)
check if not trying to free a NULL pointer in key_bind()
0.0.74:
set _NET_WM_ALLOWED_ACTIONS more correctly
focus newly created windows option (a click can refocus the window under the mouse)
updated BUGS about click to focus desktop thing in last releaste
added more details on the focus model into the man page
if the current window dissapears focus the window that was focussed before that if there is one else the topmost one
keep taskbar always on top optionally and lots of work to make this not interfere with fullscreen mode
layer member of client structure is no longer acessed directly by most functions, new client_layer() function is used instead
0.0.73:
introduces CLICK_FOCUS and DESKTOP_LOCKED flags for better handling of special EWMH window types
client_focus_first() stuff on EnterNotify, schould also work when click_focus is set
0.0.72:
introduced client_focus_first() to focus the topmost visible window (called on enterevent for root window or window with DONT_FOCUS flag if no current window is there (in case the current window dissapeared), and on desktop change)
client_clear_state() now used instead of twice the same code
client_move() and client_resize() no longer return integer, was used nowhere as far as i know
title_width renamed to client_title_width()
introduced client_visible() function to replace a load of assertions
removed seemingly obsolete or non-necessary initialisation of modifier masks in input.c (default configuration schould always be sane anyway - not makeing this foolproof as users can fuck it up badly anyway)
added warning about default initialisation of things in default config being important for matwm to work in README
0.0.71:
fixed overriding stuff by "none" key action and made keybinder use memory a little more efficient - do not allocate memory for keys that are later overridden
0.0.70:
fuck support for 0xFFFFFFFE desktops, it messed up support for 32bit platform
NET_WM_WINDOW_TYPE things override other ewmh hints
small correction to manual page
0.0.69:
ignore whitespace at end of config file lines
avoid a few assertions in eat() that aren't necesarry at all
str_key return NoSymbol if no key could be found instead of 0
if a key action doesn't make sence, don't grab the key
don't grab mouse buttons if there is no mousemodmask
grab buttons also for mousemodmask|nosnapmodmask if nosnapmodmask is there
0.0.68:
client_to_border() also raises the window
don't try to map window list items at iconify, when not necessary
don't focus desktops or taskbars
previous claim was bs, only 0xFFFFFFFE desktops can be done as 0xFFFFFFFF would be the sticky desktop, do error checking for it
leave previous value intact if errorous value set for border_width of desktops
added modifier mask to disable snapping
updated manual page about snapping also being for screen edges
0.0.67:
a few updates to the man page and readme file
don't include anything from evn.c if DEBUG_EVENTS not defined
made use of shape extention optional
ICONIC windows no longer have their own desktop, but their own bit flag - to fix sticky
added cast for current desktop value at XFree() in ewmh_initialize()
fixed sticky windows (ICONIC is a bit flag again, no desktop), they will stay sticky after iconifying and restoring, dragging over the desktop edge and restarting the window manager
don't go to sticky desktop if EWMH hint activates a sticky window
update ewmh desktop of icons restored to another desktop
if no windows are hidden for it still exit showing desktop mode
get_ewmh_hints() renamed to ewmh_get_hints()
added error checking for desktop count and border width in config files
dc now is an unsigned integer, so up to 0xFFFFFFFF desktops are now supported
0.0.66:
prevent focus stealing - EWMH can still set other winows active then the one under the pointer, if this happens a click will fix that
support for click-to-focus and click-raise
minor changes and additions to the man page concerning the behaviour of the window list
when leaving window list, first focus warp the mouse to the new window, then umap the window list - avoiding eventual enter event etc for the window under the window list
fixed checking for modifiers keys left after key release in window list event handler
introduced README file
from now on MIT licence will be used
support for EWMH NET_SHOWING_DESKTOP mode, and modified iconify_all to do the same thing
moved sentence about iconifying windows to iconify part, it was wrongly placed with iconify_all description
if there is a current desktop defined by an EWMH hint, go there (greater then the number of desktops will be threated as the last desktop)
also clients that were on a desktop further then the last desktop will be put on the last one
found and fixed serious bug that would cause matwm to forget about restoring windows from the first desktop if quitting while on another
added info about how to exit matwm, and how it will restore windows at exit in the manual page
restored old (0.0.5 - 0.0.48) changelog from e-mails
0.0.65:
updated TODO and BUGS concerning the introduction of the man page etc
fixed deinstall target of Makefile a bit (man page schould be propperly deleted now)
client_to_corner() also warps the mouse
added a bit of info about virtual desktops in the manual page
added raise and lower key action, added info about button and key actions for raising and lowering in man
added information about the window list shown when next or prev key action is invoked in man
resize drag tries to keep window corner under mouse cursor
added checking for CAN_MOVE bit in client_to_border
~ in man page replaced by $HOME
more detailed description of window list behaviour in man page
replaced break statements in hande_event() with return
DONT_LIST flag will also be respected for EWMH client list
listen to NET_WM_STRUT if no NET_WM_STRUT_PARTIAL is there
0.0.64:
ewmh state only set to maximized if maximised to both directions
replaced t and b arguments for maximise and expand with u and d (up and down)
added my e-mail adress in the LICENCE file
wrote a man page
topleft, topright, bottomleft and bottomright key actions were replaced by new to_corner
0.0.63:
obey global configuration file /etc/matwmrc
separate bits for horizontal and vertical maximalisation
replaced client_maximise() and client_fullscreen() by client_toggle_state()
ewmh maximise message can now do separate horizontal and vertical maximalisation
added default key bindings for hoizontal and vertical maximise (using new h/v argument to maximise key action)
intendation now done with tabs instead of spaces
all horizontal/vertical stuff now also works for expand, and for both now l, r, t and b argument can be used to apply these actions in one of these directions
0.0.62:
update window list when clients iconified/restored/restacked
0.0.61:
renamed end() to quit(), schould now compile and run on dragonflybsd too
set value of _NET_WM_ACTIVE_WINDOW to None if current == NULL, as specified by EWMH
also check if window still exists in button_handle_event and drag_handle_event
do not try to unfocus removed clients
always show window id in debugging messages
0.0.60:
drag modes defined in enum statement
set input focus to PointerRoot on exit, not root
GrabModeAsync for keyboard, on mouse grabbing
cleaned up the mess in events.c a bit
prevent losing focus better, client_focus(NULL) now possible
on hiding/removing client, focus is restored to topmost window instead of lowest one
fixed redrawing of sticky windows when focussed/defocussed
0.0.59:
added key actions for always on top and stay below, also made them listen the apropiate ewmh hints
get_ewmh_hints() now looks on wich desktop windows schould be
several changes/additions here and there to make the above two possible
ewmh_update_desktop() uses long for storing the data, as i think this is more correct
0.0.58:
topleft, topright, bottomleft and bottomright key bindings now also contrain to the ewmh workspace
removed things from todo list that were already done in previous releases
introduced key action to make windows sticky
_NET_WM_DESKTOP messages to root window understood, so pager can move windows to other desktops etc
removed more dumb things from TODO
XFreePixmap() in client_remove() now right under freeing name, for clarity
clients_alloc() no longer fails on linusk if there are no clients left
on exit clients are now reparented in better order (current desktop and sticky windows on top, under it all desktops from left to right order, then iconic windows)
set input focus to root window on exit - this prevents some problems with clients that steal focus i hope
0.0.57:
virtual desktops
_NET_REQUEST_FRAME_EXTENTS and _NET_FRAME_EXTENTS, hopefully handled and set in the right way
0.0.56:
set wlist_with to initial value from wlist_update() instead of wlist_start (this makes way more sence i think)
weird
0.0.55:
fixed bug that made clients with the title "" have fucked up titlebars
fixed bug in updating the size of titles (buttons_update() was done after call to title_width(), had to be before it)
only update ewmh state when nececarry @ move/resize
same for client list
taskbar and desktop no longer show up in task list, thanks to the new DONT_LIST flag
fullscreen bit now set for desktop
fullscreen windows resized on resolution change
repairered ewmh strutting thing (confused top and right)
_NET_DESKTOP_GEOMETRY now updated on root window resize
0.0.54:
handling configurerequests no longer uses client_move() and client_resize(), but sets the coördinates and calls client_update() - so it does not reset state etc, the first 2 functions named are to be called if the user initiated the movement
removed iconify on _NET_WM_SET_ACTIVE for current window - it is stupid and taskbar knows better apearantly
removed focus on map, turns out to be annoying
client_deparents puts windows where the new client_x() and client_y() functions say it is
free title pixmap on client_remove() - how could i forget that
0.0.53:
fixed the very annoying bug in mouse warping introduced with previous version
removed now obsolete references to client_draw_border()
introduced functions for calculating the internal size of clients, wich makes stuff a little easyer with the border being around the window insit of in it now
fixed window snapping - it did not yet use client_x() and client_y() to get window positions, wich obviously fucked up with expanded/maximised/fullscreened windows etc
maximise, expand and fullscreen only work if CAN_MOVE and CAN_RESIZE are set for the client, like they schould (used to work as long as one of them was set)
CAN_RESIZE will be removed from flags if maximum size and minimum size are equal
0.0.52:
button_current initialized as None (how could i forget that)
focus new windows on creation - expirimental, maybe schould be done only if none is focussed yet or click to focus is implemented
focussing of topmost window after client dissapear fixed - look in stacking, not clients
title is drawn to a pixmap that is the background for the title window, as this seems to redrawed way faster
let X draw the border now, as this also redraws faster
because of changes makeing motif hints property notify response be broken, it was removed - i doubt any application uses it anyway so it is not worth the effort for now
0.0.51:
updated changelog @ 0.0.49 to state changelog was introduced then, and @ 0.0.50 the forgotten button grab stuff was added
renamed CHANGELOG to ChangeLog to comply with what is appearantly tradition
now maximise function takes ewmh_strut into account
xo and yo members now save the offset of the window when it's mapped, so it can be (hopefully) restored propperly later on
maximise and expand now check for CAN_MOVE and CAN_RESIZE bit
implemented a bit more EWMH things
maximise raises client given to it, not current
all macros are replaced by functions to give the window's size and position wich are now rather dynamically calculated then stored
changes in client size or position are now applied by calling client_update(), client_update_pos(), client_update_size() and client_update_title() functions
added fullscreen state
moved code around a bit creating a little more order
removed comment that didn't make sence anymore
no more warp to spawned windows, this fucks up some apps (xine)
further EWMH implementation
changed drag function to work with EWMH stuffs, also made it restore the client if it iconic
fixed iconify_all function that broke when stacking and clients variables were separated
0.0.50:
fixed bug that would sometimes draw a little square in the topleft corner of the root window
added support for motif move hint and motif resize hint schould be fixed too
attempted to make enum statements in matwm.h more readable
stacking now keeps the stacking order of clients, clients keeps them from oldest to newest - and client_number() lets you specify one of those to dig trough
introduced "layer" member in client structure, wich defines the layer of the window (always on top, always on bottom etc)
partial EWMH implementation
if the CAN_MOVE or CAN_RESIZE bits are not set for a client, accordingly the buttons for that will no longer be grabbed
0.0.49:
introduced changelog
new windows map under window list or window currently being dragged
button_current now uses a value of "None" instead of the root window to define there is no current button
client_focus checks if window is really viewable before setting input focus
window list puts off screen windows on screen if they are chosen - with new client_save() function
renamed handle_button_event() to button_handle_event()
fixed bug in get_mwm_hints() that made it possible in weird conditions a call to XFree would be apropriate but not done, and it now passes mwmhints variable directly to XGetWindowProperty()
on exit clients are deparented in reverse order, as this has some advantages over the old method
removed useless get_wm_transient_for()
fixed wlist_end() segfaulting if current == NULL
0.0.48: last entry that came from an email
added "iconify_all" key action (defaults to mod4-a and control-mod1-a)
dont stop looking for arguments after -display argument - have i been drunk?
graphics contexts initialization now smaller - half of it didn't really make sence (setting values to the default value, set a value and then set it again before use), maybe copied those lines from yeahwm
0.0.47:
faulty printf() call in xerrorhandler that caused segfaulting fixed
more checking if windows still exist and has_client() has been replaced by has_child() in x11.c (wich allows to do checking on any set of parent & child as opposed to a client structure)
don't warp to new windows when dragging or if window list open
0.0.46:
move() foolish configurenotify sending of old coordinates fixed
default configuration has bindings for people with a windoze key now
adding a key to matwmrc leaves default key bindings intact now, they can be reset with the "resetkeys" command
also if a new key binding is added the last one set will be used instead of the first one now
moved a lot of functions from client to the new actions.c, including all content of icons.c to make stuff a little more organised, and isunmap() predicate placed in x11.c
0.0.45:
client_focus() makes more sence - introduced client_set_bg() so it doesn't have the same stuff twice
fixed input focus stupidity with wlist_end() (introduced in .44 i think)
extra debugging stuff and other details
mwm hints fixed up once again, i broke it some time ago
0.0.44:
fixed major bug in remove_client, that could induce segmentation faults (the loop to pull a client out of the array went one client too far)
fixed input focus not always updated when restoring iconified clients bug
check if client still has a window on most events exept destroynotify
made redrawing of buttons, and title more efficient
buttons dissapear if they dont fit on the titlebar anymore
makeheader is a shell script now (wich depends on sed)
dont need to unmap buttons when no titlebar on a window, so we don't do this anymore
cleaned up code a bit (better naming of functions etc)
0.0.43:
previous claim on x errors were a bit utopic, but remove_client() now does an XQueryTree to see if the window in it still exists and hopefully matwm doesnt try to mess around with destroyed windows that much anymore now
window buttons schould now act a bit nicer visually, as in when the mouse is clicked and dragged off the button and back on it the square indicating it is selected not (re)apearing whilst releasing the button would do nothing at all
0.0.42:
rc file doesnt use ':' as separator anymore (just whitespace now)
"exec <command>" line in matwmrc file schould run <command> on startup
select() loop now makes more sence, and won't get cought in XEvent() blocking it because it assume data == event
any x errors occuring schould be history (new stupid ones introduced by buttons fixed, and also the old badwindow errors that happened because of mouse entering the parent window when a client window dissapeared triggered useless call to focus())
0.0.41:
buttons are now only activated when the mouse has not left them before releasing after its clicked
if -display used exec now puts DISPLAY evironment variable accordingly in spawn() function
0.0.40:
minimise button can now change
no more inactive foregroundground on active background, but squares around buttons
0.0.39:
button parent window now acts like root window
client structure members "state", "title", "border" and "resize" are now replace by the bit mask "flags"
added "title" button action, wich toggles the title bar of a window on and off
buttons schould now be unmapped if the window has no title
fixed bit mask stupidity that made broke shaped windows totally & add_client now calls set_shape instead of doing the same as set_shape
0.0.38:
window buttons implemented
expand function now makes sure the window isn't maximised
0.0.37:
fixed calculation of other windows their height in expand()
0.0.36:
doesnt let window list become wider then the screen now
added expand() function, and key action for it
renamed cmpmod to cmpmodmask
iconic, maximised, expanded and shaped members of client structure are now replaced by the bit mask in member called "state"
0.0.35:
fixed read_file() - add final zero if no EOF read or something like that, was long ago
fixed DestroyNotify handling - mapping a window and immediatly destroying it schould no longer bring trouble
erm duno what else its been long confusing time
0.0.34:
abandon stupid objects stuff in makefile and add header, install and deinstall targets
fix pointer stupidity (@ config.c)
made read_file() work fox linusk too and add fix for in case no eof is read
add font boundary stuff for window list and set fixed as default font ("*" is no good at all)
0.0.33:
new makefile - including clean target
fixed bugs introduced with pointer stuff @ maprequest and configurerequest handling - they sometimes acted faulty
misterious badwindow errors gone somehow
if current client is iconified, focus first client
if there are only iconic clients dont set offset for them
split off a deparent_client function from remove_client funtion, to make stuff less dirty (confusing fc argument, unnecesary if()'s)
understands -display and -defaults arguments now (first one is obvious, other one prints default configuration to stdout and exits)
perhaps bugfixes i forgot
0.0.32:
cleaned up some code
fixed some bugs
added ignore_modifier option
0.0.31:
new configuration thing (and erm can launch programs now)
maybe several bugfixes
prolly several bugs
0.0.30:
all clients are now pointers
windows are now sorted, and icons are separated in the window list
windows with no name are given a title
etc
0.0.28 & 0.0.29: one mail was about these two versions, yet included none
.28 -> latest version i had with taskbar, prolly includes bugfix but dont know exactly what
latest version now officialy has window list instead of taskbar, but maybe i revert this if it turns out to have problems too
also cleaned up the code a little, and button actions are now no longer strings
note that configuration stuff has changed a little since taskbar removal - the mouse buttons stuff
0.0.27:
fixed stupid thing i forgot when adding the new icon stuff
prolly forgot stuff i did too
as this release seems to be pretty stable next thing to to is rewrite the configuration stuff to break it again i gues
0.0.26:
fixed stupid bug with redrawing icons
changing resolution/size of root window doesnt fuck up anymore
0.0.25:
forget to mention at .24 a licence was included and "snap 0" schould be "snap: 0"
added window snapping to the resize windows
doesnt re-use parent windows as icons anymore after all, this gives problems when matwm gets brutally murdered or would it segfault or anything concerning the placement of windows
0.0.24:
now uses total_width and total_height macros for a little cleaner code
window snapping is added (put "snap 0" in .matwmrc to disable)
0.0.23:
signal handling function rewritten to work with xorg 7.4 - maybe other little things too
configuration stuff for modifier keys improved a little
updated default key bindings to be a little sane
fixed bug concerning the maximalisation of windows without title bar
0.0.22:
compiles on linusk now (no more strlcat cpy etc but strncat)
linusk also needed a header for uint32_t etc but they are no longer used as turns out motif wm hints are returned as long integers not 32 bit pieces as many code and manual for XGetWindowProperty suggest
speaking of wich, mwm hints got fixed up a little more - somehow xmms, xine and mplayer did fine before but how it are miracle
anyways i verified this by comparing the values matwm reads to xprop output and its behaviour to mwm's
this was not yet tested on 32bit platforms tho - but i am quite sure it will work there
but ftw @ fvwm's decorations.c using 'int' datatype for all values in mwmhints structure - evilwm and yeahwm use uint32_t i think, schould check that out
0.0.21:
fixed mwm hints once more hopefully mplayer and xine now behave better
0.0.20:
shape thing fixed, transient windows recognised etc - xmms and xine schould now really work
0.0.19:
major bugfix - no more dissapearing windows (cause identified but not understood - unmapnotifies when there is nothing unmapped, x are crazy?)
on destroynotify no longer trying to do stuff with window that is gone - still some misterious and less misterious badwindow errors possible but this is supposedly harmless tho i want it fixed (what if a new window with same id appears suddenly)
mwm hints fixed up mostly i hope
0.0.18:
focus behaviour fixed: enterwindow events on client window are now also handled
handles motif wm hints now, but work is to be done on that
shape extension things work now
0.0.17:
xrm_getint() now works so border width etc can be set from configure file
gravity now works
0.0.16:
removed some plain stupidity - me tired head forgot somewhere in the past that several strings from default config (mouse button actions) compared with strcmp were NULL
0.0.15:
fixed bug in binding keys (now handles mappingnotify)
0.0.14:
fixed shift lock bug (keybinds did not work if it on)
made config thing little cleaner
etc
0.0.13: mail was empty
0.0.12:
fully configureable now
0.0.10:
handles window state stuff better now
unmaps client window for iconifying and re-uses parent window as icon
bugfixes
0.0.9:
major redesign - moved code around a lot hoping it would make more sence then
xerror handler now searches for client to wich resourceid belongs
fixed some bugs (including stupid mistake @ minimise thing)
maybe introduced new bugs because maties @ almost 40hrs of uptime
0.0.8:
added taskbar / iconify thing
introduced new bugs
removed focus previous window on remove_client because it were crap
event loop modified
atoms now have xa_ prefix and wm_hints is used for other purpose
etc etc
0.0.7:
reduced flicker considerably - draw_client() after each resize
move() and resize() dont act if client already has the requested size and drag only calls them for last motionnotify in que now
next() and prev() now have argument to set wether to move pointer towards newly focussed window
0.0.6:
hopefully less foolish and agressive response to unmaprequests
changed focus behaviour -> if there are windows there shall be one focussed
0.0.5: changelog was part of e-mail i sent to myself at each release from this one on to 0.0.49 when real changelog was introduced, recovered changelog from all those mails at version 0.0.66
done some bugfixes and cleaned code up a little
made draw_client() (formerly client_draw()) draw border to window frames