[gimp/gimp-2-10] Issue #2957 - Gimp crashes when I attempt to change the icon size
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] Issue #2957 - Gimp crashes when I attempt to change the icon size
- Date: Sun, 2 Jun 2019 01:29:36 +0000 (UTC)
commit 645d987e07ec1df3594f43a87a5b1674f05cd02c
Author: Michael Natterer <mitch gimp org>
Date: Sun Jun 2 03:25:49 2019 +0200
Issue #2957 - Gimp crashes when I attempt to change the icon size
Simplify GimpDockbook's signal connect/disconnect to
GimpGuiConfig::size-changed a lot, most likely to a point where some
connection doesn't get leaked, so this bug is probably fixed.
app/widgets/gimpdockbook.c | 38 +++++++++++++-------------------------
1 file changed, 13 insertions(+), 25 deletions(-)
---
diff --git a/app/widgets/gimpdockbook.c b/app/widgets/gimpdockbook.c
index 0a100e9d3b..283d660a0f 100644
--- a/app/widgets/gimpdockbook.c
+++ b/app/widgets/gimpdockbook.c
@@ -310,6 +310,10 @@ gimp_dockbook_dispose (GObject *object)
{
GimpDockbook *dockbook = GIMP_DOCKBOOK (object);
+ g_signal_handlers_disconnect_by_func (dockbook->p->ui_manager->gimp->config,
+ gimp_dockbook_config_size_changed,
+ dockbook);
+
gimp_dockbook_remove_tab_timeout (dockbook);
while (dockbook->p->dockables)
@@ -332,14 +336,6 @@ gimp_dockbook_finalize (GObject *object)
g_clear_object (&dockbook->p->ui_manager);
- if (dockbook->p->dock)
- {
- g_signal_handlers_disconnect_by_func (gimp_dock_get_context (dockbook->p->dock)->gimp->config,
- gimp_dockbook_config_size_changed,
- dockbook);
- dockbook->p->dock = NULL;
- }
-
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -880,6 +876,11 @@ gimp_dockbook_new (GimpMenuFactory *menu_factory)
dockbook,
FALSE);
+ g_signal_connect (dockbook->p->ui_manager->gimp->config,
+ "size-changed",
+ G_CALLBACK (gimp_dockbook_config_size_changed),
+ dockbook);
+
gimp_help_connect (GTK_WIDGET (dockbook), gimp_dockbook_help_func,
GIMP_HELP_DOCK, dockbook);
@@ -901,16 +902,7 @@ gimp_dockbook_set_dock (GimpDockbook *dockbook,
g_return_if_fail (GIMP_IS_DOCKBOOK (dockbook));
g_return_if_fail (dock == NULL || GIMP_IS_DOCK (dock));
- if (dockbook->p->dock && gimp_dock_get_context (dockbook->p->dock))
- g_signal_handlers_disconnect_by_func (gimp_dock_get_context (dockbook->p->dock)->gimp->config,
- G_CALLBACK (gimp_dockbook_config_size_changed),
- dockbook);
dockbook->p->dock = dock;
- if (dock)
- g_signal_connect (gimp_dock_get_context (dockbook->p->dock)->gimp->config,
- "size-changed",
- G_CALLBACK (gimp_dockbook_config_size_changed),
- dockbook);
}
GimpUIManager *
@@ -1615,11 +1607,9 @@ gimp_dockable_create_event_box_tab_widget (GimpDockable *dockable,
static GtkIconSize
gimp_dockbook_get_tab_icon_size (GimpDockbook *dockbook)
{
- Gimp *gimp;
- GimpIconSize size;
+ Gimp *gimp = dockbook->p->ui_manager->gimp;
GtkIconSize tab_size = DEFAULT_TAB_ICON_SIZE;
-
- gimp = gimp_dock_get_context (dockbook->p->dock)->gimp;
+ GimpIconSize size;
size = gimp_gui_config_detect_icon_size (GIMP_GUI_CONFIG (gimp->config));
/* Match GimpIconSize with GtkIconSize. */
@@ -1650,11 +1640,9 @@ gimp_dockbook_get_tab_icon_size (GimpDockbook *dockbook)
static gint
gimp_dockbook_get_tab_border (GimpDockbook *dockbook)
{
- Gimp *gimp;
- GimpIconSize size;
+ Gimp *gimp = dockbook->p->ui_manager->gimp;
gint tab_border = DEFAULT_TAB_BORDER;
-
- gimp = gimp_dock_get_context (dockbook->p->dock)->gimp;
+ GimpIconSize size;
gtk_widget_style_get (GTK_WIDGET (dockbook),
"tab-border", &tab_border,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]