Specify property size in 32-bit units, not bytes.
[gwm.git] / ChangeLog
blob25889d295012e89fb1e5610539510456e779a393
1 2012-02-01  Gary Wong  <gtw@gnu.org>
3         * decorate-render.c (decorate_render_init): Specify property size
4         in 32-bit units, not bytes.
6 2012-01-30  Gary Wong  <gtw@gnu.org>
8         * managed.c (managed_property_change): Ignore invalid size increment
9         hints.
11 2010-11-09  Gary Wong  <gtw@gnu.org>
13         * gwm.c (show_error) [USE_RANDR]: Show RANDR errors.
14         (update_crtc, handle_crtc_info) [USE_RANDR]: New functions.
15         (setup_display) [USE_RANDR]: Query CRTC information, if possible.
16         * root.c (root_configure_notify): Handle screen size changes.
17         (root_rr_crtc_change_notify) [USE_RANDR]: New function.
19         * frame.c (build_edges) [USE_RANDR]: Add CRTC edges to list.
20         * menu.c (fit_menu): New function.
21         * gwm.c (point_live, make_area_live): New functions.
22         (place_window) [USE_RANDR]: Keep windows within a CRTC, if possible.
24         * actions.c (window_list_enter): Make windows live upon selection.
25         (window_list_leave): Restore window position if it had been made live.
27 2010-11-05  Gary Wong  <gtw@gnu.org>
29         * decorate-core.c (core_update_window): Ignore childless frames.
30         * decorate-render.c (render_update_window): Likewise.
32 2010-11-01  Gary Wong  <gtw@gnu.org>
34         * window-table.c (table_insert_index, stack_insert): Fix rehashing
35         bug which could corrupt table sizes.
37 2010-06-01  Gary Wong  <gtw@gnu.org>
39         * decorate-render.c (query_metrics): Don't try to load metrics
40         for charsets that don't include the character.
42 2010-03-25  Gary Wong  <gtw@gnu.org>
44         * utf8.c (to_utf8): Fix ISO 8859-1 to UTF-8 conversion.
46 2009-12-06  Gary Wong  <gtw@gnu.org>
48         * root.c (root_reparent_notify): Handle cases where a window is
49         "reparented" to its current parent.
51         * window-table.c (stack_move_above): Treat moving a window above
52         itself as a no-op.
53         (stack_insert_singleton, stack_insert_above, stack_remove)
54         (stack_move_above): Add extra assertions.
56 2009-09-11  Gary Wong  <gtw@gnu.org>
58         * decorate-core.c (decorate_core_init): Moved to the initialisation
59         section.
60         * decorate-render.c (decorate_render_init, decorate_compat_init):
61         Likewise.
62         * window-table.c (table_init, stack_init): Likewise.
63         * gwm.c (setup_display, unknown): Likewise.
64         (init): New function.
65         (main) [HAVE_INIT_SECTION]: Deallocate the initialisation section.
67 2009-09-10  Gary Wong  <gtw@gnu.org>
69         * gwm.c (setup_display): Make sure the root event mask change is
70         atomic with the query of its children.
71         (shutdown_display): Process any remaining MapRequest,
72         ConfigureRequest or CirculateRequest events before closing.
74 2009-09-09  Gary Wong  <gtw@gnu.org>
76         * actions.c (action_window_list_menu): Insert windows into the
77         menu by screen, in bottom-to-top stacking order.
79         * frame.c (synthetic_configure_notify): Ignore Window errors on
80         the SendEvent.
82 2009-09-08  Gary Wong  <gtw@gnu.org>
84         * actions.c (window_list_enter, window_list_leave): New functions.
85         (window_list_activate): Destroy the place holder window.
86         (action_window_list_menu): Add enter and leave actions.
87         * decorate-render.c (render_update_window): Look up menu item
88         icons each time, in case the corresponding window has been
89         destroyed.
90         * frame.c (activate_focus_frame): New function.
91         (frame_enter_notify): Call activate_focus_frame().
93         * menu.c (deactivate_menu_item): New function.
94         (menu_enter_notify, menu_leave_notify): Invoke the menu item's
95         enter and leave actions, if set.
96         (popup_menu): Store the menu item enter and leave actions.
98         * window-table.c (table_hash): Take the hash and size as parameters.
99         All callers changed.
100         (stack_init, stack_destroy, stack_lookup, stack_insert_new)
101         (stack_rehash, stack_insert, stack_insert_new, stack_insert_singleton)
102         (stack_insert_above, stack_remove, stack_move_above)
103         (stack_real_below): New functions.
105         * gwm.c (setup_display): Initialise window_stack, add
106         SubstructureNotify to the root event masks, and add the
107         roots and existing windows to the stack.
108         (shutdown_display): Use the stored stacking order instead of
109         querying it from the server.
110         * root.c (root_create_notify, root_destroy_notify)
111         (root_reparent_notify, root_configure_notify): New functions.
113         * gwm.c (event_time): New function.
115 2009-09-07  Gary Wong  <gtw@gnu.org>
117         * decorate-core.c (handle_get_default_map): We want the property
118         length in format units, not bytes.
119         * decorate-render.c (handle_get_default_map): Likewise.
121 2009-09-07  Gary Wong  <gtw@gnu.org>
123         * gwm.c (setup_display): Add _NET_SUPPORTING_WM_CHECK property to
124         fake window.
126 2009-09-06  Gary Wong  <gtw@gnu.org>
128         * frame.c (update_frame_extents): New function.
129         * gwm.c (start_managing_window): Update _NET_FRAME_EXTENTS property.
130         * managed.c (managed_property_change): Likewise.
132 2009-09-06  Gary Wong  <gtw@gnu.org>
134         * gwm.c (setup_display): Add various EWMH properties to the root
135         and fake windows.
136         (shutdown_display): Remove EWMH root properties.
138 2009-09-06  Gary Wong  <gtw@gnu.org>
140         * decorate-core.c (core_replace_icons): New function.
141         * decorate-render.c (render_picture, assemble_image)
142         (render_replace_icons): New functions.
143         (render_update_window): Draw icons in menus where requested.
144         (decorate_render_init): Look for suitable PictFormats.
145         * gwm.c (start_managing_window): Initialise icons.
146         (unmanage_window): Deallocate icons.
147         (setup_display): Add _NET_WM_ICON property.
149         * managed.c (handle_managed_get_property, async_get_property): Use
150         the window resource ID instead of a pointer to identify the window,
151         to detect if it disappears asynchronously.
152         (handle_get_geometry): New function.
153         (managed_property_change): Handle _NET_WM_ICON, and the icon
154         parameters of WM_HINTS.
155         * menu.c (popup_menu): Allow icons in menus.
156         * actions.c (action_window_list_menu): Add icons to menu.
158 2009-09-03  Gary Wong  <gtw@gnu.org>
160         * decorate-core.c (core_text): Use utf8_next().
161         (core_window_size): Use utf8_length().
163 2009-09-02  Gary Wong  <gtw@gnu.org>
165         * utf8.c (utf8_illegal, utf8_length, utf8_next)
166         (utf8_dup_valid, utf8_dup_valid_len, dup_valid_common): New functions.
167         (to_utf8) [DEBUG]: Add sanity checks.
168         * decorate-render.c (render_text): Use utf8_length() and utf8_next().
169         (text_width): Use utf8_next().
170         * managed.c (managed_property_change): Use utf8_dup_valid_len().
172         * frame.c (recalc_size): Avoid needless C99isms.
173         * gwm.c (place_window): Likewise.
174         * window-table.c (table_hash): Likewise.
176 2009-09-01  Gary Wong  <gtw@gnu.org>
178         * actions.c (action_map_raise, action_window_list_menu)
179         (action_exit, window_list_activate): New functions.
180         * gwm.c (main): Use which_signal -1 to indicate a graceful exit.
182         * menu.c (menu_button_release, popup_menu): Remember the window
183         parameter by resource ID, instead of by pointer.  That way, it is
184         simple to detect whether the window has been destroyed between
185         creation and activation of the menu.
187         * menu.c (menu_enter_notify): Don't try to measure the active item
188         when nothing is active.
190         * menu.c (destroy_menu): Don't free NULL labels.
191         (popup_menu): Don't strdup() NULL labels.
193 2009-09-01  Gary Wong  <gtw@gnu.org>
195         * actions.c (action_iconify_window, action_deiconify_window): New
196         functions.
197         * keyboard.c (establish_grabs): Replace NUM_KEY_ACTIONS with new
198         num_key_actions symbol.
199         * managed.c (set_managed_state, iconic_to_normal): Moved from gwm.c.
200         (normal_to_iconic): New function.
201         * gwm.c (handle_client_message): Use new normal_to_iconic() function.
202         * root.c (root_key_press): Likewise.
204 2009-09-01  Gary Wong  <gtw@gnu.org>
206         * menu.c, menu.h: New files.
207         * actions.c: Added callback parameter to all actions.  All callers
208         changed.
209         (action_root_menu, action_window_menu): New functions.
210         * decorate-core.c (core_update_window): Draw menu items.
211         (core_window_size): New function.
212         * decorate-render.c (render_update_window): Draw menu items.
213         (text_width, render_window_size): New functions.
214         * frame.c (recalc_size): Call window_size() to obtain feedback
215         dimensions.
216         (frame_button_press): Pop up a menu on button 2 presses.
217         * gwm.c (show_window): Annotate menu windows.
218         (setup_display): Initialise window_size.
219         (start_managing_window): Add OwnerGrabButton to frame windows.
220         (setup_display): Add OwnerGrabButton to the roots.
222 2009-09-01  Gary Wong  <gtw@gnu.org>
224         * gwm.c (handle_events): Replace passive_grab with pointer_demux,
225         which redirects events on the client side.
226         (start_managing_window): Set initial event mask for
227         the frame button window, instead of an explicit GrabButton.
228         * button.c (button_button_press, button_button_release): Use
229         pointer_demux instead of GrabButton.
230         (button_enter_notify, button_leave_notify): Inspect event parameters
231         to determine which window is entered/left.
232         * frame.c (frame_button_press, frame_button_release): Use
233         pointer_demux instead of passive_grab.
234         (frame_motion_notify, frame_destroy_notify): Likewise.
235         (frame_enter_notify): Ignore events when pointer_demux is set.
236         * window-table.c (forget_window): Remove pointer_demux from
237         forgotten windows.
239 2009-08-31  Gary Wong  <gtw@gnu.org>
241         * gwm.c (show_atom): Declare predefined_names[] as const.
242         (show_error): Declare render_strings[] as const.
243         (show_event): Declare event_names[] as const.
244         (setup_display): Use auto storage class for wm_atom_str.
246 2009-08-31  Gary Wong  <gtw@gnu.org>
248         * gwm.c (start_managing_window): Create "border region" input-only
249         windows, to allow setting different cursors on various border parts.
251         * frame.c (frame_configure_notify): Update the geometry of the
252         border regions.
253         * decorate-core.c (decorate_core_init): Cursor indices were rearranged.
254         * decorate-render.c (decorate_compat_init): Likewise.
256         * frame.c (frame_button_press): Do not recognise a passive grab
257         propagated from the client.
259 2009-08-31  Gary Wong  <gtw@gnu.org>
261         * frame.c (frame_t, frame_xb): Make window decorations optional.
262         (frame_blr): New function.
263         (frame_b, frame_l, frame_r): Invoke frame_blr().
264         (deactivate_focus_frame): Moved from gwm.c.
265         (frame_button_press, frame_enter_notify): Make window decorations
266         optional.
267         * gwm.c (start_managing_window): Likewise.
268         (setup_display): Add _MOTIF_WM_HINTS property.
269         * managed.c (managed_property_change): Handle _MOTIF_WM_HINTS property.
270         (match_managed_shape): Retrieve _MOTIF_WM_HINTS when a client
271         window is no longer bounding shaped.
273 2009-08-31  Gary Wong  <gtw@gnu.org>
275         * button.c (button_size, button_xb): New functions.  All references
276         to former constants updated.
277         * frame.c (frame_t, frame_b, frame_l, frame_r, frame_xb): New
278         functions.  All references to former constants updated.
279         (translate_child_to_frame, translate_frame_to_child): Moved
280         from gwm.c.
281         (apply_size_constraints): Likewise.
283 2009-08-30  Gary Wong  <gtw@gnu.org>
285         * frame.c (frame_button_release): Ignore the event unless the
286         window was the one to establish the passive grab.
287         (frame_destroy_notify): New function.
289 2009-08-30  Gary Wong  <gtw@gnu.org>
291         * decorate-render.c (lookup_face): New function.
292         (query_metrics, query_glyph, replace_glyph, render_text): Take style
293         into consideration.
294         (render_update_window): Use styles, as appropriate.
295         (decorate_render_init): Remember fontconfig charsets and patterns
296         for each face in each style.
297         (decorate_render_done): Clean up fontconfig charsets and patterns.
299 2009-08-29  Gary Wong  <gtw@gnu.org>
301         * frame.c (build_edges): Use xmalloc() instead of malloc().
303 2009-08-29  Gary Wong  <gtw@gnu.org>
305         * managed.c (managed_property_change): Use _NET_WM_NAME in preference
306         to WM_NAME.
307         (async_get_property): New function.
308         (managed_property_notify): Use async_get_property.
309         * gwm.c (start_managing_window): Initialise net_wm_name.
310         (setup_display): Add _NET_WM_NAME property.
312 2009-08-28  Gary Wong  <gtw@gnu.org>
314         * frame.c (recalc_size): Initialise feedback->u.feedback.
316 2009-08-28  Gary Wong  <gtw@gnu.org>
318         * gwm.c (unmanage_window): Put the parent of the unmanaged child
319         into a childless state, so that lingering events can be handled
320         correctly.
321         (handle_destroy_window): New function.
322         (show_window): Annotate childless windows.
323         * managed.c (withdrawn_map_request, withdrawn_configure_request): New
324         functions.
326 2009-08-28  Gary Wong  <gtw@gnu.org>
328         * decorate-render.c (decorate_render_init): Cast FONT_NAME
329         to (FcChar8 *).
331 2009-08-28  Gary Wong  <gtw@gnu.org>
333         * gwm.c (shutdown_display): Reparent the windows in strict stacking
334         order.
336 2009-08-28  Gary Wong  <gtw@gnu.org>
338         * decorate-render.c (query_metrics, render_text, render_update_window,
339         decorate_render_init): Replace FONT_FAMILY, FONT_WEIGHT,
340         FONT_PIXEL_SIZE, FONT_LOAD_TARGET with FONT_NAME.
342 2009-08-28  Gary Wong  <gtw@gnu.org>
344         * decorate-render.c (query_metrics, replace_glyph): Don't
345         bother comparing the first cache line with itself.
347 2009-08-27  Gary Wong  <gtw@gnu.org>
349         * decorate-render.c, decorate-render.h: New files.  Implement
350         window decoration with RENDER extension (text only, so far).
351         * gwm.c (setup_display, shutdown_display): Set up and clean up
352         RENDER extension when available.
353         (show_error): Show RENDER errors.
355         * decorate-core.c (core_update_window): Issue SetClipRectangles
356         request.
358 2009-08-27  Gary Wong  <gtw@gnu.org>
360         * gwm.c (sync_with_callback): Perform the sequence comparison
361         with unsigned arithmetic, so that overflow semantics are
362         well-defined.
364 2009-08-27  Gary Wong  <gtw@gnu.org>
366         * frame.c (recalc_size): Implement edge resistance when resizing
367         frames.
368         (edge_resist): New function.
370 2009-08-26  Gary Wong  <gtw@gnu.org>
372         * frame.c (frame_motion_notify, frame_button_release): Implement
373         edge resistance when moving frames.
374         (build_edges, free_edges, h_edge_compare, v_edge_compare): New
375         functions.
377 2009-08-25  Gary Wong  <gtw@gnu.org>
379         * frame.c (frame_motion_notify): Ignore single pixel movements, and
380         account for window border.
382 2009-08-25  Gary Wong  <gtw@gnu.org>
384         * window-table.c (queue_window_update): Mark the update box as
385         uncleared if we enlarge the bounding box.
387 2009-08-25  Gary Wong  <gtw@gnu.org>
389         * gwm.c, gwm.h (warning, fatal): Export warning and fatal functions.
391 2009-08-25  Gary Wong  <gtw@gnu.org>
393         * window-table.c (queue_window_update): Properly compute the
394         update region when the old region was empty.
396 2009-08-24  Gary Wong  <gtw@gnu.org>
398         * gwm.c (shutdown_display) [DEBUG]: Call muntrace() only when
399         [HAVE_MTRACE].
401 2009-08-23  Gary Wong  <gtw@gnu.org>
403         * managed.c (managed_shape_notify): Respond to ShapeNotify events
404         only when they describe modifications to the bounding region.
406 2009-08-22  Gary Wong  <gtw@gnu.org>
408         * gwm.c (start_managing_window): Send a synthetic ConfigureNotify
409         to the client, because we've almost certainly moved their window.
411 2009-08-22  Gary Wong  <gtw@gnu.org>
413         * actions.c, actions.h, button.c, button.h, decorate-core.c,
414         decorate-core.h, frame.c, frame.h, gwm.c, gwm.h, keyboard.c,
415         keyboard.h, managed.c, managed.h, root.c, root.h, utf8.c, utf8.h,
416         window-table.c, window-table.h, Makefile.am, configure.ac: New
417         files, and version 1.0 release.