diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2007-12-20 21:39:37 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2007-12-20 21:39:37 +0800 |
commit | afdca8a81d71ab9c78780dabea1e651a9a4ccebb (patch) | |
tree | 01b8684b6a1b6a89d40dbd880cc3e533c2db8c61 /libempathy-gtk/empathy-ui-utils.c | |
parent | 511f857fef39819c913d06538836b46d68b6e832 (diff) | |
download | gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.gz gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.bz2 gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.lz gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.xz gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.zst gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.zip |
Simplify empaty_window_present, empathy_window_iconify and empathy_window_is_visible stuff
svn path=/trunk/; revision=491
Diffstat (limited to 'libempathy-gtk/empathy-ui-utils.c')
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.c | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index 16f0116de..6f1b5a857 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -1215,28 +1215,25 @@ empathy_text_iter_backward_search (const GtkTextIter *iter, return retval; } -static gboolean -window_get_is_on_current_workspace (GtkWindow *window) +gboolean +empathy_window_get_is_visible (GtkWindow *window) { - GdkWindow *gdk_window; + GdkWindowState state; + GdkWindow *gdk_window; + + g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE); gdk_window = GTK_WIDGET (window)->window; - if (gdk_window) { - return !(gdk_window_get_state (gdk_window) & - GDK_WINDOW_STATE_ICONIFIED); - } else { + if (!gdk_window) { return FALSE; } -} -/* Checks if the window is visible as in visible on the current workspace. */ -gboolean -empathy_window_get_is_visible (GtkWindow *window) -{ - g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE); + state = gdk_window_get_state (gdk_window); + if (state & (GDK_WINDOW_STATE_WITHDRAWN | GDK_WINDOW_STATE_ICONIFIED)) { + return FALSE; + } - return GTK_WIDGET_VISIBLE (GTK_WIDGET (window)) && - window_get_is_on_current_workspace (window); + return TRUE; } void @@ -1265,38 +1262,29 @@ empathy_window_iconify (GtkWindow *window, GtkStatusIcon *status_icon) gtk_window_set_skip_taskbar_hint (window, TRUE); gtk_window_iconify (window); - } /* Takes care of moving the window to the current workspace. */ void empathy_window_present (GtkWindow *window, - gboolean steal_focus) + gboolean steal_focus) { - gboolean on_current; - guint32 timestamp; + guint32 timestamp; - g_return_if_fail (window != NULL); + g_return_if_fail (GTK_IS_WINDOW (window)); /* There are three cases: hidden, visible, visible on another * workspace. */ - on_current = window_get_is_on_current_workspace (window); - - if ( GTK_WIDGET_VISIBLE (GTK_WIDGET (window)) && !on_current) { + if (!empathy_window_get_is_visible (window)) { /* Hide it so present brings it to the current workspace. */ gtk_widget_hide (GTK_WIDGET (window)); } - gtk_window_set_skip_taskbar_hint (window, FALSE); - timestamp = gtk_get_current_event_time (); - if (steal_focus && timestamp != GDK_CURRENT_TIME) { - gtk_window_present_with_time (window, timestamp); - } else { - gtk_window_present (window); - } + gtk_window_set_skip_taskbar_hint (window, FALSE); + gtk_window_present_with_time (window, timestamp); } GtkWindow * |