File: ChangeLog

package info (click to toggle)
python-plwm 2.6a%2B20080530-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 1,052 kB
  • ctags: 1,781
  • sloc: python: 7,574; ansic: 1,075; xml: 109; makefile: 83
file content (743 lines) | stat: -rw-r--r-- 25,483 bytes parent folder | download | duplicates (3)
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
2002-07-13  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* mixer.py: New mixin for controlling the audio mixer.  Currently
	it only supports "rexima", but it should be easy to extend to
	"aumix" etc.

2002-07-12  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Screen.system): 
	(WindowManager.sigchld_handler): This was messy: since we don't have
	reliable signal blocking, we have to do some quite complicated
	book-keeping to ensure that we neither lose foreground processes
	exit status, nor hang forever.

	* mw_load.py (UnixLoad.get): Use wm.system redirection to avoid
	using intermediate file.

	* wmanager.py (Client.follow_size_hints): 
	(Window.keep_on_screen):
	If client filter Window.full_screen_windows is true, the window is
	allowed to occupy the entire screen.  Otherwise it will be cropped
	by allocated edge area.

	(Screen.system): Support redirecting stdio, to allow interaction
	between PLWM and invoked command.

2002-07-07  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Screen.handle_map_request): Only map managed
	windows on MapRequest if the user allows it.

2002-03-04  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* border.py (BorderClient.__client_init__):
	Set border_[focus]color_name to None by default, so check against
	that.  Also remember to set border_focuscolor event if
	border_focuscolor_name is not set.

	* wmanager.py (Screen.handle_client_message): Fetch a client
	instead of a window, and make sure that it exists.

	(Screen.remove_window): Check for null windows.  Also pass the
	RemoveClient event manually to the deleted client.

2002-02-22  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* input.py (modeInput.__init__): Rename "ignored" argument to
	"length" as in inputWindow, to allow keyword argument
	comptibability. 

2002-01-19  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Window.raiselower): New method to raise the window
	if it is below any other, or lower it if it is on top.

	* misc.py: New file, containing various useful mixins and other
	functions.  Most of them comes from petliwm.py.

	* wmanager.py (Screen.alloc_border): New method that allows mixins
	to reserve a part of the root window located at one of the edges.
	(Window.keep_on_screen): Use the new Screen attributes root_x and
	root_y for positioning.

	(Client.__init__): Kludge to always reparent client windows, to
	fix broken widget sets.

2002-01-14  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* cfilter.py (StaticClientFilter): Let all static filters inherit
	this base class, improving performance a bit by binding the __call__
	method at initialization.
	
	(is_client): New filter that is true for all client
	objects. 
	

	* wmanager.py (Client.configure): 
	(Window.configure): Update configure to the internal windows. 

2002-01-10  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Client.__del__): Should not be a Window method. 

	(Screen.__init__):
	(Screen.add_client):
	(Screen.remove_window):
	(Screen.add_internal_window):
	(Screen.get_window):
	(Screen.is_client):
	(Screen.is_internal_window):
	(Screen.get_client): Unified handling of external and internal
	windows.  Makes event handling a bit less convoluted.

	(Client.withdraw):
	(Window.withdraw): Split into window-general and client-specific
	methods.

	(Window.raisewindow):
	(Window.lowerwindow): These are nice to have both on Window and
	Client.

	(InternalWindow): Subclass to Window, so that we can identify
	internal windows.
	
2001-12-12  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* __init__.py (__all__): Added mw_load module, contributed by Meik
	Hellmund. 

2001-12-11  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Client): Removed some dead event handlers.

	(Screen.handle_circulate_request): 
	(Screen.handle_configure_request):
	(Screen.event_to_change): Changed event_to_change to a Screen
	method, and added the flag "allow_raise_requests" to be able to
	ignore raise requests.

2001-12-09  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* event.py (SlaveDispatcher.__init__): 
	Make sure we copy slave list, since we may modify it later.
	
2001-12-05  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* panes.py (panesManager.panes_next): 
	(panesManager.panes_prev): 
	* menu.py (MenuKeyHandler._down): 
	(MenuKeyHandler._up): Skip -= and +=, to allow Python 1.5.2
	compitability. 

	* panes.py (Pane.deactivate): 
	(Pane.do_activate): Use the new focus code in wmanager.

	* views.py (View): Keep track of the focused client on the view.
	(ViewHandler.view_handle_quit): Store configuration when window
	manager exits.

	* event.py (SlaveDispatcher.add_master): New method, allowing
	wm.dispatch to exist when Screens are created.

	* focus.py: Rewritten to use the new focus code in wmanager.
	FocusHandler has been renamed to PointToFocus, and FocusClient is
	no longer used.  The old name will remain for some time for
	backward compitability, but will emit a warning when used.
	move_focus() is now in a separate mixin, MoveFocus.

	* wmanager.py (WindowManager.set_current_client): New method that
	handles switching between clients.  Use this to give focus to a
	certain client.
	
	(Client.lose_focus): 
	(Client.get_focus): Helper functions for client switching.

	* wmevents.py: Various internal events generated by the window
	manager core is collected in this new file.  They have been moved
	from wmanager.py and focus.py.

2001-11-30  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* cycle.py (CycleActivate): Improved to work as expected both for
	mapped and iconified clients.  Inspiration came from Meik Hellmund. 

2001-11-28  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Screen.system): Create a new process group for the
	child process.  This ensures that any signals sent to the parent
	from the terminal (e.g. SIGINT) is not also distributed to the
	processes started from the window manager.

2001-11-24  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Client.__del__):
	(Screen.__del__):
	(WindowManager.__del__): Provide mixin classes with finalization
	methods.

	* outline.py (WindowOutlineClient): Wrote a window-based outline
	mixin.

2001-11-21  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Screen.handle_map_request): Further hack:  at least
	netscape abuses maprequests, so test disallowing
	established windows to map themselves again.

2001-11-13  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* wmanager.py (Screen.handle_map_request): The if-expression
	missed a "not", so we always called deiconify on new clients, when
	we instead should call it for existing clients.  Explains why
	the Client attribute start_iconified only worked at PLWM startup,
	not for windows created when PLWM is running.

2001-10-16  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* mw_apm.py (NetBSDIoctlAPM.do_ioctl): Moved open() into try
	block, so that interface detection properly fall through when
	the device file is not present.

2001-10-15  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* mw_apm.py (NetBSDIoctlAPM): APM interface for NetBSD,
	contributed by Henrik Rindlw.

2001-08-24  Peter Liljenberg  <peter.liljenberg@esdgkonsult.com>

	* keys.py: Subtly rewritten interface now allows KeyHandler maps
	to be installed not only windowmanager-wide, but also on specific
	screens or clients.  This is backward-compatible with the old
	keys.py interface, but a warning is issued whenever that is used.

Tue Feb 20 14:59:28 2001  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (WindowManager.handle_event):
	Added support for screen attribute of events, so events can be
	sent to a specific screen.

	* focus.py (FocusClient.__client_init__): 
	(CurrentClientChange): 
	(FocusHandler.focus_to_ptr): 
	Split client focus model from having a single client which both
 	have input focus and is the current client, into tracking which
 	client which have input focus, and which client actually contains
 	the pointer.  This is needed for clients with the "no input" focus
 	model to work.

	Most instances of wm.focus_client should be replaced with
 	wm.current_client.  The ClientFocusIn and ClientFocusOut events
 	are probably not that useful anymore, instead CurrentClientChange
	might be more interesting.
	
	* modestatus.py (ModeFocusedTitleClient): 
	(ModeFocusedTitleScreen): 
	* moveresize.py (MoveResizeKeys.__init__):

	Updated to reflect the focus model changes.

2001-02-02    <petli@cendio.se>

	* modewindow.py: Some rewrites, to allow a single message to be
	added to several modewindows.  Also the framework for using the
	nice value has been removed, until something actually is
	implemented.  Redrawing made more effective, as only the relevant
	part of the modewindow is cleared, and not the entire one.

2001-01-23    <petli@cendio.se>

	* event.py (EventFetcher.next_event): Fix for a bug introduced by
	the addition of FileEvents; where PLWM would be one X event behind
	most of the time, due to a "i > 1" where it should be "i > 0".
	Sigh.  Some minor cleanups too, to make the loop a little more
	effective.

Tue Jan 23 16:31:37 2001  Peter Liljenberg  <petli@cendio.se>

	* keys.py (KeyHandler._buildmap): Better keycode handling, now it
	grabs all keycodes which have bound the keysym, not just the
	first.  If the keysym is bound in the shift position, add
	ShiftMask too.

2001-01-22    <petli@cendio.se>

	* cfilter.py (all, none): Synonyms for true and false,
	respectively. 

2001-01-21    <petli@cendio.se>

	* focus.py (FocusHandler.move_focus_ignore_clients):  Attribute
	moved to the FocusHandler, instead of being a FocusClient
	attribute.

Wed Jan 17 16:23:48 2001  Peter Liljenberg  <petli@cendio.se>

	* event.py (new_event_type): New function to return unique event
 	types.

	* inspect.py (InspectServer.inspect_enable): 
	(InspectServer.inspect_disable): 
	(InspectServer.inspect_toggle):
	Allow on-the-fly enabling or disabling of the Inspect function,
	for added security.

Mon Jan 15 12:06:10 2001  Peter Liljenberg  <petli@cendio.se>

	* event.py (EventFetcher.next_event): Fixed a case when next_event
 	erroneously return None when a real event was expected, introduced
	by the FileEvent support.

	(EventFetcher.add_timer): Remove all cancelled timers when a new
	timer is added.  Not doing this resulted in the possibility that a
	cancelled timer blocked an uncancelled timer, with the symptom
	that mw_clock stopped.

2001-01-14    <petli@cendio.se>

	* event.py (EventFetcher.next_event): 
	(EventFetcher.add_file): 
	(FileEvent):
	Added support for file events to the EventFetcher.  File events
	are generated when files are ready to be read or written.

	* inspect.py: New WindowManager mixin, which allows a special
	client program to evaluate Python expressions within PLWM.  This
	can be used to inspect PLWMs data structures (hence its name) and
	also to change things in the PLWM.

2001-01-13    <petli@cendio.se>

	* focus.py (FocusHandler.move_focus): Allow focus to change even
	when there is only one client.  Up until now focus couldn't change
	if there was only one window, resulting in it not being possible
	to activate it or normalize pointer position.  This bug wasn't
	found previously, since there always was the xmodewin client on
	all screens...

	* mw_biff.py (ModeWindowBiff.__wm_init__): Added check for unset
	$MAIL.  Print an error and disable mw_biff if no mailspool can be
	found. 

Fri Jan 12 13:20:13 2001  Peter Liljenberg  <petli@cendio.se>

	* keys.py (KeyHandler._keyevent): Replaces _keypress, as we now
	listen for both KeyPress and KeyRelease events.  The special
	modifier "R_" is used to add methods for keyrelease events.

2001-01-12    <petli@cendio.se>

	* modestatus.py: 
	* modewindow.py: 
	* mw_clock.py: 
	* mw_biff.py: 
	Move the separate utilities into PLWM proper, to avoid having four
	processes a 3Mb hanging around for these trivial services.
	Support for old xmodewin is now broken, as modestatus has been
	changed to use modewindow instead of modewinctl, and their
	interfaces are not similar.  Also, the new modewindow doesn't
	listen for properties, so its fully PLWM internal.
	
2001-01-11    <petli@cendio.se>

	* wmanager.py (Screen.add_internal_window): 
	(Screen.remove_internal_window): 
	(Screen.get_internal_window): 
	(WindowManager.handle_event): 
	(Screen.handle_event): 
	(Client.handle_event):
	Added support for low-level internal windows, which simply are
	assumed to have an handle_event method, like clients.

	* wmanager.py (WindowManager.brave_loop): 
	(WindowManager.loop): 
	(WindowManager.quit):
	Replaced ad-hoc method of quitting PLWM with the more elegant
	quit() method.

	* outline.py (calculate_parts):
	* views.py (ViewHandler.view_create): Update append calls to
	Python 2.0 semantics. 

2001-01-10    <petli@cendio.se>

	* wmanager.py (Client.handle_property_notify): Only listen for
	changes to WM_NORMAL_HINTS, and ignore all other ICCCM
	properties.

2000-12-14    <petli@cendio.se>

	* wmanager.py (Client.client_in_list): Obsoleted by client
	filters, and hence removed.

	(WindowManager.brave_loop): Catch KeyboardInterrupt, to exit
	quietly and nicely on Ctrl-C.

	* cycle.py: Completely rewritten.  There is now a general
	Cycle class, using client filters to get the set of clients to
	cycle among.  A CycleKeys keyhandler template is also provided.

	* moveresize.py (MoveResizeKeys.__init__): Fetch keyboard grabbing
	errors.

	* wmanager.py (Screen.query_clients):
	(WindowManager.query_clients): 
	Use filters instead of the mapped/unmapped arguments.

	(Client.activate): Deiconify if necessary.

Fri Dec  1 13:55:54 2000  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (Client.configure): Uses client_maxsize to limit
	how large a window is allowed to be when it resizes itself.

2000-11-12    <petli@cendio.se>

	* cycle.py (CycleUnmapped): 
	* moveresize.py (MoveResizeOutline): Use the new outline
	functionality. 

	* outline.py: Rewrote Outline class to be a Client mixin class.
	This makes it easier to replace the outline drawing method,
	e.g. from xor to shaped windows.

	* wmanager.py (Screen.__init__): Ugly kludge to make sure
	that wm.current_screen is set when initialising clients.

2000-10-31    <petli@cendio.se>

	* wmanager.py (Client.start_iconified_clients): 
	* views.py (ViewHandler.view_find_with_client): 
	(ViewHandler.view_always_visible_clients): 
	* border.py: (BorderClient.no_border_clients):
	* focus.py (FocusClient.move_focus_ignore_clients):
	Converted from old client_in_list() to new filter functions. 
	
	* cfilter.py: Added module.

	* keys.py (modifiers): 
	(KeyHandler._keypress): Added support for the modifier "Any",
	allowing a key to be bound no matter the modifier state.

Mon Jul 17 17:07:55 2000  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (Client.follow_size_hints): Still more silly size
	hints bugs.  This time, a window would snap between
	minsize and 2*minsize, and then allow all sizes above that if a
	minsize is set but no resize increment.  Fixed by shuffling some
	code blocks around.

Tue Jul  4 19:36:15 2000  Peter Liljenberg  <petli@cendio.se>

	* focus.py (JumpstartClient.__client_init__): Check that the
	window will not be iconified on startup before activating it.

Tue Jul  4 19:32:32 2000  Morgan Eklf <morgan@cendio.se>

        * focus.py(JumpstartClient): New. Windows get focus when opened.
	
Tue Jun 27 17:48:09 2000  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (Client.follow_size_hints): Fixed more errors with
	base sizes.  If no base size is provided, the minimum size should
	be used instead, and now PLWM does that.

	(Screen._register_cycle_roots): 
	(Screen._cleanup_cycle_roots): 
	(WindowManager._cleanup_cycle_roots):
	(WindowManager._register_cycle_roots): 
	Added support for circular reference detection with Cyclops.
	

Mon May 29 14:54:18 2000  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (Client.follow_size_hints): Base width and height
	was erroneously added to the w/h if size was adjusted to min or
	max bounds.

Fri May 12 18:07:32 2000  Peter Liljenberg  <petli@cendio.se>

	* moveresize.py (MoveResizeKeys): A template class providing most
 	of the code needed in a keyhandler for moving and resizing
	windows.  The user merely has to subclass it and define key
	bindings.
	

Thu Mar 23 11:59:08 2000  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (Client.withdraw): Break circular references in
 	self.dispatch when the client is withdrawn to avoid memory leaks.

2000-03-08    <petli@signum.se>

	* modestatus.py: Created.  Improve display of window manager
	operation, where a default message can be tempararily replaced
	with other information.  First implementations of this is a new
	window title display and geometry information when resizing.

	* wmanager.py (Client.get_title): 
	(Client.base_size): Added.
	

2000-02-10    <petli@cendio.se>

	* border.py (BorderClient.__client_init__): 
	* cycle.py (CycleUnmapped.__init__): 
	Use the rewritten font and color handling.
	
	* color.py: Rewritten as font.py.

	* font.py: Fully rewritten.  Out goes the set_font for defining
	symbolic font names, in goes get_font_res to fetch fonts based on
	X resources.  Also more stable, by being able to provide default
	fonts such as "fixed".

	* wmanager.py (WindowManager.add_command_event): 
	(WindowManager.sigchld_handler): 
	(Screen.system): 
	(WindowManager.system): Replace the rather coarse os.system with
	our own.  Features: DISPLAY can be set to get X clients to appear
	on the current screen in multihead systems.  When a child process
	exits an event can be generated to notify modules, e.g. to be able
	to restart it.

	(Screen.__init__): Start to use resources, still in a quite
	subdued way.

2000-02-08    <petli@cendio.se>

	* keys.py (KeyHandler._cleanup): Break circular reference to avoid
	memory leaks: self.rawbindings and self.bindings contain methods
	instantiated on self, so clear them.  Eeew, that bug was hard to
	track down...

Thu Feb  3 14:41:52 2000  Peter Liljenberg  <petli@cendio.se>

	* modewinctl.py (ModeWinControl.set_strings): Updated to the new
	class errors.

Fri Jan 28 16:53:25 2000  Peter Liljenberg  <petli@cendio.se>

	* views.py (View.store_tags): 
	(View.fetch_tags): 
	(ViewHandler.view_tag): 
	(ViewHandler.view_find_tag): 
	(XMW_ViewHandler.view_xmw_update): 
	(View.tag): 
	(View.has_tag): 
	(View.get_tags): Views can be tagged with an arbitrary string,
	which can then be used as a search criteria for switching views.

Mon Jan 10 10:41:42 2000  Peter Liljenberg  <petli@cendio.se>

	* keys.py (KeyHandler.__init__): 
	(KeyGrabKeyboard.__init__): Now takes a WindowManager and an
	EventDispatcher as arguments, instead of a Screen, to use the
	better event handling.

	* wmanager.py (Screen.handle_event): 
	(WindowManager.handle_event): Use the improved event handling by
	letting the WindowManager keep a dispatcher which sets event masks
	on all the screens.

	* event.py (EventDispatcher, WindowDispatcher, SlaveDispatcher):
	Better event handling by abstracting it a bit.

	* modetitle.py: Forgot to adapt to Python packages.

Tue Jan  4 10:39:15 2000  Peter Liljenberg  <petli@cendio.se>

	* border.py (BorderClient.__client_init__): 
	* focus.py (FocusClient.__client_init__): 
	* modetitle.py (ModeTitleClient.__client_init__): 
	Don't mess with calling the __init__ of all client mixin classes,
	by letting Client.__init__ call all of the special initalisers
	__client_init__ instead.
	
Mon Jan  3 18:58:38 2000  Peter Liljenberg  <petli@cendio.se>

	* views.py (View.enter): 
	(View.leave): 
	(View.fetch_winconf): 
	(View.store_winconf): 
	(WinConf.get_tuple): Also remember where the pointer is on the
	screen.  This also required that the view winconf property was
	redesigned to be able to store more data than just winconfs.

	* wmanager.py (Client.warppointer): Default pointer coordinates
	can now be specified on a per-client basis.

	* focus.py (FocusHandler.move_focus): 
	(FocusHandler.get_client_pos): 
	Move focus between windows, at least
	vagely based on their screen coordinates.

	* wmanager.py (Client.get_top_edge): 
	(Client.get_top_edge): 
	(Client.get_bottom_edge): 
	(Client.get_left_edge): 
	(WindowManager.query_clients): Added to facilitate moving clients,
	changing focus etc.

Mon Dec 20 17:56:44 1999  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (WindowManager.__init__):  When starting, do not add
	any ole window as a client, just those that seems to have been
	managed already.  Now Netscape won't flunk out when PLWM is
	restarted... 

Tue Nov 23 18:00:41 1999  Peter Liljenberg  <petli@cendio.se>

	* keys.py (KeyHandler._internal_timeout): 
	(KeyHandler.__init__): Fixed memory leak: self.timer.type was
	self, a circular reference which wasn't broken.  Now
	self.timer.type is str(self) instead, no reference circles.

Wed Nov 17 11:26:10 1999  Peter Liljenberg  <petli@cendio.se>

	* keys.py (KeyHandler._cleanup):
	(KeyHandler._internal_timeout): New functions to handle timeouts
	more gracefully.

	* wmanager.py (EventFetcher.next_event): Make it possible to
	cancel timer events.  Debug timer events.

	(do_debug): New debugging code.

Fri Nov 12 19:09:45 1999  Peter Liljenberg  <petli@cendio.se>

	* wmanager.py (EventFetcher.next_event): Fix typo to get timer
	events working. 

Mon Nov  8 10:26:49 1999  Peter Liljenberg  <petli@cendio.se>

	* deltamove.py (DeltaMove.get): Catch overflow error.

1999-10-15    <petli@cendio.se>

	* keys.py (KeyGrabber.__init__): Added wm parameter.
	(KeyHandler.__init__): Added timeout option.

	* wmanager.py (TimerEvent, EventFetcher): Wrap X event handling
	in a select loop, thus enabling timer events (and later file
	events too).

1999-10-14    <petli@cendio.se>

	* wmanager.py (WindowManager.handle_event): 
	(WindowManager.bad_window_error_handler): 
	(WindowManager.remove_client): 
	(Client.withdraw): Don't try to manipulate a withdrawn window if
	it is destroyed already.
	(Client.follow_size_hints): Didn't work when WMSizeHint wasn't
	set. 

1999-10-13    <petli@cendio.se>

	* views.py (View.enter): Skip the old error handling now. Yay!

	* wmanager.py (Client.withdraw): Do housekeeping in withdrawing
	clients. 

	* wmanager.py (WindowManager.bad_window_error_handler): 
	(WindowManager.__init__): Handle BadWindow and BadDrawable
	errors. 

1999-10-07    <petli@cendio.se>

	* wmanager.py (Client.property_notify_event): Ignore BadWindow
	errors.

1999-10-04    <petli@cendio.se>

	* getxopt.py (stdopts): Provide a dictionary of standard options.

	* wmanager.py (Client.deiconify): 
	(Client.moveresize): 
	* views.py (View.enter): Moveresizing can be delayed if the client
	is iconified.  This is to make it less expensive to change a view.

	* modetitle.py (ModeTitleClient._mtc_property_notify_event): Only
	update title in mode window if it changed for the focused window.

1999-10-01    <petli@cendio.se>

	* getxopt.py: Written.

1999-09-30    <petli@cendio.se>

	* views.py (View.enter): Ignore BadWindow erros to speed up view
	change. 
	(View.leave): Remove WINCONF property so we don't spam the root
	window with properties.
	(XMW_ViewHandler): New class.

	* wmanager.py (Client): Check if client is withdrawn
	before doing anything.  Moved map() and unmap() into deiconify()
	and iconify().

1999-09-28    <petli@cendio.se>

	* wmanager.py (WindowManager.remove_client): cut'n'paste mistake,
	used event.window.id instead of c.window.id.

	* deltamove.py: Got zero division error when X time became higher
	than 0x7ffffff.

1999-09-27    <petli@cendio.se>

	* wmanager.py (Client.unmap): 
	(WindowManager.handle_event): Correctly handle withdrawn clients.
	
	* wmanager.py (Client.follow_size_hints): 
	* moveresize.py (MoveResize.__init__): Don't calculate
	diff_widht/diff_height, use WMNormalHints basesize instead.

	* modewinctl.py (ModeWinControl): Rewritten to use the new,
	smarter, xmodewindow.

	* modetitle.py: Formerly known as the last 1/3 of modewinctl.py

Thu Sep 23 20:42:05 1999  Peter Liljenberg  <petli@cendio.se>

	* modewinctl.py: 
	* views.py: Properties ICCCMified.

	* focus.py (FocusHandler.focus_to_ptr): Set focus ICCCM style. 

	* wmanager.py (Client.__init__): 
	(Client.property_notify_event): Fetch WMHints.

1999-09-21    <petli@cendio.se>

	* modewinctl.py: Removed dependencies on WindowManager
	class from ModeWinControl and put them in the child class
	ModeClientControl instead.
	ModeTitleClient now tracks window title changes.
	

1999-09-20    <petli@cendio.se>

	* modewinctl.py: New file, furry features.

1999-09-17    <petli@cendio.se>

	* views.py (ViewHandler.view_has_client): Search for more than one
	name, and beep if not found.

	(ViewHandler.get_next_view_id, ViewHandler.store_views,
	ViewHandler.fetch_views, ViewHandler.leave_view,
	WinConf.get_tuple, View.__init__, View.store_winconf,
	View.fetch_winconf, View.leave, ViewHandler.__init__,
	ViewHandler.clear_views):
	Store view configuration in properties to make it possible to
	recreate the views when plwm is restarted.
	
	* cycle.py (CycleUnmapped.end): 
	(CycleMapped.mark): Use Client.warppointer.

	* wmanager.py (Client.warppointer): Written.

	* moveresize.py (MoveResize.end): Pointer didn't move with the
	window if its coordinates was (0, 0).