mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Make tabs within one notebook reorderable by dnd for gtk>=2.10.
Fixes #343454. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@14550 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
29c95a94cb
commit
1ff9e38a42
@ -1,3 +1,9 @@
|
||||
2006-07-21 Andreas Köhler <andi5.py@gmx.net>
|
||||
|
||||
* configure.in:
|
||||
* src/gnome-utils/gnc-main-window.c: Make tabs within one notebook
|
||||
reorderable by dnd for gtk>=2.10. Fixes #343454.
|
||||
|
||||
2006-07-18 Christian Stimming <stimming@tuhh.de>
|
||||
|
||||
* src/gnc-module/gnc-module.c: On windows, deactivate gnucash's
|
||||
|
13
configure.in
13
configure.in
@ -1176,6 +1176,18 @@ then
|
||||
AM_CONDITIONAL(HAVE_GTK26, test "x$HAVE_GTK26" = "xyes" )
|
||||
|
||||
|
||||
AC_MSG_CHECKING(for GTK - version >= 2.10.0)
|
||||
if $PKG_CONFIG 'gtk+-2.0 >= 2.10.0'
|
||||
then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_GTK_2_10,1,[System has gtk 2.10.0 or better])
|
||||
HAVE_GTK_2_10=yes
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_GTK_2_10, test "x$HAVE_GTK_2_10" = "xyes" )
|
||||
|
||||
|
||||
AC_MSG_CHECKING(for pango version >= 1.8.0)
|
||||
if $PKG_CONFIG 'pango >= 1.8.0'
|
||||
then
|
||||
@ -1887,6 +1899,7 @@ then
|
||||
else
|
||||
### A bunch of am conditionals that need to be set
|
||||
AM_CONDITIONAL(HAVE_GTK26, false )
|
||||
AM_CONDITIONAL(HAVE_GTK_2_10, false)
|
||||
AM_CONDITIONAL(HAVE_PANGO18, false )
|
||||
AM_CONDITIONAL(HAVE_LIBGSF, false)
|
||||
AM_CONDITIONAL(HAVE_GOFFICE, false)
|
||||
|
@ -108,6 +108,9 @@ static void gnc_window_main_window_init (GncWindowIface *iface);
|
||||
/* Callbacks */
|
||||
static void gnc_main_window_add_widget (GtkUIManager *merge, GtkWidget *widget, GncMainWindow *window);
|
||||
static void gnc_main_window_switch_page (GtkNotebook *notebook, GtkNotebookPage *notebook_page, gint pos, GncMainWindow *window);
|
||||
#ifdef HAVE_GTK_2_10
|
||||
static void gnc_main_window_page_reordered (GtkNotebook *notebook, GtkWidget *child, guint pos, GncMainWindow *window);
|
||||
#endif
|
||||
static void gnc_main_window_plugin_added (GncPlugin *manager, GncPlugin *plugin, GncMainWindow *window);
|
||||
static void gnc_main_window_plugin_removed (GncPlugin *manager, GncPlugin *plugin, GncMainWindow *window);
|
||||
|
||||
@ -1889,6 +1892,9 @@ gnc_main_window_connect (GncMainWindow *window,
|
||||
priv->usage_order = g_list_prepend (priv->usage_order, page);
|
||||
gtk_notebook_append_page_menu (notebook, page->notebook_page,
|
||||
tab_hbox, menu_label);
|
||||
#ifdef HAVE_GTK_2_10
|
||||
gtk_notebook_set_tab_reorderable (notebook, page->notebook_page, TRUE);
|
||||
#endif
|
||||
gnc_plugin_page_inserted (page);
|
||||
gtk_notebook_set_current_page (notebook, -1);
|
||||
if (GNC_PLUGIN_PAGE_GET_CLASS(page)->window_changed)
|
||||
@ -2623,6 +2629,10 @@ gnc_main_window_setup_window (GncMainWindow *window)
|
||||
gtk_widget_show (priv->notebook);
|
||||
g_signal_connect (G_OBJECT (priv->notebook), "switch-page",
|
||||
G_CALLBACK (gnc_main_window_switch_page), window);
|
||||
#ifdef HAVE_GTK_2_10
|
||||
g_signal_connect (G_OBJECT (priv->notebook), "page-reordered",
|
||||
G_CALLBACK (gnc_main_window_page_reordered), window);
|
||||
#endif
|
||||
gtk_box_pack_start (GTK_BOX (main_vbox), priv->notebook,
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
@ -2843,6 +2853,46 @@ gnc_main_window_switch_page (GtkNotebook *notebook,
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
#ifdef HAVE_GTK_2_10
|
||||
/** This function is invoked when a GtkNotebook tab gets reordered by
|
||||
* drag and drop. It adjusts the list installed_pages to reflect the new
|
||||
* ordering so that GnuCash saves and restores the tabs correctly.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
static void
|
||||
gnc_main_window_page_reordered (GtkNotebook *notebook,
|
||||
GtkWidget *child,
|
||||
guint pos,
|
||||
GncMainWindow *window)
|
||||
{
|
||||
GncMainWindowPrivate *priv;
|
||||
GncPluginPage *page;
|
||||
GList *old_link;
|
||||
|
||||
ENTER("Notebook %p, child %p, index %d, window %p",
|
||||
notebook, child, pos, window);
|
||||
g_return_if_fail (GNC_IS_MAIN_WINDOW (window));
|
||||
|
||||
if (!child) return;
|
||||
|
||||
priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
|
||||
|
||||
page = g_object_get_data (G_OBJECT (child), PLUGIN_PAGE_LABEL);
|
||||
if (!page) return;
|
||||
|
||||
old_link = g_list_find (priv->installed_pages, page);
|
||||
if (!old_link) return;
|
||||
|
||||
priv->installed_pages = g_list_delete_link (priv->installed_pages,
|
||||
old_link);
|
||||
priv->installed_pages = g_list_insert (priv->installed_pages,
|
||||
page, pos);
|
||||
|
||||
LEAVE(" ");
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
gnc_main_window_plugin_added (GncPlugin *manager,
|
||||
GncPlugin *plugin,
|
||||
|
Loading…
Reference in New Issue
Block a user