Fix toolbar icon double free in customize dialog's destructor

upstream-master
Bryan Tan 5 years ago committed by Bryan Tan
parent 694e4c413c
commit 3c22c76821
  1. 12
      src/gui/dialog/toolbarCustomize/ToolbarCustomizeDialog.cpp

@ -80,7 +80,10 @@ ToolbarCustomizeDialog::~ToolbarCustomizeDialog() {
// We can only delete this list at the end, it would be better to delete this list
// after a refresh and after drag_end is called...
for (ToolItemDragData* data: this->itemDatalist) {
g_object_unref(data->icon);
if (data->icon != nullptr) {
g_object_unref(data->icon);
}
g_object_unref(data->ebox);
g_free(data);
}
}
@ -115,8 +118,9 @@ void ToolbarCustomizeDialog::toolitemDragDataGetSeparator(GtkWidget* widget, Gdk
*/
void ToolbarCustomizeDialog::toolitemDragBegin(GtkWidget* widget, GdkDragContext* context, ToolItemDragData* data) {
ToolItemDragCurrentData::setData(TOOL_ITEM_ITEM, -1, data->item);
gtk_drag_set_icon_pixbuf(context, data->icon, -2, -2);
if (data->icon) {
gtk_drag_set_icon_pixbuf(context, data->icon, -2, -2);
}
gtk_widget_hide(data->ebox);
}
@ -272,7 +276,9 @@ void ToolbarCustomizeDialog::rebuildIconview() {
data->dlg = this;
data->icon = ToolbarDragDropHelper::getImagePixbuf(GTK_IMAGE(icon));
data->item = item;
// store reference to ebox
data->ebox = ebox;
g_object_ref(ebox);
this->itemDatalist.push_front(data);

Loading…
Cancel
Save