static PlumaNotebook * find_notebook_at_pointer (gint abs_x, gint abs_y) { GdkWindow *win_at_pointer; GdkWindow *toplevel_win; gpointer toplevel = NULL; gint x, y; /* FIXME multi-head */ win_at_pointer = gdk_window_at_pointer (&x, &y); if (win_at_pointer == NULL) { /* We are outside all windows of the same application */ return NULL; } toplevel_win = gdk_window_get_toplevel (win_at_pointer); /* get the GtkWidget which owns the toplevel GdkWindow */ gdk_window_get_user_data (toplevel_win, &toplevel); /* toplevel should be an PlumaWindow */ if ((toplevel != NULL) && PLUMA_IS_WINDOW (toplevel)) { return PLUMA_NOTEBOOK (_pluma_window_get_notebook (PLUMA_WINDOW (toplevel))); } /* We are outside all windows containing a notebook */ return NULL; }
void _pluma_cmd_documents_next_document (GtkAction *action, PlumaWindow *window) { GtkNotebook *notebook; pluma_debug (DEBUG_COMMANDS); notebook = GTK_NOTEBOOK (_pluma_window_get_notebook (window)); gtk_notebook_next_page (notebook); }
static GtkTreePath * get_current_path (PlumaDocumentsPanel *panel) { gint num; GtkWidget *nb; GtkTreePath *path; nb = _pluma_window_get_notebook (panel->priv->window); num = gtk_notebook_get_current_page (GTK_NOTEBOOK (nb)); path = gtk_tree_path_new_from_indices (num, -1); return path; }
static void get_iter_from_tab (PlumaDocumentsPanel *panel, PlumaTab *tab, GtkTreeIter *iter) { gint num; GtkWidget *nb; GtkTreePath *path; nb = _pluma_window_get_notebook (panel->priv->window); num = gtk_notebook_page_num (GTK_NOTEBOOK (nb), GTK_WIDGET (tab)); path = gtk_tree_path_new_from_indices (num, -1); gtk_tree_model_get_iter (panel->priv->model, iter, path); gtk_tree_path_free (path); }
void _pluma_cmd_documents_move_to_new_window (GtkAction *action, PlumaWindow *window) { PlumaNotebook *old_notebook; PlumaTab *tab; pluma_debug (DEBUG_COMMANDS); tab = pluma_window_get_active_tab (window); if (tab == NULL) return; old_notebook = PLUMA_NOTEBOOK (_pluma_window_get_notebook (window)); g_return_if_fail (gtk_notebook_get_n_pages (GTK_NOTEBOOK (old_notebook)) > 1); _pluma_window_move_tab_to_new_window (window, tab); }
static void treeview_row_inserted (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, PlumaDocumentsPanel *panel) { PlumaTab *tab; gint *indeces; GtkWidget *nb; gint old_position; gint new_position; if (panel->priv->adding_tab) return; tab = pluma_window_get_active_tab (panel->priv->window); g_return_if_fail (tab != NULL); panel->priv->is_reodering = TRUE; indeces = gtk_tree_path_get_indices (path); /* g_debug ("New Index: %d (path: %s)", indeces[0], gtk_tree_path_to_string (path));*/ nb = _pluma_window_get_notebook (panel->priv->window); new_position = indeces[0]; old_position = gtk_notebook_page_num (GTK_NOTEBOOK (nb), GTK_WIDGET (tab)); if (new_position > old_position) new_position = MAX (0, new_position - 1); pluma_notebook_reorder_tab (PLUMA_NOTEBOOK (nb), tab, new_position); panel->priv->is_reodering = FALSE; }
static void refresh_list (PlumaDocumentsPanel *panel) { /* TODO: refresh the list only if the panel is visible */ GList *tabs; GList *l; GtkWidget *nb; GtkListStore *list_store; PlumaTab *active_tab; /* g_debug ("refresh_list"); */ list_store = GTK_LIST_STORE (panel->priv->model); gtk_list_store_clear (list_store); active_tab = pluma_window_get_active_tab (panel->priv->window); nb = _pluma_window_get_notebook (panel->priv->window); tabs = gtk_container_get_children (GTK_CONTAINER (nb)); l = tabs; panel->priv->adding_tab = TRUE; while (l != NULL) { GdkPixbuf *pixbuf; gchar *name; GtkTreeIter iter; name = tab_get_name (PLUMA_TAB (l->data)); pixbuf = _pluma_tab_get_icon (PLUMA_TAB (l->data)); /* Add a new row to the model */ gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, PIXBUF_COLUMN, pixbuf, NAME_COLUMN, name, TAB_COLUMN, l->data, -1); g_free (name); if (pixbuf != NULL) g_object_unref (pixbuf); if (l->data == active_tab) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (panel->priv->treeview)); gtk_tree_selection_select_iter (selection, &iter); } l = g_list_next (l); } panel->priv->adding_tab = FALSE; g_list_free (tabs); }