1 2015-10-01 Gary Wong <gtw@gnu.org>
3 * actions.c (action_max_window): New function.
4 * gwm.c (handle_client_message): Handle _NET_WM_STATE messages.
5 * managed.c (handle_set_managed_net_state, set_managed_net_state)
6 (enter_zoom, leave_zoom): New functions.
7 (managed_property_change): Handle _NET_WM_STATE property.
9 2014-05-15 Gary Wong <gtw@gnu.org>
11 * gwm.c (handle_crtc_info): Add missing indirection in *cc->ok.
12 (fake_selection_request): Add missing assignment cp.p = p.
14 2014-05-14 Gary Wong <gtw@gnu.org>
16 * gwm.c (start_managing_window): Fix size of values array.
18 2014-05-08 Gary Wong <gtw@gnu.org>
20 * decorate-render.c (decorate_compat_init) [USE_CURSOR]: Load
21 cursors via xcb_cursor_load_cursor (to honour cursor themes
24 2012-02-01 Gary Wong <gtw@gnu.org>
26 * decorate-render.c (decorate_render_init): Specify property size
27 in 32-bit units, not bytes.
29 2012-01-30 Gary Wong <gtw@gnu.org>
31 * managed.c (managed_property_change): Ignore invalid size increment
34 2010-11-09 Gary Wong <gtw@gnu.org>
36 * gwm.c (show_error) [USE_RANDR]: Show RANDR errors.
37 (update_crtc, handle_crtc_info) [USE_RANDR]: New functions.
38 (setup_display) [USE_RANDR]: Query CRTC information, if possible.
39 * root.c (root_configure_notify): Handle screen size changes.
40 (root_rr_crtc_change_notify) [USE_RANDR]: New function.
42 * frame.c (build_edges) [USE_RANDR]: Add CRTC edges to list.
43 * menu.c (fit_menu): New function.
44 * gwm.c (point_live, make_area_live): New functions.
45 (place_window) [USE_RANDR]: Keep windows within a CRTC, if possible.
47 * actions.c (window_list_enter): Make windows live upon selection.
48 (window_list_leave): Restore window position if it had been made live.
50 2010-11-05 Gary Wong <gtw@gnu.org>
52 * decorate-core.c (core_update_window): Ignore childless frames.
53 * decorate-render.c (render_update_window): Likewise.
55 2010-11-01 Gary Wong <gtw@gnu.org>
57 * window-table.c (table_insert_index, stack_insert): Fix rehashing
58 bug which could corrupt table sizes.
60 2010-06-01 Gary Wong <gtw@gnu.org>
62 * decorate-render.c (query_metrics): Don't try to load metrics
63 for charsets that don't include the character.
65 2010-03-25 Gary Wong <gtw@gnu.org>
67 * utf8.c (to_utf8): Fix ISO 8859-1 to UTF-8 conversion.
69 2009-12-06 Gary Wong <gtw@gnu.org>
71 * root.c (root_reparent_notify): Handle cases where a window is
72 "reparented" to its current parent.
74 * window-table.c (stack_move_above): Treat moving a window above
76 (stack_insert_singleton, stack_insert_above, stack_remove)
77 (stack_move_above): Add extra assertions.
79 2009-09-11 Gary Wong <gtw@gnu.org>
81 * decorate-core.c (decorate_core_init): Moved to the initialisation
83 * decorate-render.c (decorate_render_init, decorate_compat_init):
85 * window-table.c (table_init, stack_init): Likewise.
86 * gwm.c (setup_display, unknown): Likewise.
88 (main) [HAVE_INIT_SECTION]: Deallocate the initialisation section.
90 2009-09-10 Gary Wong <gtw@gnu.org>
92 * gwm.c (setup_display): Make sure the root event mask change is
93 atomic with the query of its children.
94 (shutdown_display): Process any remaining MapRequest,
95 ConfigureRequest or CirculateRequest events before closing.
97 2009-09-09 Gary Wong <gtw@gnu.org>
99 * actions.c (action_window_list_menu): Insert windows into the
100 menu by screen, in bottom-to-top stacking order.
102 * frame.c (synthetic_configure_notify): Ignore Window errors on
105 2009-09-08 Gary Wong <gtw@gnu.org>
107 * actions.c (window_list_enter, window_list_leave): New functions.
108 (window_list_activate): Destroy the place holder window.
109 (action_window_list_menu): Add enter and leave actions.
110 * decorate-render.c (render_update_window): Look up menu item
111 icons each time, in case the corresponding window has been
113 * frame.c (activate_focus_frame): New function.
114 (frame_enter_notify): Call activate_focus_frame().
116 * menu.c (deactivate_menu_item): New function.
117 (menu_enter_notify, menu_leave_notify): Invoke the menu item's
118 enter and leave actions, if set.
119 (popup_menu): Store the menu item enter and leave actions.
121 * window-table.c (table_hash): Take the hash and size as parameters.
123 (stack_init, stack_destroy, stack_lookup, stack_insert_new)
124 (stack_rehash, stack_insert, stack_insert_new, stack_insert_singleton)
125 (stack_insert_above, stack_remove, stack_move_above)
126 (stack_real_below): New functions.
128 * gwm.c (setup_display): Initialise window_stack, add
129 SubstructureNotify to the root event masks, and add the
130 roots and existing windows to the stack.
131 (shutdown_display): Use the stored stacking order instead of
132 querying it from the server.
133 * root.c (root_create_notify, root_destroy_notify)
134 (root_reparent_notify, root_configure_notify): New functions.
136 * gwm.c (event_time): New function.
138 2009-09-07 Gary Wong <gtw@gnu.org>
140 * decorate-core.c (handle_get_default_map): We want the property
141 length in format units, not bytes.
142 * decorate-render.c (handle_get_default_map): Likewise.
144 2009-09-07 Gary Wong <gtw@gnu.org>
146 * gwm.c (setup_display): Add _NET_SUPPORTING_WM_CHECK property to
149 2009-09-06 Gary Wong <gtw@gnu.org>
151 * frame.c (update_frame_extents): New function.
152 * gwm.c (start_managing_window): Update _NET_FRAME_EXTENTS property.
153 * managed.c (managed_property_change): Likewise.
155 2009-09-06 Gary Wong <gtw@gnu.org>
157 * gwm.c (setup_display): Add various EWMH properties to the root
159 (shutdown_display): Remove EWMH root properties.
161 2009-09-06 Gary Wong <gtw@gnu.org>
163 * decorate-core.c (core_replace_icons): New function.
164 * decorate-render.c (render_picture, assemble_image)
165 (render_replace_icons): New functions.
166 (render_update_window): Draw icons in menus where requested.
167 (decorate_render_init): Look for suitable PictFormats.
168 * gwm.c (start_managing_window): Initialise icons.
169 (unmanage_window): Deallocate icons.
170 (setup_display): Add _NET_WM_ICON property.
172 * managed.c (handle_managed_get_property, async_get_property): Use
173 the window resource ID instead of a pointer to identify the window,
174 to detect if it disappears asynchronously.
175 (handle_get_geometry): New function.
176 (managed_property_change): Handle _NET_WM_ICON, and the icon
177 parameters of WM_HINTS.
178 * menu.c (popup_menu): Allow icons in menus.
179 * actions.c (action_window_list_menu): Add icons to menu.
181 2009-09-03 Gary Wong <gtw@gnu.org>
183 * decorate-core.c (core_text): Use utf8_next().
184 (core_window_size): Use utf8_length().
186 2009-09-02 Gary Wong <gtw@gnu.org>
188 * utf8.c (utf8_illegal, utf8_length, utf8_next)
189 (utf8_dup_valid, utf8_dup_valid_len, dup_valid_common): New functions.
190 (to_utf8) [DEBUG]: Add sanity checks.
191 * decorate-render.c (render_text): Use utf8_length() and utf8_next().
192 (text_width): Use utf8_next().
193 * managed.c (managed_property_change): Use utf8_dup_valid_len().
195 * frame.c (recalc_size): Avoid needless C99isms.
196 * gwm.c (place_window): Likewise.
197 * window-table.c (table_hash): Likewise.
199 2009-09-01 Gary Wong <gtw@gnu.org>
201 * actions.c (action_map_raise, action_window_list_menu)
202 (action_exit, window_list_activate): New functions.
203 * gwm.c (main): Use which_signal -1 to indicate a graceful exit.
205 * menu.c (menu_button_release, popup_menu): Remember the window
206 parameter by resource ID, instead of by pointer. That way, it is
207 simple to detect whether the window has been destroyed between
208 creation and activation of the menu.
210 * menu.c (menu_enter_notify): Don't try to measure the active item
211 when nothing is active.
213 * menu.c (destroy_menu): Don't free NULL labels.
214 (popup_menu): Don't strdup() NULL labels.
216 2009-09-01 Gary Wong <gtw@gnu.org>
218 * actions.c (action_iconify_window, action_deiconify_window): New
220 * keyboard.c (establish_grabs): Replace NUM_KEY_ACTIONS with new
221 num_key_actions symbol.
222 * managed.c (set_managed_state, iconic_to_normal): Moved from gwm.c.
223 (normal_to_iconic): New function.
224 * gwm.c (handle_client_message): Use new normal_to_iconic() function.
225 * root.c (root_key_press): Likewise.
227 2009-09-01 Gary Wong <gtw@gnu.org>
229 * menu.c, menu.h: New files.
230 * actions.c: Added callback parameter to all actions. All callers
232 (action_root_menu, action_window_menu): New functions.
233 * decorate-core.c (core_update_window): Draw menu items.
234 (core_window_size): New function.
235 * decorate-render.c (render_update_window): Draw menu items.
236 (text_width, render_window_size): New functions.
237 * frame.c (recalc_size): Call window_size() to obtain feedback
239 (frame_button_press): Pop up a menu on button 2 presses.
240 * gwm.c (show_window): Annotate menu windows.
241 (setup_display): Initialise window_size.
242 (start_managing_window): Add OwnerGrabButton to frame windows.
243 (setup_display): Add OwnerGrabButton to the roots.
245 2009-09-01 Gary Wong <gtw@gnu.org>
247 * gwm.c (handle_events): Replace passive_grab with pointer_demux,
248 which redirects events on the client side.
249 (start_managing_window): Set initial event mask for
250 the frame button window, instead of an explicit GrabButton.
251 * button.c (button_button_press, button_button_release): Use
252 pointer_demux instead of GrabButton.
253 (button_enter_notify, button_leave_notify): Inspect event parameters
254 to determine which window is entered/left.
255 * frame.c (frame_button_press, frame_button_release): Use
256 pointer_demux instead of passive_grab.
257 (frame_motion_notify, frame_destroy_notify): Likewise.
258 (frame_enter_notify): Ignore events when pointer_demux is set.
259 * window-table.c (forget_window): Remove pointer_demux from
262 2009-08-31 Gary Wong <gtw@gnu.org>
264 * gwm.c (show_atom): Declare predefined_names[] as const.
265 (show_error): Declare render_strings[] as const.
266 (show_event): Declare event_names[] as const.
267 (setup_display): Use auto storage class for wm_atom_str.
269 2009-08-31 Gary Wong <gtw@gnu.org>
271 * gwm.c (start_managing_window): Create "border region" input-only
272 windows, to allow setting different cursors on various border parts.
274 * frame.c (frame_configure_notify): Update the geometry of the
276 * decorate-core.c (decorate_core_init): Cursor indices were rearranged.
277 * decorate-render.c (decorate_compat_init): Likewise.
279 * frame.c (frame_button_press): Do not recognise a passive grab
280 propagated from the client.
282 2009-08-31 Gary Wong <gtw@gnu.org>
284 * frame.c (frame_t, frame_xb): Make window decorations optional.
285 (frame_blr): New function.
286 (frame_b, frame_l, frame_r): Invoke frame_blr().
287 (deactivate_focus_frame): Moved from gwm.c.
288 (frame_button_press, frame_enter_notify): Make window decorations
290 * gwm.c (start_managing_window): Likewise.
291 (setup_display): Add _MOTIF_WM_HINTS property.
292 * managed.c (managed_property_change): Handle _MOTIF_WM_HINTS property.
293 (match_managed_shape): Retrieve _MOTIF_WM_HINTS when a client
294 window is no longer bounding shaped.
296 2009-08-31 Gary Wong <gtw@gnu.org>
298 * button.c (button_size, button_xb): New functions. All references
299 to former constants updated.
300 * frame.c (frame_t, frame_b, frame_l, frame_r, frame_xb): New
301 functions. All references to former constants updated.
302 (translate_child_to_frame, translate_frame_to_child): Moved
304 (apply_size_constraints): Likewise.
306 2009-08-30 Gary Wong <gtw@gnu.org>
308 * frame.c (frame_button_release): Ignore the event unless the
309 window was the one to establish the passive grab.
310 (frame_destroy_notify): New function.
312 2009-08-30 Gary Wong <gtw@gnu.org>
314 * decorate-render.c (lookup_face): New function.
315 (query_metrics, query_glyph, replace_glyph, render_text): Take style
317 (render_update_window): Use styles, as appropriate.
318 (decorate_render_init): Remember fontconfig charsets and patterns
319 for each face in each style.
320 (decorate_render_done): Clean up fontconfig charsets and patterns.
322 2009-08-29 Gary Wong <gtw@gnu.org>
324 * frame.c (build_edges): Use xmalloc() instead of malloc().
326 2009-08-29 Gary Wong <gtw@gnu.org>
328 * managed.c (managed_property_change): Use _NET_WM_NAME in preference
330 (async_get_property): New function.
331 (managed_property_notify): Use async_get_property.
332 * gwm.c (start_managing_window): Initialise net_wm_name.
333 (setup_display): Add _NET_WM_NAME property.
335 2009-08-28 Gary Wong <gtw@gnu.org>
337 * frame.c (recalc_size): Initialise feedback->u.feedback.
339 2009-08-28 Gary Wong <gtw@gnu.org>
341 * gwm.c (unmanage_window): Put the parent of the unmanaged child
342 into a childless state, so that lingering events can be handled
344 (handle_destroy_window): New function.
345 (show_window): Annotate childless windows.
346 * managed.c (withdrawn_map_request, withdrawn_configure_request): New
349 2009-08-28 Gary Wong <gtw@gnu.org>
351 * decorate-render.c (decorate_render_init): Cast FONT_NAME
354 2009-08-28 Gary Wong <gtw@gnu.org>
356 * gwm.c (shutdown_display): Reparent the windows in strict stacking
359 2009-08-28 Gary Wong <gtw@gnu.org>
361 * decorate-render.c (query_metrics, render_text, render_update_window,
362 decorate_render_init): Replace FONT_FAMILY, FONT_WEIGHT,
363 FONT_PIXEL_SIZE, FONT_LOAD_TARGET with FONT_NAME.
365 2009-08-28 Gary Wong <gtw@gnu.org>
367 * decorate-render.c (query_metrics, replace_glyph): Don't
368 bother comparing the first cache line with itself.
370 2009-08-27 Gary Wong <gtw@gnu.org>
372 * decorate-render.c, decorate-render.h: New files. Implement
373 window decoration with RENDER extension (text only, so far).
374 * gwm.c (setup_display, shutdown_display): Set up and clean up
375 RENDER extension when available.
376 (show_error): Show RENDER errors.
378 * decorate-core.c (core_update_window): Issue SetClipRectangles
381 2009-08-27 Gary Wong <gtw@gnu.org>
383 * gwm.c (sync_with_callback): Perform the sequence comparison
384 with unsigned arithmetic, so that overflow semantics are
387 2009-08-27 Gary Wong <gtw@gnu.org>
389 * frame.c (recalc_size): Implement edge resistance when resizing
391 (edge_resist): New function.
393 2009-08-26 Gary Wong <gtw@gnu.org>
395 * frame.c (frame_motion_notify, frame_button_release): Implement
396 edge resistance when moving frames.
397 (build_edges, free_edges, h_edge_compare, v_edge_compare): New
400 2009-08-25 Gary Wong <gtw@gnu.org>
402 * frame.c (frame_motion_notify): Ignore single pixel movements, and
403 account for window border.
405 2009-08-25 Gary Wong <gtw@gnu.org>
407 * window-table.c (queue_window_update): Mark the update box as
408 uncleared if we enlarge the bounding box.
410 2009-08-25 Gary Wong <gtw@gnu.org>
412 * gwm.c, gwm.h (warning, fatal): Export warning and fatal functions.
414 2009-08-25 Gary Wong <gtw@gnu.org>
416 * window-table.c (queue_window_update): Properly compute the
417 update region when the old region was empty.
419 2009-08-24 Gary Wong <gtw@gnu.org>
421 * gwm.c (shutdown_display) [DEBUG]: Call muntrace() only when
424 2009-08-23 Gary Wong <gtw@gnu.org>
426 * managed.c (managed_shape_notify): Respond to ShapeNotify events
427 only when they describe modifications to the bounding region.
429 2009-08-22 Gary Wong <gtw@gnu.org>
431 * gwm.c (start_managing_window): Send a synthetic ConfigureNotify
432 to the client, because we've almost certainly moved their window.
434 2009-08-22 Gary Wong <gtw@gnu.org>
436 * actions.c, actions.h, button.c, button.h, decorate-core.c,
437 decorate-core.h, frame.c, frame.h, gwm.c, gwm.h, keyboard.c,
438 keyboard.h, managed.c, managed.h, root.c, root.h, utf8.c, utf8.h,
439 window-table.c, window-table.h, Makefile.am, configure.ac: New
440 files, and version 1.0 release.