[Goodies-commits] r7022 - in gigolo/trunk: . src
Enrico Troeger
enrico at xfce.org
Sun Mar 29 12:31:43 CEST 2009
Author: enrico
Date: 2009-03-29 10:31:43 +0000 (Sun, 29 Mar 2009)
New Revision: 7022
Modified:
gigolo/trunk/ChangeLog
gigolo/trunk/src/main.c
gigolo/trunk/src/window.c
Log:
Minimise to tray on delete-event (close button) instead of when minimising the main window.
Modified: gigolo/trunk/ChangeLog
===================================================================
--- gigolo/trunk/ChangeLog 2009-03-29 10:22:20 UTC (rev 7021)
+++ gigolo/trunk/ChangeLog 2009-03-29 10:31:43 UTC (rev 7022)
@@ -1,3 +1,10 @@
+2009-03-29 Enrico Tröger <enrico(at)xfce(dot)org>
+
+ * src/main.c, src/window.c:
+ Minimise to tray on delete-event (close button) instead of
+ when minimising the main window.
+
+
2009-03-26 Enrico Tröger <enrico(at)xfce(dot)org>
* src/settings.c:
Modified: gigolo/trunk/src/main.c
===================================================================
--- gigolo/trunk/src/main.c 2009-03-29 10:22:20 UTC (rev 7021)
+++ gigolo/trunk/src/main.c 2009-03-29 10:31:43 UTC (rev 7022)
@@ -130,7 +130,6 @@
g_setenv("GIO_USE_VOLUME_MONITOR", vm_impl, 0);
window = gigolo_window_new(settings);
- g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
if (gis != NULL)
gigolo_single_instance_set_parent(gis, GTK_WINDOW(window));
Modified: gigolo/trunk/src/window.c
===================================================================
--- gigolo/trunk/src/window.c 2009-03-29 10:22:20 UTC (rev 7021)
+++ gigolo/trunk/src/window.c 2009-03-29 10:31:43 UTC (rev 7022)
@@ -79,7 +79,6 @@
GtkWidget *systray_icon_popup_menu;
guint autoconnect_timeout_id;
- gboolean window_hidden;
};
enum
@@ -100,41 +99,6 @@
G_DEFINE_TYPE(GigoloWindow, gigolo_window, GTK_TYPE_WINDOW);
-static gboolean gigolo_window_state_event(GtkWidget *widget, GdkEventWindowState *event)
-{
- GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(widget);
- gboolean show_systray_icon = gigolo_settings_get_boolean(priv->settings, "show-in-systray");
-
- if (show_systray_icon)
- {
- if (event->changed_mask & GDK_WINDOW_STATE_ICONIFIED)
- {
- if (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED)
- priv->window_hidden = TRUE;
- else
- priv->window_hidden = FALSE;
- }
- if (event->changed_mask & GDK_WINDOW_STATE_WITHDRAWN)
- {
- if (event->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)
- priv->window_hidden = TRUE;
- else
- priv->window_hidden = FALSE;
- }
-
- if (priv->window_hidden && show_systray_icon)
- {
- gtk_window_set_skip_taskbar_hint(GTK_WINDOW(widget), TRUE);
- }
- else if (! priv->window_hidden)
- {
- gtk_window_set_skip_taskbar_hint(GTK_WINDOW(widget), FALSE);
- }
- }
- return FALSE;
-}
-
-
static void remove_autoconnect_timeout(GigoloWindow *window)
{
GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(window);
@@ -147,19 +111,19 @@
}
-static gboolean gigolo_window_delete_event(GtkWidget *widget, G_GNUC_UNUSED GdkEventAny *event)
+static void gigolo_window_destroy(GigoloWindow *window)
{
- GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(widget);
+ GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(window);
gint geo[5];
- remove_autoconnect_timeout(GIGOLO_WINDOW(widget));
+ remove_autoconnect_timeout(window);
if (gigolo_settings_get_boolean(priv->settings, "save-geometry"))
{
- gtk_window_get_position(GTK_WINDOW(widget), &geo[0], &geo[1]);
- gtk_window_get_size(GTK_WINDOW(widget), &geo[2], &geo[3]);
- if (priv->window_hidden && gdk_window_get_state(
- gigolo_widget_get_window(widget)) & GDK_WINDOW_STATE_MAXIMIZED)
+ gtk_window_get_position(GTK_WINDOW(window), &geo[0], &geo[1]);
+ gtk_window_get_size(GTK_WINDOW(window), &geo[2], &geo[3]);
+ if (gdk_window_get_state(
+ gigolo_widget_get_window(GTK_WIDGET(window))) & GDK_WINDOW_STATE_MAXIMIZED)
geo[4] = 1;
else
geo[4] = 0;
@@ -176,15 +140,33 @@
g_object_unref(priv->systray_icon_popup_menu);
g_object_unref(priv->backend_gvfs);
- return FALSE;
+ gtk_widget_destroy(GTK_WIDGET(window));
+
+ gtk_main_quit();
}
+static gboolean gigolo_window_delete_event(GtkWidget *widget, G_GNUC_UNUSED GdkEventAny *event)
+{
+ GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(widget);
+
+ if (gigolo_settings_get_boolean(priv->settings, "show-in-systray"))
+ {
+ gtk_widget_hide(widget);
+ return TRUE;
+ }
+ else
+ {
+ gigolo_window_destroy(GIGOLO_WINDOW(widget));
+ return FALSE;
+ }
+}
+
+
static void gigolo_window_class_init(GigoloWindowClass *klass)
{
GtkWidgetClass *gtkwidget_class = GTK_WIDGET_CLASS(klass);
gtkwidget_class->delete_event = gigolo_window_delete_event;
- gtkwidget_class->window_state_event = gigolo_window_state_event;
g_type_class_add_private(klass, sizeof(GigoloWindowPrivate));
}
@@ -423,8 +405,7 @@
static void action_quit_cb(G_GNUC_UNUSED GtkAction *action, GigoloWindow *window)
{
- gigolo_window_delete_event(GTK_WIDGET(window), NULL);
- gtk_widget_destroy(GTK_WIDGET(window));
+ gigolo_window_destroy(window);
}
More information about the Goodies-commits
mailing list