2006-11-05 Justin Mason <jm@jmason.org>
* src/keybindings.c: implement handle_move_to_{side|corner}_* to
allow the user to flip a window to the side or corner of the
screen. Fixes#317884.
* src/prefs.h: keybindings for the above.
* src/metacity.schemas.in: keybindings for the above.
2006-10-30 Dan Mick <dan.mick@sun.com>
* src/window.c: (__window_is_terminal): Fix strict focus
mode by picking up on res_class. Fixes#361054, strict focus
mode still not working; should look for res_class, not res_name
2006-10-13 Carlo Wood <carlo@alinoe.com>
Fix cases when titlebar is allowed offscreen and shouldn't be (and
vice-versa). #333995.
* src/display.[ch] (struct _MetaDisplay): add grab_frame_action
member
* src/display.[ch] (meta_display_begin_grab_op):
* src/window.[ch] (meta_window_begin_grab_op):
* src/core.[ch] (meta_core_begin_grab_op):
Add frame_action parameter (core & window versions pass it on to
display)
* src/display.c (event_callback):
* src/window.c (meta_window_begin_grab_op,
meta_window_client_message, menu_callback):
* frames.c (meta_frames_button_press_event):
* keybindings.c (do_choose_window, handle_begin_move,
handle_begin_resize, handle_workspace_switch):
Pass whether the action should be considered a 'frame_action',
which will be used to determine whether to force the titlebar to
remain onscreen, to meta_*_begin_grab_op
* constraints.c (constrain_titlebar_visible):
Replace previous ugly hack by using grab_frame_action (and whether
the action is a user action) to determine whether to enforce the
titlebar_visible constraint.
* common.h: Added "above" to the list of flags a frame can have, so
that we know when to mark it as always on top. Added six grab ops,
one to do and one to undo each of the three new titlebar buttons
(shade, above, stick). Added six new button functions, similarly.
(#96229)
* frame.c (meta_frame_get_flags): If a frame has the WM_STATE_ABOVE X
attribute, set META_FRAME_ABOVE in its flags.
* frames.c (meta_frames_apply_shapes): Allow variable amounts of
rounding. (#113162)
* frames.c (show_tip_now, meta_frames_paint_to_drawable, control_rect,
get_control): extend handling of existing buttons to the
3*2 new kinds of button. (#96229)
* frames.c (meta_frames_button_press_event): translate clicks on the 3*2
new kinds of button to the new grab ops. (#96229)
* frames.c (meta_frames_button_release_event): implement the various
actions for the 3*2 new kinds of button. (#96229)
* frames.c (meta_frames_update_prelit_control,
meta_frames_motion_notify_event): extend existing motion
notifications for buttons to the 3*2 new kinds of button. (#96229)
* frames.c (meta_frames_set_window_background): handle specified
background colours and alpha transparency. (#151261)
* frames.h (MetaFrameControl): New control types for the 3*2 new kinds
of button. (#96229)
* iconcache.[ch] (meta_read_icons): use theme's fallback icons if a
window has no icon; use metacity's fallback icons only if the theme
does not provide any. (#11363)
* iconcache.[ch] (meta_invalidate_default_icons (new function)): clear
icon cache on windows using default icons, and update them. (#11363)
* main.c (main): added \n to error message.
* prefs.c (button_function_from_string): extend for 3 new button
types. (#96229)
* prefs.c (button_opposite_function (new function)): return a button
function's inverse (shade -> unshade, etc) (#96229)
* prefs.c (update_button_layout): allocate space for a button's
inverse, if it has one. (#96229)
* theme-parser.c (ParseState): add state for fallback icons (#11363)
* theme-parser.c (ParseInfo): add format_version; remove
menu_icon_* (#114305)
* theme-parser.c (parse_positive_integer): add lookup for integer
constants (#331356)
* theme-parser.c (parse_rounding (new function)): parse window
rounding amount (#113162)
* theme-parser.c (parse_alpha): don't set error if the number can't
be parsed since it'll already be set; change tolerance in comparison
from 1e6 to 1e-6
* theme-parser.c (parse_color (new function)): parse colour, including
possible constant lookup.
* theme-parser.c (parse_toplevel_element): allow defining of various
new kinds of constant; allow
hide_buttons (#121639) and more detailed rounding attributes on
<frame_geometry> (#113162); allow background and alpha attributes on
<frame_style>; (#151261) remove support for <menu_icon> except as
stub; (#114305) add support for loading stock images (#113465); add
support for <fallback>. (#11363))
* theme-parser.c (parse_draw_op_element): add from and to attribute
for arcs. (#121603)
* theme-parser.c (parse_style_element): add check for theme version
supporting a button function. (#96229)
* theme-parser.c (parse_style_set_element): add ability for shaded
windows to be resizable (#114304)
* theme-parser.c (meta_theme_load): add theme versioning routine.
* theme.c ( meta_frame_layout_get_borders): return rectangles for
the new 3*2 kinds of button, except where they're
inapplicable. (#96229)
* theme.c (meta_frame_layout_calc_geometry): don't format buttons on
windows with no buttons (#121639); strip the 3*2 new kinds of button
correctly (#96229); allow variable amounts of rounding (#113162).
* theme.c (meta_frame_style_new): set alpha to 255 by
default. (#151261)
* theme.c (meta_frame_style_unref): free colour spec if
allocated. (#151261)
* theme.c (meta_frame_style_validate): it's only an error not to
include a button if that button is valid in the current
theme. (#96229)
* theme.c (button_rect): return rectangles for the new 3*2 kinds
of button. (#96229)
* theme.c (meta_frame_style_set_unref): free differently resizable
shaded styles. (#114304)
* theme.c (get_style): look up differently resizable styles
for shaded windows. (#114304)
* theme.c (free_menu_ops (removed function), get_menu_icon
(removed function), meta_theme_draw_menu_icon (removed function),
meta_menu_icon_type_from_string (removed function),
meta_menu_icon_type_to_string (removed function),
meta_theme_free, meta_theme_validate): removed menu icon code. (#114305)
* theme.c (meta_theme_load_image): add size_of_theme_icons
parameter. (#113465)
* theme.c (meta_theme_define_color_constant (new function),
meta_theme_lookup_color_constant (new function)): allow
definition of colour constants. (#129747)
* theme.c (meta_button_type_from_string, meta_button_type_to_string):
add the 3*2 new kinds of button. (#96229)
* theme.c (meta_theme_earliest_version_with_button (new function)):
return the theme version each button was introduced in. (#96229)
* theme.h ( MetaFrameLayout): add "hide_buttons" flag (#121639) and
corner radiuses. (#113162)
* theme.h (MetaFrameGeometry): add rectangles for the 3*2 new
buttons. (#96229)
* theme.h (MetaButtonType): the 3*2 new buttons. (#96229)
* theme.h (MetaFrameStyle): add window_background_color and
window_background_alpha so that we can specify background on a
<frame_style>. (#151261)
* theme.h (MetaFrameStyleSet): shaded_styles gets resize
dimension. (#114304)
* theme.h (MetaTheme): added format_version, color_constants
hash, (#129747) fallback_icon and fallback_mini_icon, (#11363)
and removed menu_icons. (#114305)
* theme.h (META_THEME_ALLOWS (new macro)): return whether a theme
supports a given feature. Also, several macros representing
new features in v2.
* ui.c (meta_ui_set_current_theme)): also invalidate default
icons. (#11363)
* window.[ch] (meta_window_update_icon_now)): became
non-static. (#11363)
2006-10-06 Elijah Newren <newren gmail com>
* src/metacity-dialog.c (kill_window_question): Be nice to
translators; remove unnecessary markup from strings marked for
translation (oops, I missed this in my review before previous
commit)
2006-10-06 Elijah Newren <newren gmail com>
* src/metacity-dialog.c (kill_window_question): Patch from Bruno
Boaventura to improve the "Force Quit" dialog. #121936
2006-10-02 Elijah Newren <newren gmail com>
Ignore edge resistance for size-increment windows when resizing
with the keyboard. #346782.
* src/edge-resistance.c (apply_edge_resistance_to_each_side):
ignore edge resistance for size-increment windows when resizing
with the keyboard, (apply_edge_resistance_to_each_side,
meta_window_edge_resistance_for_move,
meta_window_edge_resistance_for_resize): pass a is_resize
parameter as well
2006-10-01 Elijah Newren <newren gmail com>
* src/display.c (meta_display_set_input_focus_window):
* src/window.c (meta_window_focus):
Don't require a push/pop trap around
meta_display_set_input_focus_window(), but rather move the
push/pop into that function surrounding the XSetInputFocus() call
directly. Follow up to #358514.
2006-10-01 Elijah Newren <newren gmail com>
* src/*.[ch]: Stick an emacs comment directive at the beginning of
all the code files so that people using emacs will be more likely
to get coding style correct in their patches. We still need a
similar vi directive. #358866
2006-10-01 Elijah Newren <newren gmail com>
Patch from Carlo Wood to ensure that maximized and minimized
properties are maintained across restarts. #358042.
* src/constraints.c (place_window_if_needed): fix up partial
maximization handling and add minimize_after_placement handling.
* src/display.[ch] (struct MetaDisplay, meta_display_open): add a
new display->display_opening flag to allow handling startup
differently where needed.
* src/window-props.c (reload_net_wm_state): handle
_net_wm_state_hidden as well, setting
window->minimize_after_placement appropriately
* src/window.[ch] (struct MetaWindow, meta_window_new_with_attrs):
add a window->minimize_after_placement field
* src/window.c (meta_window_new_with_attrs): only unminimize the
window and its transients if the display isn't being opened,
(unmaximize_window_before_freeing): don't reset the state unless
the window is becoming withdrawn, if the screen is being closed be
sure to save the unmaximized state of the window so the next
window manager can restore it
2006-10-01 Elijah Newren <newren gmail com>
* src/window-props.c (set_title_text): surround the
XDeleteProperty() call with a
meta_error_trap_push/meta_error_trap_pop pair to prevent a crash
when closing a remote instance of gedit (and perhaps other apps).
#358514.
2006-10-01 Elijah Newren <newren gmail com>
Fix longstanding focus bug with mouse (not sloppy) focus mode with
popup override-redirect windows, particularly mozilla and
firefox's location bar autocompletion. #357695.
* src/display.c (event_callback -- EnterNotify & LeaveNotify events):
for mouse focus, defocus the focused window when the mouse enters
the desktop window rather than when the mouse leaves the focused
window.
* doc/how-to-get-focus-right.txt:
update for the slightly nuanced definition of mouse focus (people
without a DESKTOP window like nautilus get sloppy focus behavior
now)
2006-09-27 Elijah Newren <newren gmail com>
* src/menu.c (var menuitems): Patch from Bruno Boaventura to add
notes to remind translators to keep translations in sync with
libwnck. #355620.
2006-09-18 Elijah Newren <newren gmail com>
* src/constraints.c (constrain_maximization): Ignore maximum size
hints when maximizing. Should fix#327543 (see comment 4 and comment
5).
2006-09-18 Elijah Newren <newren gmail com>
Partial audit to fix timestamp usage. One step towards fixing
#355180; see important comments in that bug.
* src/core.[ch] (meta_core_unshade, meta_core_shade):
* src/delete.c (meta_window_present_delete_dialog,
delete_ping_timeout_func):
* src/display.[ch] (meta_display_open, meta_display_close,
event_callback, meta_display_begin_grab_op,
process_selection_clear, meta_display_unmanage_screen,
meta_display_unmanage_windows_for_screen):
* src/frames.c (meta_frames_button_press_event):
* src/keybindings.c (handle_toggle_shade):
* src/main.c (main):
* src/screen.[ch] (update_num_workspaces, meta_screen_new,
meta_screen_free, prefs_changed_callback):
* src/window.[ch] (meta_window_free, finish_minimize,
implement_showing, meta_window_show, meta_window_maximize,
meta_window_make_fullscreen_internal,
meta_window_unmake_fullscreen, meta_window_shade,
meta_window_unshade, window_activate, send_sync_request,
meta_window_client_message, menu_callback,
meta_window_update_keyboard_resize):
Remove usage of CurrentTime, meta_display_get_current_time() and
meta_display_get_current_time_roundtrip() where possible, or
document why it isn't possible, or at very least add a FIXME with
some explanation of my laziness and what needs to be done.
2006-09-13 Elijah Newren <newren gmail com>
* src/window.c (meta_window_show): Patch from Thomas Andersen to
make windows be stacked correctly before showing them, to prevent
flicker with focus stealing prevention. #332385.
2006-09-12 Elijah Newren <newren gmail com>
* src/theme.c (meta_gtk_arrow_from_string,
meta_gtk_arrow_to_string): patch from Bruno Boaventura de Oliveira
to fix a compiler warning about not handling GTK_ARRROW_NONE.
#355490.
2006-09-11 Elijah Newren <newren gmail com>
* src/compositor.c: Patch from Bruno Boaventura de Oliveira
Lacerda to fix warnings about unused function and global var.
#355489.
2006-09-09 Elijah Newren <newren gmail com>
Avoid a stuck grab, preventing focus from being transferred
between windows. Thanks to Fryderyk Dziarmagowski for steps to
reproduce. Fixes at least part of #354422.
* src/display.c (meta_display_begin_grab_op,
meta_display_end_grab_op): pass timestamp to
meta_screen_ungrab_all_keys, meta_screen_ungrab_all_keys, and
meta_window_ungrab_all_keys
* src/keybindings.[ch] (grab_keyboard, ungrab_keyboard): add a
timestamp parameter and remove call to
meta_display_get_current_time(), (meta_screen_grab_all_keys,
meta_screen_ungrab_all_keys, meta_window_ungrab_all_keys): add a
timestamp parameter and pass it on to grab_keyboard and
ungrab_keyboard
2006-09-07 Elijah Newren <newren gmail com>
* src/constraints.c (update_onscreen_requirements): make sure
windows returning from fullscreen mode are constrained to be
"onscreen"; fixes#353699.
2006-09-07 Elijah Newren <newren gmail com>
* src/metacity-dialog.c: Patch from Bruno Boaventura de Oliveira
Lacerda to replace copy_of_gdk_x11_window_set_user_time() with
gdk_x11_window_set_user_time(). We've long since adopted gtk+ >=
2.6 as a dependency. #352293
2006-08-21 Elijah Newren <newren gmail com>
Patch from Thomas Andersen to fix metacity-dialog handling of
arguments. #340690
* src/metacity-dialog.c (main): replace hackish argument parsing
with GOption parsing. Much nicer. :)
2006-08-21 Elijah Newren <newren gmail com>
Patch from Ed Catmur to fix keybindings with hex-values (coming
from special extended keyboard keys). #140448.
* src/keybindings.c (struct _MetaKeyBinding): change keycode from
KeyCode to unsigned int (comment from Elijah: why???),
(reload_keycodes): only grab keysyms for keybindings that have
them, (count_bindings, rebuild_binding_table): bindings can be
valid either due to a valid keysym or a valid keycode,
(display_get_keybinding_action, meta_change_keygrab,
process_tab_grab, process_workspace_switch_grab): handle keycode
as well as keysym
* src/prefs.[ch] (struct MetaKeyCombo, update_binding,
update_list_binding): handle keycode as well as keysym
* src/ui.[ch] (meta_ui_accelerator_parse): new function special
cases strings of the form "0x[0-9a-fA-F]+" and otherwise calling
gtk_accelerator_parse(), (meta_ui_parse_accelerator,
meta_ui_parse_modifier): call meta_ui_accelerator_parse instead of
gtk_accelerator_parse.
2006-08-21 Elijah Newren <newren gmail com>
Allow drags & resizes to be reverted by hitting escape. Based on
patch from Thomas Andersen. #126497.
* src/display.c (grab_op_is_mouse_only): new function,
(meta_display_begin_grab_op): grab the keyboard when moving or
resizing too so that we can get escape keypresses
* src/display.h (struct _MetaDisplay): add a comment to remind
that grab_was_cancelled is only used in wireframe mode
* src/keybindings.[ch] (process_mouse_move_resize_grab): add new
function for handling keypresses during mouse-only moving and
resizing, (meta_window_grab_all_keys): add a timestamp parameter
and pass it to meta_window_focus(),
(meta_display_process_key_event): make sure
process_mouse_move_resize_grab() gets called when needed,
(process_keyboard_move_grab, process_keyboard_resize_grab):
rearrange some code slightly and improve the comments to make it
more readable
2006-08-21 Elijah Newren <newren gmail com>
Fix several bugs with handling of fullscreen windows, causing them
to not actually be fullscreen. #343115 (and also #346927,
#350547, #351643, the recent additional WINE-related issue
mentioned on the mailing list, and probably others...)
* src/constraints.c (setup_constraint_info): if a window tries to
resize to fullscreen-size and it has a fullscreen function but
isn't actually marked as fullscreen then assist it by marking it
as such, (constrain_fully_onscreen, constrain_titlebar_visible):
ignore this constraint for fullscreen windows since such windows
have a separate specialized constraint
* src/stack.c (window_is_fullscreen_size, get_standalone_layer):
remove the old window_is_fullscreen_size() hack for detecting
windows to treat as fullscreen since it doesn't work well with the
new constraints framework (i.e. we needed a slightly different
hack)
* src/window.[ch] (meta_window_new_with_addrs): shuffle the order
of adding the window to the stack and moveresizing the window
since moveresizing can cause stack changes if the window's initial
size is fullscreen size, (meta_window_make_fullscreen,
meta_window_make_fullscreen_internal): split
meta_window_make_fullscreen() similar to meta_window_maximize() so
that constraints can make use of it
2006-08-19 Baptiste Mille-Mathias <baptiste.millemathias@gmail.com>
* src/stock_delete.png: Update the pixmap to a new one which
fit better with the other pixmaps of the menu. First patch in
metacity, woot! #345498
2006-08-18 Elijah Newren <newren gmail com>
* src/tabpopup.c (meta_ui_tab_popup_new): Patch from Willie Walker
to restore the part of the patch that I should not have reverted
in #123372, in order to fix accessibility. #350624
2006-08-07 Elijah Newren <newren gmail com>
* src/window.c (intervening_user_event_occurred): Vytautus Liuolia
totally rocks; he tested and debugged and tracked down where we
were using the focus window's net_wm_user_time even when it was
uninitialized. This may fix bug 311868 and others I've heard
about (with Valknut, IIRC). It definitely fixes the issues Vytas
was seeing with his single instance library. :-)
2006-08-07 Elijah Newren <newren gmail com>
Add a constrain_titlebar_visible constraint; should fix both bug
333328 and bug 345522. Not perfect (minor annoying snap pulling
windows back onscreen, plus an ugly hack almost as bad as the old
one), but tarballs are due in less than half an hour. ;-)
* src/boxes.[ch] (meta_rectangle_overlaps_with_region):
new function
* src/constraints.c (constrain_titlebar_visible): new function,
(enum ConstraintPriority, array all_constraints,
update_onscreen_requirements): various small changes to
accomodate the new function
* src/edge-resistance.c: remove the infinite edge resistance,
which was a big hack of a way to workaround the lack of a
titlebar_visible constraint
* src/window.[ch] (MetaWindow): new require_titlebar_visible
bitfield, (meta_window_new_with_attrs): initialized here
2006-08-07 Elijah Newren <newren gmail com>
* src/frames.c (meta_frames_button_press_event): Patch from Chris
Ball to not minimize in response to double clicks on the titlebar
when minimiziation should not be allowed. #347377
2006-08-07 Elijah Newren <newren gmail com>
Patch from Björn Lindqvist to fix button lighting with dragged
clicks. #321474.
* src/frames.c (meta_frames_button_press_event): update the
prelit_control, (meta_frames_button_release_event): some code
refactoring to simplify things a bit, and make sure to update the
prelit_control
2006-08-07 Elijah Newren <newren gmail com>
* src/keybindings.c (process_keyboard_move_grab): Patch from
Thomas Andersen to return the window to maximized state if the
window was "shaken loose" from maximized state during a resize but
the resize is later aborted. #346719.
2006-08-07 Elijah Newren <newren gmail com>
Patch from Vytautas Liuolia to react to _NET_STARTUP_ID changes,
as proposed for the new startup-notification/EWMH spec. #347515
* src/window-props.c (reload_net_startup_id): be sure to act on
the new id instead of just recording it
* src/window.[ch] (window_activate, meta_window_activate,
meta_window_activate_with_workspace, meta_window_client_message):
change window_activate() to take a workspace parameter instead of
hardcoding to the current workspace, add
meta_window_activate_with_workspace() function needed by
reload_net_startup_id().
2006-08-07 Thomas Thurman <thomas@thurman.org.uk>
* src/frames.h: add new MetaButtonSpace struct; use it for
close_rect, max_rect, min_rect and menu_rect.
* src/frames.c (control_rect, get_control): modify to support
the new fields in MetaButtonSpace.
* src/theme.c (meta_frame_layout_get_borders, rect_for_function,
meta_frame_layout_calc_geometry, button_rect): add support for
the new fields in MetaButtonSpace.
2006-08-07 Elijah Newren <newren gmail com>
* src/screen.c (meta_screen_resize_func): patch from Dmitry
Timoshkov to make sure window features get recalculated when the
screen is resized via XRandR. Part of #346927.
2006-08-04 Elijah Newren <newren gmail com>
Patch from Dmitry Timoshkov to fix the heuristic for determining
if windows can be made fullscreen (needed for WINE and possible
also some legacy applications). Part of #346927.
* src/window.c (recalc_window_features): ignore window decoration
when checking size for determing whether an unresizable window
should be allowed ot be considered for fullscreening