--- window-picker-applet-0.4.0.orig/src/task-title.c +++ window-picker-applet-0.4.0/src/task-title.c @@ -41,9 +41,43 @@ GtkWidget *label; GtkWidget *button; GtkWidget *button_image; + GtkWidget *toggle; + GtkWidget *toggle_image; }; static gboolean +on_toggle_clicked (GtkButton *button, + GdkEventButton *event, + TaskTitle *title) +{ + TaskTitlePrivate *priv; + WnckWindow *window; + + g_return_val_if_fail (TASK_IS_TITLE (title), FALSE); + priv = title->priv; + + if (event->button != 1) + return FALSE; + + window = wnck_screen_get_active_window (priv->screen); + + if (!WNCK_IS_WINDOW (window) + || wnck_window_get_window_type (window) == WNCK_WINDOW_DESKTOP) + return FALSE; + + if (wnck_window_is_maximized(window)) + { + wnck_window_unmaximize (window); + } + else + { + wnck_window_maximize (window); + } + + return TRUE; +} + +static gboolean on_close_clicked (GtkButton *button, GdkEventButton *event, TaskTitle *title) @@ -146,7 +180,9 @@ _("Log off, switch user, lock screen or power " "down the computer")); gtk_widget_set_tooltip_text (GTK_WIDGET (title), - _("Home")); + _("Home")); + gtk_widget_hide (priv->toggle_image); + gtk_widget_hide (priv->toggle); } else { @@ -165,6 +201,8 @@ G_CALLBACK (on_name_changed), title); g_signal_connect (act_window, "icon-changed", G_CALLBACK (on_icon_changed), title); + gtk_widget_show (priv->toggle); + gtk_widget_show (priv->toggle_image); } gtk_widget_queue_draw (GTK_WIDGET (title)); @@ -239,7 +277,7 @@ task_title_init (TaskTitle *title) { TaskTitlePrivate *priv; - + priv = title->priv = TASK_TITLE_GET_PRIVATE (title); priv->screen = wnck_screen_get_default (); @@ -265,6 +303,22 @@ gtk_box_pack_start (GTK_BOX (priv->box), priv->label, TRUE, TRUE, 0); gtk_widget_show (priv->label); + priv->toggle = g_object_new (GTK_TYPE_EVENT_BOX, + "visible-window", FALSE, + "above-child", TRUE, + NULL); + gtk_box_pack_start (GTK_BOX (priv->box), priv->toggle, FALSE, FALSE, 0); + gtk_widget_show (priv->toggle); + g_signal_connect (priv->toggle, "button-release-event", + G_CALLBACK (on_toggle_clicked), title); + + priv->toggle_image = gtk_image_new_from_stock (GTK_STOCK_ZOOM_FIT, + GTK_ICON_SIZE_MENU); + gtk_widget_show (priv->toggle_image); + gtk_container_add (GTK_CONTAINER (priv->toggle), priv->toggle_image); + gtk_widget_set_tooltip_text (priv->toggle, + _("Toggle maximized")); + priv->button = g_object_new (GTK_TYPE_EVENT_BOX, "visible-window", FALSE, "above-child", TRUE, @@ -278,15 +332,14 @@ GTK_ICON_SIZE_MENU); gtk_container_add (GTK_CONTAINER (priv->button), priv->button_image); gtk_widget_show (priv->button_image); - gtk_widget_set_tooltip_text (priv->button, _("Log off, switch user, lock screen or power " "down the computer")); + gtk_widget_set_tooltip_text (GTK_WIDGET (title), _("Home")); gtk_widget_set_state (GTK_WIDGET (title), GTK_STATE_ACTIVE); - gtk_widget_add_events (GTK_WIDGET (title), GDK_ALL_EVENTS_MASK); g_signal_connect (priv->screen, "active-window-changed",