mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-21 03:52:33 +00:00
removed the "Select Tab" menu and all the evil hacks that were needed to
2003-10-18 Sven Neumann <sven@gimp.org> * app/widgets/gimpdockbook.c: removed the "Select Tab" menu and all the evil hacks that were needed to make it work. Now that we have an extra dockable menu, the standard menu from GTK+ is good enough. * app/widgets/gimpdockable.c: added a tooltip to the close button and removed code that used to hide the "Select Tab" menu. * app/gui/dialogs-menu.c (dialogs_menu_entries): removed now unused "Select Tab" entry.
This commit is contained in:
parent
8c26afbb1f
commit
5b84acdc81
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2003-10-18 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* app/widgets/gimpdockbook.c: removed the "Select Tab" menu and
|
||||
all the evil hacks that were needed to make it work. Now that we
|
||||
have an extra dockable menu, the standard menu from GTK+ is good
|
||||
enough.
|
||||
|
||||
* app/widgets/gimpdockable.c: added a tooltip to the close button
|
||||
and removed code that used to hide the "Select Tab" menu.
|
||||
|
||||
* app/gui/dialogs-menu.c (dialogs_menu_entries): removed now unused
|
||||
"Select Tab" entry.
|
||||
|
||||
2003-10-18 Dave Neary <bolsh@gimp.org>
|
||||
|
||||
* plug-ins/common/despeckle.c
|
||||
|
|
|
@ -63,9 +63,6 @@ GimpItemFactoryEntry dialogs_menu_entries[] =
|
|||
"<StockItem>", GTK_STOCK_MISSING_IMAGE },
|
||||
NULL, NULL, NULL },
|
||||
|
||||
{ { N_("/_Select Tab"), NULL, NULL, 0 },
|
||||
NULL, NULL, NULL },
|
||||
|
||||
MENU_BRANCH (N_("/_Add Tab")),
|
||||
|
||||
ADD_TAB (N_("/Add Tab/Tool _Options"), "gimp-tool-options",
|
||||
|
|
|
@ -38,6 +38,8 @@
|
|||
#include "gimpitemfactory.h"
|
||||
#include "gimpwidgets-utils.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
static void gimp_dockable_class_init (GimpDockableClass *klass);
|
||||
static void gimp_dockable_init (GimpDockable *dockable);
|
||||
|
@ -196,6 +198,8 @@ gimp_dockable_init (GimpDockable *dockable)
|
|||
gtk_button_set_relief (GTK_BUTTON (dockable->close_button), GTK_RELIEF_NONE);
|
||||
gtk_widget_show (dockable->close_button);
|
||||
|
||||
gimp_help_set_help_data (dockable->close_button, _("Close this Tab"), NULL);
|
||||
|
||||
image = gtk_image_new_from_stock (GIMP_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
|
||||
gtk_container_add (GTK_CONTAINER (dockable->close_button), image);
|
||||
gtk_widget_show (image);
|
||||
|
@ -888,9 +892,6 @@ gimp_dockable_show_menu (GimpDockable *dockable)
|
|||
"/dialog-menu", FALSE);
|
||||
}
|
||||
|
||||
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (dockbook_item_factory),
|
||||
"/Select Tab", FALSE);
|
||||
|
||||
/* an item factory callback may destroy both dockable and dockbook,
|
||||
* so reference them for gimp_dockable_menu_end()
|
||||
*/
|
||||
|
|
|
@ -78,14 +78,6 @@ static void gimp_dockbook_dockable_removed (GimpDockbook *dockbook,
|
|||
static void gimp_dockbook_update_tabs (GimpDockbook *dockbook,
|
||||
gboolean added);
|
||||
|
||||
static void gimp_dockbook_menu_switch_page (GtkWidget *widget,
|
||||
GimpDockable *dockable);
|
||||
static void gimp_dockbook_menu_end (GimpDockbook *dockbook);
|
||||
static void gimp_dockbook_menu_detacher (GtkWidget *widget,
|
||||
GtkMenu *menu);
|
||||
static gboolean gimp_dockbook_tab_button_press (GtkWidget *widget,
|
||||
GdkEventButton *bevent,
|
||||
gpointer data);
|
||||
static void gimp_dockbook_tab_drag_begin (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
gpointer data);
|
||||
|
@ -375,54 +367,6 @@ gimp_dockbook_add (GimpDockbook *dockbook,
|
|||
position);
|
||||
}
|
||||
|
||||
/* Now this is evil: GtkNotebook's menu_item "activate" callback
|
||||
* gets it's notebook context from gtk_menu_get_attach_widget()
|
||||
* which badly fails because we hijacked the menu and attached it
|
||||
* to our own item_factory menu. As a workaround, we disconnect
|
||||
* gtk's handler and install our own. --Mitch
|
||||
*/
|
||||
{
|
||||
GtkWidget *menu_item;
|
||||
GList *widget_list, *free_list;
|
||||
GList *page_list;
|
||||
|
||||
menu_item = menu_widget->parent;
|
||||
|
||||
free_list = gtk_container_get_children (GTK_CONTAINER (dockbook));
|
||||
|
||||
/* EEK: we rely a 1:1 and left-to-right mapping of
|
||||
* gtk_container_get_children() and notebook->children
|
||||
*/
|
||||
for (widget_list = free_list,
|
||||
page_list = GTK_NOTEBOOK (dockbook)->children;
|
||||
widget_list && page_list;
|
||||
widget_list = g_list_next (widget_list),
|
||||
page_list = g_list_next (page_list))
|
||||
{
|
||||
GtkNotebookPage *page;
|
||||
|
||||
page = (GtkNotebookPage *) page_list->data;
|
||||
|
||||
if ((GtkWidget *) widget_list->data == (GtkWidget *) dockable)
|
||||
{
|
||||
/* disconnect GtkNotebook's handler */
|
||||
g_signal_handlers_disconnect_matched (menu_item,
|
||||
G_SIGNAL_MATCH_DATA,
|
||||
0, 0,
|
||||
NULL, NULL, page);
|
||||
|
||||
/* and install our own */
|
||||
g_signal_connect (menu_item, "activate",
|
||||
G_CALLBACK (gimp_dockbook_menu_switch_page),
|
||||
dockable);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
g_list_free (free_list);
|
||||
}
|
||||
|
||||
gtk_widget_show (GTK_WIDGET (dockable));
|
||||
|
||||
dockable->dockbook = dockbook;
|
||||
|
@ -526,10 +470,6 @@ gimp_dockbook_get_tab_widget (GimpDockbook *dockbook,
|
|||
G_CALLBACK (gimp_dockbook_tab_drag_drop),
|
||||
dockbook);
|
||||
|
||||
g_signal_connect (tab_widget, "button_press_event",
|
||||
G_CALLBACK (gimp_dockbook_tab_button_press),
|
||||
dockable);
|
||||
|
||||
return tab_widget;
|
||||
}
|
||||
|
||||
|
@ -571,116 +511,6 @@ gimp_dockbook_drop_dockable (GimpDockbook *dockbook,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dockbook_menu_switch_page (GtkWidget *widget,
|
||||
GimpDockable *dockable)
|
||||
{
|
||||
gint page_num = gtk_notebook_page_num (GTK_NOTEBOOK (dockable->dockbook),
|
||||
GTK_WIDGET (dockable));
|
||||
|
||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (dockable->dockbook), page_num);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dockbook_menu_end (GimpDockbook *dockbook)
|
||||
{
|
||||
GtkWidget *notebook_menu;
|
||||
|
||||
notebook_menu = GTK_NOTEBOOK (dockbook)->menu;
|
||||
|
||||
g_object_ref (notebook_menu);
|
||||
|
||||
gtk_menu_detach (GTK_MENU (notebook_menu));
|
||||
|
||||
gtk_menu_attach_to_widget (GTK_MENU (notebook_menu),
|
||||
GTK_WIDGET (dockbook),
|
||||
gimp_dockbook_menu_detacher);
|
||||
|
||||
g_object_unref (notebook_menu);
|
||||
|
||||
/* release gimp_dockbook_tab_button_press()'s reference */
|
||||
g_object_unref (dockbook);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dockbook_menu_detacher (GtkWidget *widget,
|
||||
GtkMenu *menu)
|
||||
{
|
||||
GtkNotebook *notebook;
|
||||
|
||||
g_return_if_fail (GTK_IS_NOTEBOOK (widget));
|
||||
|
||||
notebook = GTK_NOTEBOOK (widget);
|
||||
|
||||
g_return_if_fail (notebook->menu == (GtkWidget*) menu);
|
||||
|
||||
notebook->menu = NULL;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_dockbook_tab_button_press (GtkWidget *widget,
|
||||
GdkEventButton *bevent,
|
||||
gpointer data)
|
||||
{
|
||||
GimpDockable *dockable;
|
||||
GimpDockbook *dockbook;
|
||||
gint page_num;
|
||||
|
||||
dockable = GIMP_DOCKABLE (data);
|
||||
dockbook = dockable->dockbook;
|
||||
|
||||
page_num = gtk_notebook_page_num (GTK_NOTEBOOK (dockbook),
|
||||
GTK_WIDGET (dockable));
|
||||
|
||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (dockbook), page_num);
|
||||
|
||||
if (! GTK_WIDGET_HAS_FOCUS (dockbook))
|
||||
gtk_widget_grab_focus (GTK_WIDGET (dockbook));
|
||||
|
||||
if (bevent->button == 3)
|
||||
{
|
||||
GtkWidget *add_widget;
|
||||
|
||||
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (dockbook->item_factory),
|
||||
"/dialog-menu", FALSE);
|
||||
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (dockbook->item_factory),
|
||||
"/Select Tab", TRUE);
|
||||
|
||||
add_widget =
|
||||
gtk_item_factory_get_widget (GTK_ITEM_FACTORY (dockbook->item_factory),
|
||||
"/Select Tab");
|
||||
|
||||
/* do evil things */
|
||||
{
|
||||
GtkWidget *notebook_menu;
|
||||
|
||||
notebook_menu = GTK_NOTEBOOK (dockbook)->menu;
|
||||
|
||||
g_object_ref (notebook_menu);
|
||||
|
||||
gtk_menu_detach (GTK_MENU (notebook_menu));
|
||||
|
||||
GTK_NOTEBOOK (dockbook)->menu = notebook_menu;
|
||||
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (add_widget), notebook_menu);
|
||||
|
||||
g_object_unref (notebook_menu);
|
||||
}
|
||||
|
||||
/* an item factory callback may destroy the dockbook, so reference
|
||||
* if for gimp_dockbook_menu_end()
|
||||
*/
|
||||
g_object_ref (dockbook);
|
||||
|
||||
gimp_item_factory_popup_with_data (dockbook->item_factory,
|
||||
dockbook,
|
||||
NULL, NULL,
|
||||
(GtkDestroyNotify) gimp_dockbook_menu_end);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dockbook_tab_drag_begin (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
2003-10-19 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* POTFILES.in: added new files.
|
||||
|
||||
2003-10-18 Danilo Šegan <dsegan@gmx.net>
|
||||
|
||||
* sr.po, sr@Latn.po: Updated Serbian translation.
|
||||
|
||||
2003-10-17 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2003-10-17 Dmitry G. Mastrukov <dmitry@taurussoft.org>
|
||||
|
||||
|
|
|
@ -105,6 +105,7 @@ app/gui/file-open-menu.c
|
|||
app/gui/file-save-dialog.c
|
||||
app/gui/file-save-menu.c
|
||||
app/gui/font-select.c
|
||||
app/gui/fonts-menu.c
|
||||
app/gui/gradient-editor-commands.c
|
||||
app/gui/gradient-editor-menu.c
|
||||
app/gui/gradient-select.c
|
||||
|
@ -253,25 +254,27 @@ app/vectors/gimpvectors.c
|
|||
app/vectors/gimpvectors-export.c
|
||||
app/vectors/gimpvectors-import.c
|
||||
|
||||
app/widgets/widgets-enums.c
|
||||
app/widgets/gimpbrusheditor.c
|
||||
app/widgets/gimpbrushfactoryview.c
|
||||
app/widgets/gimpbufferview.c
|
||||
app/widgets/gimpchanneltreeview.c
|
||||
app/widgets/gimpcoloreditor.c
|
||||
app/widgets/gimpcolorframe.c
|
||||
app/widgets/gimpcolormapeditor.c
|
||||
app/widgets/gimpcontainergridview.c
|
||||
app/widgets/gimpcontainerpopup.c
|
||||
app/widgets/gimpdataeditor.c
|
||||
app/widgets/gimpdatafactoryview.c
|
||||
app/widgets/gimpdevicestatus.c
|
||||
app/widgets/gimpdock.c
|
||||
app/widgets/gimpdocumentview.c
|
||||
app/widgets/gimpdnd.c
|
||||
app/widgets/gimpdock.c
|
||||
app/widgets/gimpdockable.c
|
||||
app/widgets/gimpdocumentview.c
|
||||
app/widgets/gimpdrawabletreeview.c
|
||||
app/widgets/gimperrorconsole.c
|
||||
app/widgets/gimpfontselection.c
|
||||
app/widgets/gimpfontselection-dialog.c
|
||||
app/widgets/gimpfontselection.c
|
||||
app/widgets/gimpfontview.c
|
||||
app/widgets/gimpgradienteditor.c
|
||||
app/widgets/gimpgrideditor.c
|
||||
app/widgets/gimphelp.c
|
||||
|
@ -295,6 +298,7 @@ app/widgets/gimpundoeditor.c
|
|||
app/widgets/gimpvectorstreeview.c
|
||||
app/widgets/gimpwidgets-constructors.c
|
||||
app/widgets/gimpwidgets-utils.c
|
||||
app/widgets/widgets-enums.c
|
||||
|
||||
app/xcf/xcf-load.c
|
||||
app/xcf/xcf-read.c
|
||||
|
|
Loading…
Reference in a new issue