diff options
author | Ray Strode <rstrode@redhat.com> | 2005-08-03 02:22:00 +0000 |
---|---|---|
committer | Ray Strode <halfline@src.gnome.org> | 2005-08-03 02:22:00 +0000 |
commit | 2972ab6df6f48a11bec8c21eb97b02e4336c1062 (patch) | |
tree | f1f7530099aaa1615ce8db90360bf3bab7aaf512 /src/place.h | |
parent | 8e927fd300313d83525734f757649f81fab5132d (diff) | |
download | metacity-2972ab6df6f48a11bec8c21eb97b02e4336c1062.tar.gz |
Improve the behavior of keyboard move/resize and edge snapping. Still not
2005-08-03 Ray Strode <rstrode@redhat.com>
Improve the behavior of keyboard move/resize and edge
snapping. Still not perfect, bug 310888.
* src/effects.c (draw_xor_rect): Make the outside of a
wireframe rectangle line up with the outside edge of its
window, instead of centering the wireframe edges on the
window edges.
* src/keybindings.c (process_keyboard_move_grab): allow
edge snapping in wireframe mode. Adjust code to take
into account changed semantics of find_next_*_edge
functions.
(process_keyboard_resize_grab_op_change): new function
to take some orthogonal logic out of
process_keyboard_resize_grab_op. Only allow keyboard
resize cursor to go to flat edges, not corners.
(process_keyboard_resize_grab): allow edge snapping in
wireframe mode. Fix up snapping logic.
* src/place.c (get_{vertical,horizontal}_edges): use
GArray instead of int *, since the number of output
edges isn't known until the middle of the function now.
Use xor rect extents instead of window extends if in
wireframe mode.
(meta_window_find_next_{vertical,horizontal}_edge: add
new source_edge_position parameter to specify which edge
on the active window to start from when looking for next
edge on the screen. Return the coordinate of the edge
found and not the coordinate of where the window should be
moved to snap to where the edge was found.
* src/window.c (update_move): all the user to specify
an edge to resize with mouse in keyboard resize mode.
window
Diffstat (limited to 'src/place.h')
-rw-r--r-- | src/place.h | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/place.h b/src/place.h index a628c563..624ac841 100644 --- a/src/place.h +++ b/src/place.h @@ -25,6 +25,16 @@ #include "window.h" #include "frame.h" +typedef enum _MetaWindowEdgePosition MetaWindowEdgePosition; + +enum _MetaWindowEdgePosition +{ + META_WINDOW_EDGE_TOP = 0, + META_WINDOW_EDGE_LEFT, + META_WINDOW_EDGE_RIGHT, + META_WINDOW_EDGE_BOTTOM +}; + void meta_window_place (MetaWindow *window, MetaFrameGeometry *fgeom, int x, @@ -32,14 +42,16 @@ void meta_window_place (MetaWindow *window, int *new_x, int *new_y); -/* Returns the position to move the window to in order +/* Returns the position to move the specified window edge to in order * to snap it to the next edge in the given direction, * while moving. */ int meta_window_find_next_vertical_edge (MetaWindow *window, - gboolean right); -int meta_window_find_next_horizontal_edge (MetaWindow *window, + MetaWindowEdgePosition source_edge_position, gboolean down); +int meta_window_find_next_horizontal_edge (MetaWindow *window, + MetaWindowEdgePosition source_edge_position, + gboolean right); /* Returns the position to move the window to in order * to snap it to the nearest edge, while moving. @@ -49,13 +61,4 @@ int meta_window_find_nearest_vertical_edge (MetaWindow *window, int meta_window_find_nearest_horizontal_edge (MetaWindow *window, int y_pos); - -/* FIXME need edge-snap functions for resizing as well, those - * behave somewhat differently. - */ - #endif - - - - |