X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.h;h=a6a3995b30a2aa3fcbbaf33ca61e73092386144c;hb=HEAD;hp=11915f11a78e4cc7d420a0bee1c79211af432365;hpb=26cc41f6c6187dabd5c7ee4365c8fa44751009e5;p=chaz%2Fopenbox diff --git a/openbox/screen.h b/openbox/screen.h index 11915f11..a6a3995b 100644 --- a/openbox/screen.h +++ b/openbox/screen.h @@ -75,8 +75,12 @@ void screen_remove_desktop(gboolean current); guint screen_find_desktop(guint from, ObDirection dir, gboolean wrap, gboolean linear); -/*! Show the desktop popup/notification */ -void screen_show_desktop_popup(guint d); +/*! Show the desktop popup/notification + @permanent If TRUE, the popup will stay on the screen until you call + screen_hide_desktop_popup(). Otherwise it will hide after a + delay. + */ +void screen_show_desktop_popup(guint d, gboolean permanent); /*! Hide it */ void screen_hide_desktop_popup(void); @@ -100,11 +104,31 @@ void screen_install_colormap(struct _ObClient *client, gboolean install); void screen_update_areas(void); -Rect *screen_physical_area_all_monitors(void); +const Rect* screen_physical_area_all_monitors(void); + +/*! Returns a Rect which is owned by the screen code and should not be freed */ +const Rect* screen_physical_area_monitor(guint head); + +/*! Returns the monitor which contains the active window, or the one + containing the pointer otherwise. */ +guint screen_monitor_active(void); -Rect *screen_physical_area_monitor(guint head); +/*! Returns a Rect which is owned by the screen code and should not be freed */ +const Rect* screen_physical_area_active(void); + +/*! Returns the primary monitor, as specified by the config. + @fixed If TRUE, then this will always return a fixed monitor, otherwise + it may change based on where focus is, or other heuristics. + */ +guint screen_monitor_primary(gboolean fixed); -Rect *screen_physical_area_active(void); +/*! Returns physical area for the primary monitor, as specified by the config. + @fixed If TRUE, then this will always use a fixed monitor as primary, + otherwise it may change based on where focus is, or other heuristics. + See screen_monitor_primary(). + @return A Rect which is owned by the screen code and should not be freed +*/ +const Rect* screen_physical_area_primary(gboolean fixed); /* doesn't include struts which the search area is already outside of when 'search' is not NULL */ @@ -114,6 +138,7 @@ Rect *screen_physical_area_active(void); /*! @param head is the number of the head or one of SCREEN_AREA_ALL_MONITORS, SCREEN_AREA_ONE_MONITOR @param search NULL or the whole monitor(s) + @return A Rect allocated with g_slice_new() */ Rect* screen_area(guint desktop, guint head, Rect *search); @@ -123,7 +148,10 @@ gboolean screen_physical_area_monitor_contains(guint head, Rect *search); area of the part of the rectable on each monitor. The number of the monitor containing the greatest area of the rectangle is returned. */ -guint screen_find_monitor(Rect *search); +guint screen_find_monitor(const Rect *search); + +/*! Finds the monitor which contains the point @x, @y */ +guint screen_find_monitor_point(guint x, guint y); /*! Sets the root cursor. This function decides which cursor to use, but you gotta call it to let it know it should change. */ @@ -133,4 +161,15 @@ void screen_set_root_cursor(void); is on this screen and FALSE if it is on another screen. */ gboolean screen_pointer_pos(gint *x, gint *y); +/*! Returns the monitor which contains the pointer device */ +guint screen_monitor_pointer(void); + +/*! Compare the desktop for two windows to see if they are considered on the + same desktop. + Windows that are on "all desktops" are treated like they are only on the + current desktop, so they are only in one place at a time. + @return TRUE if they are on the same desktop, FALSE otherwise. +*/ +gboolean screen_compare_desktops(guint a, guint b); + #endif