예제 #1
0
static gboolean
activate_window (GtkWidget *widget)
{
  gint active;
  TaskItemPrivate *priv;

  g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
  g_return_val_if_fail (TASK_IS_ITEM (widget), FALSE);

  priv = TASK_ITEM (widget)->priv;
  
  g_return_val_if_fail (WNCK_IS_WINDOW (priv->window), FALSE);

  active = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "drag-true"));

  if (active)
  { 
    WnckWindow *window;

    window = priv->window;
    if (WNCK_IS_WINDOW (window))
      wnck_window_activate (window, time (NULL));
  }
  
  g_object_set_data (G_OBJECT (widget), "drag-true", GINT_TO_POINTER (0));
  
  return FALSE;
}
예제 #2
0
파일: windows.c 프로젝트: jpinon/bonnye
void window_activate(WnckWindow *window)
{
	XEvent xev;
	Window xwindow;

	g_return_if_fail (WNCK_IS_WINDOW (window));
	if (wnck_window_is_minimized(window)) {
		return;
	}
	xwindow = wnck_window_get_xid(window);

	xev.xclient.type = ClientMessage;
	xev.xclient.serial = 0;
	xev.xclient.send_event = TRUE;
	xev.xclient.display = main_dpy;
	xev.xclient.window = xwindow;
	xev.xclient.message_type = XInternAtom(main_dpy, "_NET_ACTIVE_WINDOW",FALSE);
	xev.xclient.format = 32;
	xev.xclient.data.l[0] = 2; /* WNCK_CLIENT_TYPE_PAGER */
	xev.xclient.data.l[1] = 0;
	xev.xclient.data.l[2] = 0;
	xev.xclient.data.l[3] = 0;
	xev.xclient.data.l[4] = 0;

	XSendEvent (main_dpy,
	            DefaultRootWindow(main_dpy),
	            FALSE,
	            SubstructureRedirectMask | SubstructureNotifyMask,
	            &xev);
}
예제 #3
0
GdkPixbuf *wibuti_watcher_get_icon(WibutiWatcher *self) {
	if (WNCK_IS_WINDOW(self->tracked)) {
		return wnck_window_get_icon(self->tracked);
	} else {
		return NULL;
	}
}
예제 #4
0
gboolean wibuti_watcher_is_maximized(WibutiWatcher *self) {
	if (WNCK_IS_WINDOW(self->tracked)) {
		return wnck_window_is_maximized(self->tracked);
	} else {
		return FALSE;
	}
}
예제 #5
0
static void
wnck_action_menu_set_property (GObject      *object,
                               guint         prop_id,
                               const GValue *value,
                               GParamSpec   *pspec)
{
  WnckActionMenu *menu;

  g_return_if_fail (WNCK_IS_ACTION_MENU (object));

  menu = WNCK_ACTION_MENU (object);

  switch (prop_id)
    {
      case PROP_WINDOW:
        g_return_if_fail (WNCK_IS_WINDOW (g_value_get_pointer (value)));

        menu->priv->window = g_value_get_pointer (value);
        g_object_notify (G_OBJECT (menu), "window");
        break;
      default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
        break;
    }
}
예제 #6
0
static void
wnck_action_menu_dispose (GObject *object)
{
  WnckActionMenu *menu;

  menu = WNCK_ACTION_MENU (object);

  if (menu->priv->idle_handler)
    {
      g_source_remove (menu->priv->idle_handler);
      menu->priv->idle_handler = 0;
    }

  if (WNCK_IS_WINDOW (menu->priv->window))
    {
      g_object_weak_unref (G_OBJECT (menu->priv->window), window_weak_notify, menu);
      g_signal_handlers_disconnect_by_data (menu->priv->window, menu);

      WnckScreen *screen = wnck_window_get_screen (menu->priv->window);
      g_signal_handlers_disconnect_by_data (screen, menu);

      menu->priv->window = NULL;
    }

  G_OBJECT_CLASS (wnck_action_menu_parent_class)->dispose (object);
}
예제 #7
0
파일: windows.c 프로젝트: jpinon/bonnye
void window_handle(WnckWindow *window, gboolean want_tiled)
{
	if (!WNCK_IS_WINDOW (window)) {
		fprintf(stderr, "[bonnye] Trying to rehandle something that is not a window\n");
		return;
	}
	int spaceid = workspace_get_from_window(window);
	gboolean is_tiled = workspace_has_tiled_window(spaceid, window);
	if (want_tiled) {
		if (is_tiled) {
			fprintf(stderr, "[bonnye] Trying to tile a tiled window. Doing nothing\n");
			return;
		}
		workspace_add_window(spaceid, window);
		window_init(spaceid, window);
	} else {
		if (!is_tiled) {
			fprintf(stderr, "[bonnye] Trying to untile an untiled window. Doing nothing\n");
			return;
		}
		workspace_remove_window(spaceid, window);
		window_clear(window);
	}
	tile(spaceid);
}
예제 #8
0
const gchar *wibuti_watcher_get_title(WibutiWatcher *self) {
	if (WNCK_IS_WINDOW(self->tracked)) {
		return wnck_window_get_name(self->tracked);
	} else {
		return "Desktop";
	}
}
예제 #9
0
void wibuti_watcher_maximize_restore(WibutiWatcher *self) {
	if (WNCK_IS_WINDOW(self->tracked)) {
		if (wnck_window_is_maximized(self->tracked)) {
			wnck_window_unmaximize(self->tracked);
		} else {
			wnck_window_maximize(self->tracked);
		}
	}
}
예제 #10
0
/**
 * wnck_action_menu_new:
 * @window: the #WnckWindow for which a menu will be created.
 *
 * Creates a new #WnckActionMenu. The #WnckActionMenu will be filled with menu
 * items for window operations on @window.
 *
 * Return value: a newly created #WnckActionMenu.
 *
 * Since: 2.22
 **/
GtkWidget*
wnck_action_menu_new (WnckWindow *window)
{
  g_return_val_if_fail (WNCK_IS_WINDOW (window), NULL);

  return g_object_new (WNCK_TYPE_ACTION_MENU,
                       "window", window,
                       NULL);
}
예제 #11
0
static void on_name_changed (WnckWindow *window, TaskTitle *title) {
    g_return_if_fail (TASK_IS_TITLE (title));
    g_return_if_fail (WNCK_IS_WINDOW (window));
    gtk_label_set_text (GTK_LABEL (title->priv->label),
        wnck_window_get_name (window));
    gtk_widget_set_tooltip_text (GTK_WIDGET (title),
        wnck_window_get_name (window));
    gtk_widget_queue_draw (GTK_WIDGET (title));
}
예제 #12
0
static void
on_screen_active_window_changed (WnckScreen    *screen,
                                 WnckWindow    *old_window,
                                 TaskItem      *item)
{
  WnckWindow *window;
  TaskItemPrivate *priv;

  g_return_if_fail (TASK_IS_ITEM (item));

  priv = item->priv;
  window = priv->window;
  
  g_return_if_fail (WNCK_IS_WINDOW (window));
  
  if ((WNCK_IS_WINDOW (old_window) && window == old_window) ||
       window == wnck_screen_get_active_window (screen))
  {
    /* queue a draw to reflect that we are [no longer] the active window */
    gtk_widget_queue_draw (GTK_WIDGET (item));
  }
}
예제 #13
0
static void
update_hints (TaskItem *item)
{
  GtkWidget *parent;
  GtkWidget *widget;
  GtkAllocation *allocation;
  WnckWindow *window;
  GdkWindow *gdkwindow;
  gint x, y, x1, y1;

  widget = GTK_WIDGET (item);
  window = item->priv->window;
  /* Skip problems */
  if (!WNCK_IS_WINDOW (window)) return;
  if (!GTK_IS_WIDGET (widget)) return;

  /* Skip invisible windows */
  if (!gtk_widget_get_visible (widget)) return;

  x = y = 0;

  /* Recursively compute the button's coordinates */
  for (parent = widget; parent; parent = gtk_widget_get_parent (parent))
  {
    if (gtk_widget_get_parent (parent))
    {
      gtk_widget_get_allocation (parent, allocation);
      x += allocation->x;
      y += allocation->y;
    }
    else
    {
      x1 = y1 = 0;
      gdkwindow = gtk_widget_get_window (parent);
#if !GTK_CHECK_VERSION (3, 0, 0)
      if (GDK_IS_WINDOW (gdkwindow))
#endif
        gdk_window_get_origin (gdkwindow, &x1, &y1);
      x += x1; y += y1;
      break;
    }
  }
    
  /* Set the minimize hint for the window */
  gtk_widget_get_allocation (widget, allocation);
  if (allocation) {	
  	wnck_window_set_icon_geometry (window, x, y,
                                 allocation->width,
                                 allocation->height);
  }
}
예제 #14
0
static gboolean
on_query_tooltip (GtkWidget *widget,
                  gint x, gint y, 
                  gboolean keyboard_mode, 
                  GtkTooltip *tooltip,
                  TaskItem *item)
{
  WnckWindow *window = item->priv->window;
  g_return_val_if_fail (WNCK_IS_WINDOW (window), FALSE);

  gtk_tooltip_set_text (tooltip, wnck_window_get_name(window));
  gtk_tooltip_set_icon (tooltip, wnck_window_get_icon (window));

  return TRUE;
}
예제 #15
0
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));
  }
}
예제 #16
0
static GdkPixbuf *
task_item_sized_pixbuf_for_window (TaskItem   *item,
                                   WnckWindow *window,
                                   gint size)
{
  GdkPixbuf *pbuf = NULL;
  
  g_return_val_if_fail (WNCK_IS_WINDOW (window), NULL);
  
  if (wnck_window_has_icon_name (window))
  {
    const gchar *icon_name = wnck_window_get_icon_name (window);
    GtkIconTheme *icon_theme = gtk_icon_theme_get_default ();
    
    if (gtk_icon_theme_has_icon (icon_theme, icon_name))
    {
      GdkPixbuf *internal = gtk_icon_theme_load_icon (icon_theme, 
                                                      icon_name,
                                                      size,
                                                      GTK_ICON_LOOKUP_FORCE_SIZE,
                                                      NULL);
      pbuf = gdk_pixbuf_copy (internal);
      g_object_unref (internal);
    }
  }
  
  if (!pbuf)
  {
    pbuf = gdk_pixbuf_copy (wnck_window_get_icon (item->priv->window));
  }
  
  gint width = gdk_pixbuf_get_width (pbuf);
  gint height = gdk_pixbuf_get_height (pbuf);

  if (MAX (width, height) != size)
  {
    gdouble scale = (gdouble) size / (gdouble) MAX (width, height);
  
    GdkPixbuf *tmp = pbuf;
    pbuf = gdk_pixbuf_scale_simple (tmp, (gint) (width * scale), (gint) (height * scale), GDK_INTERP_HYPER);
    
    g_object_unref (tmp);
  }
 
  return pbuf;
}
예제 #17
0
/**
 * Depending on whether the window is maximized the task title is shown
 * or hidden.
 */
static void on_state_changed (WnckWindow *window,
        WnckWindowState changed_mask,
        WnckWindowState new_state,
        TaskTitle *title)
{
    TaskTitlePrivate *priv = title->priv;
    g_return_if_fail (TASK_IS_TITLE (title));
    g_return_if_fail (WNCK_IS_WINDOW (window));
    if (priv->window != window)
        return;
    if (wnck_window_is_maximized (window)) {
        gtk_widget_set_state_flags (GTK_WIDGET (title), GTK_STATE_FLAG_ACTIVE, TRUE);
        gtk_widget_show (priv->grid);
    } else {
        gtk_widget_set_state_flags (GTK_WIDGET (title), GTK_STATE_FLAG_NORMAL, TRUE);
        gtk_widget_hide (priv->grid);
    }
}
예제 #18
0
static void
on_window_state_changed (WnckWindow      *window,
                         WnckWindowState  changed_mask,
                         WnckWindowState  new_state,
                         TaskItem        *item)
{
  g_return_if_fail (WNCK_IS_WINDOW (window));
  g_return_if_fail (TASK_IS_ITEM (item));
  
  TaskItemPrivate *priv = item->priv;
  
  if (new_state & WNCK_WINDOW_STATE_URGENT && !priv->timer)
  {
    priv->timer = g_timeout_add (30, (GSourceFunc)on_blink, item);
    g_get_current_time (&priv->urgent_time);
  }
  
  task_item_set_visibility (item);
}
예제 #19
0
static gboolean
on_button_pressed (GtkWidget      *button,
                   GdkEventButton *event,
                   TaskItem       *item)
{
  WnckWindow *window;
  g_return_val_if_fail (TASK_IS_ITEM (item), FALSE);
  window = item->priv->window;
  g_return_val_if_fail (WNCK_IS_WINDOW (window), FALSE);

  if (event->button == 3)
  {
    GtkWidget *menu = wnck_action_menu_new (window);
    gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
                    event->button, event->time);
    return TRUE;
  }

  return FALSE;
}
예제 #20
0
GtkWidget*
window_menu_item_new (WnckWindow* window)
{
  WnckApplication* application;
  GdkPixbuf* pixbuf;
  GtkWidget* item;
  GtkWidget* label;
  gchar    * markup;

  g_return_val_if_fail (WNCK_IS_WINDOW (window), NULL);

  item = gtk_image_menu_item_new ();

  application = wnck_window_get_application (window);

  /* FIXME: track icon changes */
  pixbuf = wnck_application_get_icon (application);
  if (pixbuf)
    {
      GtkWidget* image = gtk_image_new_from_pixbuf (pixbuf);
      gtk_widget_show (image);
      gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
    }

  g_signal_connect (item, "activate",
                    G_CALLBACK (window_item_activated), window);

  /* FIXME: track name changes */
  label = gtk_label_new (NULL);
  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
  markup = g_strdup_printf ("<b>%s</b>\n<small>%s</small>",
                            wnck_application_get_name (application),
                            wnck_window_get_name (window));
  gtk_label_set_markup (GTK_LABEL (label), markup);
  g_free (markup);

  gtk_widget_show (label);
  gtk_container_add (GTK_CONTAINER (item), label);

  return item;
}
예제 #21
0
static void
task_item_setup_atk (TaskItem *item)
{
  TaskItemPrivate *priv;
  GtkWidget *widget;
  AtkObject *atk;
  WnckWindow *window;
  
  g_return_if_fail (TASK_IS_ITEM (item));
  
  widget = GTK_WIDGET (item);
  priv = item->priv;
  window = priv->window;
  
  g_return_if_fail (WNCK_IS_WINDOW (window));
  
  atk = gtk_widget_get_accessible (widget);
  atk_object_set_name (atk, _("Window Task Button"));
  atk_object_set_description (atk, wnck_window_get_name (window));
  atk_object_set_role (atk, ATK_ROLE_PUSH_BUTTON);
}
예제 #22
0
/**
 * Event handler for clicking on the title (not the close button)
 * On double click unmaximized the window
 * On right click it shows the context menu for the current window
 */
static gboolean on_button_press (GtkWidget *title, GdkEventButton *event) {
    g_return_val_if_fail (TASK_IS_TITLE (title), FALSE);
    TaskTitlePrivate *priv = TASK_TITLE (title)->priv;
    WnckWindow *window = wnck_screen_get_active_window (priv->screen);
    g_return_val_if_fail (WNCK_IS_WINDOW (window), FALSE);

    if (event->button == 3) { //right click
        if (wnck_window_get_window_type (window) != WNCK_WINDOW_DESKTOP) {
            GtkWidget *menu = wnck_action_menu_new (window);
            gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
                event->button, event->time);
            return TRUE;
        }
    } else if (event->button == 1) { //left button double click
        if (event->type == GDK_2BUTTON_PRESS
            && wnck_window_is_maximized (window)) {
                wnck_window_unmaximize (window);
        }
    }
    return FALSE;
}
예제 #23
0
/**
 * The event handler for the close icon. This closes the window and terminates
 * the program.
 */
static gboolean on_close_clicked (GtkButton *button,
    GdkEventButton *event,
    TaskTitle *title)
{
    g_return_val_if_fail (TASK_IS_TITLE (title), FALSE);
    TaskTitlePrivate *priv = title->priv;
    if (event->button != 1 || !priv->mouse_in_close_button)
        return FALSE;
    WnckWindow *window = wnck_screen_get_active_window (priv->screen);
    if (!WNCK_IS_WINDOW (window)
        || wnck_window_get_window_type (window) == WNCK_WINDOW_DESKTOP)
    {
        fprintf(stdout, "Error\n");
        fflush(stdout);
    } else {
        if (priv->window == window)
            disconnect_window (title);
        wnck_window_close (window, event->time);
    }
    gtk_widget_queue_draw (GTK_WIDGET (title));
    return TRUE;
}
예제 #24
0
static gboolean 
on_task_item_button_released (GtkWidget      *widget, 
                              GdkEventButton *event,
                              TaskItem       *item)
{
  WnckWindow *window;
  WnckScreen *screen;
  WnckWorkspace *workspace;
  TaskItemPrivate *priv;
  
  g_return_val_if_fail (TASK_IS_ITEM (item), TRUE);
  
  priv = item->priv;
  window = priv->window;
  
  g_return_val_if_fail (WNCK_IS_WINDOW (window), TRUE);
  
  screen = priv->screen;
  workspace = wnck_window_get_workspace (window);
  
  if (event->button == 1)
  {
  
    if (WNCK_IS_WORKSPACE (workspace) && workspace != wnck_screen_get_active_workspace (screen))
    {
      wnck_workspace_activate (workspace, GDK_CURRENT_TIME);
    }
    if (wnck_window_is_active (window))
    {
      wnck_window_minimize (window);
    }
    else
    {
      wnck_window_activate (window, GDK_CURRENT_TIME);
    }
  }
  return TRUE;
}
예제 #25
0
static void
on_screen_window_closed (WnckScreen  *screen,
                         WnckWindow  *window,
                         TaskItem    *item)
{
  TaskItemPrivate *priv;
 
  g_return_if_fail (TASK_IS_ITEM (item));
  priv = item->priv;
  g_return_if_fail (WNCK_IS_WINDOW (priv->window));

  if (priv->window == window)
  {
    g_signal_handlers_disconnect_by_func (screen, G_CALLBACK (on_screen_window_closed), item);
    g_signal_handlers_disconnect_by_func (screen, G_CALLBACK (on_screen_active_window_changed), item);
    g_signal_handlers_disconnect_by_func (screen, G_CALLBACK (on_screen_active_workspace_changed), item);
    g_signal_handlers_disconnect_by_func (screen, G_CALLBACK (on_screen_window_closed), item);
    g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_window_workspace_changed), item);
    g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_window_state_changed), item);
  
    g_signal_emit (G_OBJECT (item), task_item_signals[TASK_ITEM_CLOSED_SIGNAL], 0);
  }
}
예제 #26
0
void
_wnck_application_add_window (WnckApplication *app,
                              WnckWindow      *window)
{
  g_return_if_fail (WNCK_IS_APPLICATION (app));
  g_return_if_fail (WNCK_IS_WINDOW (window));
  g_return_if_fail (wnck_window_get_application (window) == NULL);
  
  app->priv->windows = g_list_prepend (app->priv->windows, window);  
  _wnck_window_set_application (window, app);

  g_signal_connect (G_OBJECT (window), "name_changed",
                    G_CALLBACK (window_name_changed), app);
  
  /* emits signals, so do it last */
  reset_name (app);
  update_name (app);

  /* see if we're using icon from a window */
  if (app->priv->icon == NULL ||
      app->priv->mini_icon == NULL)
    emit_icon_changed (app);
}
예제 #27
0
void
_wnck_application_remove_window (WnckApplication *app,
                                 WnckWindow      *window)
{
  g_return_if_fail (WNCK_IS_APPLICATION (app));
  g_return_if_fail (WNCK_IS_WINDOW (window));
  g_return_if_fail (wnck_window_get_application (window) == app);
  
  app->priv->windows = g_list_remove (app->priv->windows, window);
  _wnck_window_set_application (window, NULL);

  g_signal_handlers_disconnect_by_func (G_OBJECT (window),
                                        window_name_changed, app);
  
  /* emits signals, so do it last */
  reset_name (app);
  update_name (app);

  /* see if we're using icon from a window */
  if (app->priv->icon == NULL ||
      app->priv->mini_icon == NULL)
    emit_icon_changed (app);
}
예제 #28
0
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));
}
예제 #29
0
void wibuti_watcher_close(WibutiWatcher *self) {
	if (WNCK_IS_WINDOW(self->tracked)) {
		wnck_window_close(self->tracked, GDK_CURRENT_TIME);
	}
}
예제 #30
0
void wibuti_watcher_minimize(WibutiWatcher *self) {
	if (WNCK_IS_WINDOW(self->tracked)) {
		wnck_window_minimize(self->tracked);
	}
}