static void task_item_set_visibility (TaskItem *item) { WnckScreen *screen; WnckWindow *window; WnckWorkspace *workspace; g_return_if_fail (TASK_IS_ITEM (item)); TaskItemPrivate *priv = item->priv; if (!WNCK_IS_WINDOW (priv->window)) { gtk_widget_hide (GTK_WIDGET (item)); return; } window = priv->window; screen = priv->screen; workspace = wnck_screen_get_active_workspace (screen); gboolean show_all = task_list_get_show_all_windows (TASK_LIST (task_list_get_default ())); gboolean show_window = FALSE; if (!wnck_window_is_skip_tasklist (window)) { if (wnck_workspace_is_virtual (workspace)) { show_window = wnck_window_is_in_viewport (window, workspace); } else { show_window = wnck_window_is_on_workspace (window, workspace); } show_window = show_window || show_all; } if (show_window) { gtk_widget_show (GTK_WIDGET (item)); } else { gtk_widget_hide (GTK_WIDGET (item)); } }
static void on_active_window_changed (WnckScreen *screen, WnckWindow *old_window, TaskTitle *title) { g_return_if_fail (TASK_IS_TITLE (title)); WnckWindow *act_window = wnck_screen_get_active_window (screen); WnckWindowType type = WNCK_WINDOW_NORMAL; TaskTitlePrivate *priv = title->priv; if (act_window) type = wnck_window_get_window_type (act_window); disconnect_window (title); // Depending on the type and state of the window we adjust the title if(WNCK_IS_WINDOW(act_window)) { if(type == WNCK_WINDOW_DESKTOP) { /* The current window is the desktop so we show the home title if * the user has configured this, otherwise we hide the title */ if (window_picker_applet_get_show_home_title (priv->windowPickerApplet)) { show_home_title(title); } else { hide_title (title); } } else if(wnck_window_is_skip_tasklist (act_window) && type != WNCK_WINDOW_DESKTOP) { /* The current window is not in the task list, we dont change the * current title. */ return; } else if(type == WNCK_WINDOW_DOCK || type == WNCK_WINDOW_SPLASHSCREEN || type == WNCK_WINDOW_MENU) { return; } else { //for all other types if(wnck_window_is_maximized (act_window) && window_picker_applet_get_show_application_title (priv->windowPickerApplet)) { //show normal title of window gtk_label_set_text (GTK_LABEL (priv->label), wnck_window_get_name (act_window)); gtk_image_set_from_icon_name (GTK_IMAGE (priv->button_image), "window-close", GTK_ICON_SIZE_MENU); gtk_widget_set_tooltip_text (GTK_WIDGET (title), wnck_window_get_name (act_window)); gtk_widget_set_tooltip_text (priv->button, _("Close window")); g_signal_connect (act_window, "name-changed", G_CALLBACK (on_name_changed), title); g_signal_connect_after (act_window, "state-changed", G_CALLBACK (on_state_changed), title); gtk_widget_show (priv->grid); priv->window = act_window; } else { hide_title (title); //only show the title for maximized windows } } } else { //its not a window if (task_list_get_desktop_visible (TASK_LIST (window_picker_applet_get_tasks (priv->windowPickerApplet))) && window_picker_applet_get_show_home_title (priv->windowPickerApplet)) { show_home_title(title); } else { //reset the task title and hide it hide_title (title); } } gtk_widget_queue_draw (GTK_WIDGET (title)); }