Skip to content
  • Vincent Untz's avatar
    Add fields to PanelToplevel to have the possibility to use a position · d5cd6921
    Vincent Untz authored
    2007-06-29  Vincent Untz  <vuntz@gnome.org>
    
    	Add fields to PanelToplevel to have the possibility to use a position
    	relative from the right and/or bottom of the monitor. This is mainly
    	for non-expanded panels. This fixes the panel position:
    	 - after a resolution change: if the panel was at the bottom or right
    	   of the screen and the resolution goes down and up again, we no
    	   longer have a panel that starts to be floating for no reason
    	 - when the panel is at the right of the screen and its size grows
    	   (because of a tasklist): it no longer becomes centered or snaps to
    	   the left of the screen.
    	This change should still compatibility with older configuration: if
    	you log in with an older GNOME after having used 2.20, things should
    	still work as expected.
    	Fix bug #107622 (and maybe other bugs).
    
    	* panel-toplevel.schemas.in: add x_right, y_bottom keys for toplevels
    	* panel-default-setup.entries: add those keys in the default setup
    	* panel-profile.c: (panel_profile_queue_toplevel_location_change):
    	(panel_profile_connect_to_toplevel):
    	(panel_profile_toplevel_change_notify):
    	(panel_profile_load_toplevel):
    	(panel_profile_can_be_moved_freely): basically, a dumb update to
    	handle the new keys (I just searched for what was done for the x and y
    	keys and copied that)
    	* panel-toplevel.[ch]: add new fields and properties for x_right and
    	y_bottom
    	(panel_toplevel_begin_grab_op): updated
    	(panel_toplevel_cancel_grab_op): updated
    	(panel_toplevel_resize_to_pointer): update y_bottom and x_right when
    	this is necessary
    	(panel_toplevel_move_to): fix x (y) when x_centered (y_centered) is
    	true, and compute the new x_right/y_bottom values
    	(panel_toplevel_calc_floating): use position from x_right/y_bottom
    	when they're different from -1
    	(panel_toplevel_update_normal_position): don't set x/y after snapping:
    	this is just wrong, since setting x/y should only be done after a
    	direct change by the user (and not automatically). This function is
    	only used to update the x/y in the geometry, and not in the config.
    	Also, to determine if we need to snap, only use x/y (with right/bottom
    	variants) from the config, not the computed values imposed by
    	constraints. This part fix the case where a panel is right aligned,
    	but gets centered and then left aligned because its size grows
    	(panel_toplevel_update_auto_hide_position): same update
    	(panel_toplevel_update_expanded_position): compute x_right and
    	y_bottom too, and notify of their changes when needed
    	(panel_toplevel_update_position): handle x_right/y_bottom in the
    	temporary position_centered case, and core part of the change: use
    	x_right/y_bottom when they're not -1
    	(panel_toplevel_set_property): updated for new properties
    	(panel_toplevel_get_property): ditto
    	(panel_toplevel_class_init): ditto
    	(panel_toplevel_init): ditto
    	(panel_toplevel_set_expand): small update to put the right values for
    	x_right/y_bottom
    	(panel_toplevel_set_orientation): when rotating a centered panel, set
    	the relevant x_right/y_bottom value to -1 (since the rotated panel is
    	centered (but not "force-centered"), its position is relative to the
    	left/top
    	(panel_toplevel_set_x): add x_right handling
    	(panel_toplevel_set_y): add y_bottom handling
    	(panel_toplevel_get_position): add x_right/y_bottom handling
    
    svn path=/trunk/; revision=10497
    d5cd6921