summaryrefslogtreecommitdiff
path: root/ChangeLog
blob: b11dd9460efc5a4bd6961e06e0e11a7ed21a187d (plain)
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
2012-01-30  Gary Wong  <gtw@gnu.org>

	* managed.c (managed_property_change): Ignore invalid size increment
	hints.

2010-11-09  Gary Wong  <gtw@gnu.org>

	* gwm.c (show_error) [USE_RANDR]: Show RANDR errors.
	(update_crtc, handle_crtc_info) [USE_RANDR]: New functions.
	(setup_display) [USE_RANDR]: Query CRTC information, if possible.
	* root.c (root_configure_notify): Handle screen size changes.
	(root_rr_crtc_change_notify) [USE_RANDR]: New function.

	* frame.c (build_edges) [USE_RANDR]: Add CRTC edges to list.
	* menu.c (fit_menu): New function.
	* gwm.c (point_live, make_area_live): New functions.
	(place_window) [USE_RANDR]: Keep windows within a CRTC, if possible.

	* actions.c (window_list_enter): Make windows live upon selection.
	(window_list_leave): Restore window position if it had been made live.

2010-11-05  Gary Wong  <gtw@gnu.org>

	* decorate-core.c (core_update_window): Ignore childless frames.
	* decorate-render.c (render_update_window): Likewise.

2010-11-01  Gary Wong  <gtw@gnu.org>

	* window-table.c (table_insert_index, stack_insert): Fix rehashing
	bug which could corrupt table sizes.

2010-06-01  Gary Wong  <gtw@gnu.org>

	* decorate-render.c (query_metrics): Don't try to load metrics
	for charsets that don't include the character.

2010-03-25  Gary Wong  <gtw@gnu.org>

	* utf8.c (to_utf8): Fix ISO 8859-1 to UTF-8 conversion.

2009-12-06  Gary Wong  <gtw@gnu.org>

	* root.c (root_reparent_notify): Handle cases where a window is
	"reparented" to its current parent.

	* window-table.c (stack_move_above): Treat moving a window above
	itself as a no-op.
	(stack_insert_singleton, stack_insert_above, stack_remove)
	(stack_move_above): Add extra assertions.

2009-09-11  Gary Wong  <gtw@gnu.org>

	* decorate-core.c (decorate_core_init): Moved to the initialisation
	section.
	* decorate-render.c (decorate_render_init, decorate_compat_init):
	Likewise.
	* window-table.c (table_init, stack_init): Likewise.
	* gwm.c (setup_display, unknown): Likewise.
	(init): New function.
	(main) [HAVE_INIT_SECTION]: Deallocate the initialisation section.

2009-09-10  Gary Wong  <gtw@gnu.org>

	* gwm.c (setup_display): Make sure the root event mask change is
	atomic with the query of its children.
	(shutdown_display): Process any remaining MapRequest,
	ConfigureRequest or CirculateRequest events before closing.

2009-09-09  Gary Wong  <gtw@gnu.org>

	* actions.c (action_window_list_menu): Insert windows into the
	menu by screen, in bottom-to-top stacking order.

	* frame.c (synthetic_configure_notify): Ignore Window errors on
	the SendEvent.

2009-09-08  Gary Wong  <gtw@gnu.org>

	* actions.c (window_list_enter, window_list_leave): New functions.
	(window_list_activate): Destroy the place holder window.
	(action_window_list_menu): Add enter and leave actions.
	* decorate-render.c (render_update_window): Look up menu item
	icons each time, in case the corresponding window has been
	destroyed.
	* frame.c (activate_focus_frame): New function.
	(frame_enter_notify): Call activate_focus_frame().

	* menu.c (deactivate_menu_item): New function.
	(menu_enter_notify, menu_leave_notify): Invoke the menu item's
	enter and leave actions, if set.
	(popup_menu): Store the menu item enter and leave actions.

	* window-table.c (table_hash): Take the hash and size as parameters.
	All callers changed.
	(stack_init, stack_destroy, stack_lookup, stack_insert_new)
	(stack_rehash, stack_insert, stack_insert_new, stack_insert_singleton)
	(stack_insert_above, stack_remove, stack_move_above)
	(stack_real_below): New functions.

	* gwm.c (setup_display): Initialise window_stack, add
	SubstructureNotify to the root event masks, and add the
	roots and existing windows to the stack.
	(shutdown_display): Use the stored stacking order instead of
	querying it from the server.
	* root.c (root_create_notify, root_destroy_notify)
	(root_reparent_notify, root_configure_notify): New functions.

	* gwm.c (event_time): New function.

2009-09-07  Gary Wong  <gtw@gnu.org>

	* decorate-core.c (handle_get_default_map): We want the property
	length in format units, not bytes.
	* decorate-render.c (handle_get_default_map): Likewise.

2009-09-07  Gary Wong  <gtw@gnu.org>

	* gwm.c (setup_display): Add _NET_SUPPORTING_WM_CHECK property to
	fake window.

2009-09-06  Gary Wong  <gtw@gnu.org>

	* frame.c (update_frame_extents): New function.
	* gwm.c (start_managing_window): Update _NET_FRAME_EXTENTS property.
	* managed.c (managed_property_change): Likewise.

2009-09-06  Gary Wong  <gtw@gnu.org>

	* gwm.c (setup_display): Add various EWMH properties to the root
	and fake windows.
	(shutdown_display): Remove EWMH root properties.

2009-09-06  Gary Wong  <gtw@gnu.org>

	* decorate-core.c (core_replace_icons): New function.
	* decorate-render.c (render_picture, assemble_image)
	(render_replace_icons): New functions.
	(render_update_window): Draw icons in menus where requested.
	(decorate_render_init): Look for suitable PictFormats.
	* gwm.c (start_managing_window): Initialise icons.
	(unmanage_window): Deallocate icons.
	(setup_display): Add _NET_WM_ICON property.

	* managed.c (handle_managed_get_property, async_get_property): Use
	the window resource ID instead of a pointer to identify the window,
	to detect if it disappears asynchronously.
	(handle_get_geometry): New function.
	(managed_property_change): Handle _NET_WM_ICON, and the icon
	parameters of WM_HINTS.
	* menu.c (popup_menu): Allow icons in menus.
	* actions.c (action_window_list_menu): Add icons to menu.

2009-09-03  Gary Wong  <gtw@gnu.org>

	* decorate-core.c (core_text): Use utf8_next().
	(core_window_size): Use utf8_length().

2009-09-02  Gary Wong  <gtw@gnu.org>

	* utf8.c (utf8_illegal, utf8_length, utf8_next)
	(utf8_dup_valid, utf8_dup_valid_len, dup_valid_common): New functions.
	(to_utf8) [DEBUG]: Add sanity checks.
	* decorate-render.c (render_text): Use utf8_length() and utf8_next().
	(text_width): Use utf8_next().
	* managed.c (managed_property_change): Use utf8_dup_valid_len().

	* frame.c (recalc_size): Avoid needless C99isms.
	* gwm.c (place_window): Likewise.
	* window-table.c (table_hash): Likewise.

2009-09-01  Gary Wong  <gtw@gnu.org>

	* actions.c (action_map_raise, action_window_list_menu)
	(action_exit, window_list_activate): New functions.
	* gwm.c (main): Use which_signal -1 to indicate a graceful exit.

	* menu.c (menu_button_release, popup_menu): Remember the window
	parameter by resource ID, instead of by pointer.  That way, it is
	simple to detect whether the window has been destroyed between
	creation and activation of the menu.

	* menu.c (menu_enter_notify): Don't try to measure the active item
	when nothing is active.

	* menu.c (destroy_menu): Don't free NULL labels.
	(popup_menu): Don't strdup() NULL labels.

2009-09-01  Gary Wong  <gtw@gnu.org>

	* actions.c (action_iconify_window, action_deiconify_window): New
	functions.
	* keyboard.c (establish_grabs): Replace NUM_KEY_ACTIONS with new
	num_key_actions symbol.
	* managed.c (set_managed_state, iconic_to_normal): Moved from gwm.c.
	(normal_to_iconic): New function.
	* gwm.c (handle_client_message): Use new normal_to_iconic() function.
	* root.c (root_key_press): Likewise.

2009-09-01  Gary Wong  <gtw@gnu.org>

	* menu.c, menu.h: New files.
	* actions.c: Added callback parameter to all actions.  All callers
	changed.
	(action_root_menu, action_window_menu): New functions.
	* decorate-core.c (core_update_window): Draw menu items.
	(core_window_size): New function.
	* decorate-render.c (render_update_window): Draw menu items.
	(text_width, render_window_size): New functions.
	* frame.c (recalc_size): Call window_size() to obtain feedback
	dimensions.
	(frame_button_press): Pop up a menu on button 2 presses.
	* gwm.c (show_window): Annotate menu windows.
	(setup_display): Initialise window_size.
	(start_managing_window): Add OwnerGrabButton to frame windows.
	(setup_display): Add OwnerGrabButton to the roots.

2009-09-01  Gary Wong  <gtw@gnu.org>

	* gwm.c (handle_events): Replace passive_grab with pointer_demux,
	which redirects events on the client side.
	(start_managing_window): Set initial event mask for
	the frame button window, instead of an explicit GrabButton.
	* button.c (button_button_press, button_button_release): Use
	pointer_demux instead of GrabButton.
	(button_enter_notify, button_leave_notify): Inspect event parameters
	to determine which window is entered/left.
	* frame.c (frame_button_press, frame_button_release): Use
	pointer_demux instead of passive_grab.
	(frame_motion_notify, frame_destroy_notify): Likewise.
	(frame_enter_notify): Ignore events when pointer_demux is set.
	* window-table.c (forget_window): Remove pointer_demux from
	forgotten windows.

2009-08-31  Gary Wong  <gtw@gnu.org>

	* gwm.c (show_atom): Declare predefined_names[] as const.
	(show_error): Declare render_strings[] as const.
	(show_event): Declare event_names[] as const.
	(setup_display): Use auto storage class for wm_atom_str.

2009-08-31  Gary Wong  <gtw@gnu.org>

	* gwm.c (start_managing_window): Create "border region" input-only
	windows, to allow setting different cursors on various border parts.

	* frame.c (frame_configure_notify): Update the geometry of the
	border regions.
	* decorate-core.c (decorate_core_init): Cursor indices were rearranged.
	* decorate-render.c (decorate_compat_init): Likewise.

	* frame.c (frame_button_press): Do not recognise a passive grab
	propagated from the client.

2009-08-31  Gary Wong  <gtw@gnu.org>

	* frame.c (frame_t, frame_xb): Make window decorations optional.
	(frame_blr): New function.
	(frame_b, frame_l, frame_r): Invoke frame_blr().
	(deactivate_focus_frame): Moved from gwm.c.
	(frame_button_press, frame_enter_notify): Make window decorations
	optional.
	* gwm.c (start_managing_window): Likewise.
	(setup_display): Add _MOTIF_WM_HINTS property.
	* managed.c (managed_property_change): Handle _MOTIF_WM_HINTS property.
	(match_managed_shape): Retrieve _MOTIF_WM_HINTS when a client
	window is no longer bounding shaped.

2009-08-31  Gary Wong  <gtw@gnu.org>

	* button.c (button_size, button_xb): New functions.  All references
	to former constants updated.
	* frame.c (frame_t, frame_b, frame_l, frame_r, frame_xb): New
	functions.  All references to former constants updated.
	(translate_child_to_frame, translate_frame_to_child): Moved
	from gwm.c.
	(apply_size_constraints): Likewise.

2009-08-30  Gary Wong  <gtw@gnu.org>

	* frame.c (frame_button_release): Ignore the event unless the
	window was the one to establish the passive grab.
	(frame_destroy_notify): New function.

2009-08-30  Gary Wong  <gtw@gnu.org>

	* decorate-render.c (lookup_face): New function.
	(query_metrics, query_glyph, replace_glyph, render_text): Take style
	into consideration.
	(render_update_window): Use styles, as appropriate.
	(decorate_render_init): Remember fontconfig charsets and patterns
	for each face in each style.
	(decorate_render_done): Clean up fontconfig charsets and patterns.

2009-08-29  Gary Wong  <gtw@gnu.org>

	* frame.c (build_edges): Use xmalloc() instead of malloc().

2009-08-29  Gary Wong  <gtw@gnu.org>

	* managed.c (managed_property_change): Use _NET_WM_NAME in preference
	to WM_NAME.
	(async_get_property): New function.
	(managed_property_notify): Use async_get_property.
	* gwm.c (start_managing_window): Initialise net_wm_name.
	(setup_display): Add _NET_WM_NAME property.

2009-08-28  Gary Wong  <gtw@gnu.org>

	* frame.c (recalc_size): Initialise feedback->u.feedback.

2009-08-28  Gary Wong  <gtw@gnu.org>

	* gwm.c (unmanage_window): Put the parent of the unmanaged child
	into a childless state, so that lingering events can be handled
	correctly.
	(handle_destroy_window): New function.
	(show_window): Annotate childless windows.
	* managed.c (withdrawn_map_request, withdrawn_configure_request): New
	functions.

2009-08-28  Gary Wong  <gtw@gnu.org>

	* decorate-render.c (decorate_render_init): Cast FONT_NAME
	to (FcChar8 *).

2009-08-28  Gary Wong  <gtw@gnu.org>

	* gwm.c (shutdown_display): Reparent the windows in strict stacking
	order.

2009-08-28  Gary Wong  <gtw@gnu.org>

	* decorate-render.c (query_metrics, render_text, render_update_window,
	decorate_render_init): Replace FONT_FAMILY, FONT_WEIGHT,
	FONT_PIXEL_SIZE, FONT_LOAD_TARGET with FONT_NAME.

2009-08-28  Gary Wong  <gtw@gnu.org>

	* decorate-render.c (query_metrics, replace_glyph): Don't
	bother comparing the first cache line with itself.

2009-08-27  Gary Wong  <gtw@gnu.org>

	* decorate-render.c, decorate-render.h: New files.  Implement
	window decoration with RENDER extension (text only, so far).
	* gwm.c (setup_display, shutdown_display): Set up and clean up
	RENDER extension when available.
	(show_error): Show RENDER errors.

	* decorate-core.c (core_update_window): Issue SetClipRectangles
	request.

2009-08-27  Gary Wong  <gtw@gnu.org>

	* gwm.c (sync_with_callback): Perform the sequence comparison
	with unsigned arithmetic, so that overflow semantics are
	well-defined.

2009-08-27  Gary Wong  <gtw@gnu.org>

	* frame.c (recalc_size): Implement edge resistance when resizing
	frames.
	(edge_resist): New function.

2009-08-26  Gary Wong  <gtw@gnu.org>

	* frame.c (frame_motion_notify, frame_button_release): Implement
	edge resistance when moving frames.
	(build_edges, free_edges, h_edge_compare, v_edge_compare): New
	functions.

2009-08-25  Gary Wong  <gtw@gnu.org>

	* frame.c (frame_motion_notify): Ignore single pixel movements, and
	account for window border.

2009-08-25  Gary Wong  <gtw@gnu.org>

	* window-table.c (queue_window_update): Mark the update box as
	uncleared if we enlarge the bounding box.

2009-08-25  Gary Wong  <gtw@gnu.org>

	* gwm.c, gwm.h (warning, fatal): Export warning and fatal functions.

2009-08-25  Gary Wong  <gtw@gnu.org>

	* window-table.c (queue_window_update): Properly compute the
	update region when the old region was empty.

2009-08-24  Gary Wong  <gtw@gnu.org>

	* gwm.c (shutdown_display) [DEBUG]: Call muntrace() only when
	[HAVE_MTRACE].

2009-08-23  Gary Wong  <gtw@gnu.org>

	* managed.c (managed_shape_notify): Respond to ShapeNotify events
	only when they describe modifications to the bounding region.

2009-08-22  Gary Wong  <gtw@gnu.org>

	* gwm.c (start_managing_window): Send a synthetic ConfigureNotify
	to the client, because we've almost certainly moved their window.

2009-08-22  Gary Wong  <gtw@gnu.org>

	* actions.c, actions.h, button.c, button.h, decorate-core.c,
	decorate-core.h, frame.c, frame.h, gwm.c, gwm.h, keyboard.c,
	keyboard.h, managed.c, managed.h, root.c, root.h, utf8.c, utf8.h,
	window-table.c, window-table.h, Makefile.am, configure.ac: New
	files, and version 1.0 release.