diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-12-22 16:35:25 -0500 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-12-22 16:35:25 -0500 |
commit | 1099b09afe5a67740e5b311ae6d0a84e62daf913 (patch) | |
tree | 80bd088e6deb89dbb62f30bde57160a2a4a5ae4d /finch/gntxfer.c | |
parent | 7a0aeb6d34ca74f7038e34a17deb2eec15bd57d4 (diff) | |
download | pidgin-1099b09afe5a67740e5b311ae6d0a84e62daf913.tar.gz |
Change PurpleXferUiOps.add_xfer to PurpleXfer:visible property.
Diffstat (limited to 'finch/gntxfer.c')
-rw-r--r-- | finch/gntxfer.c | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/finch/gntxfer.c b/finch/gntxfer.c index e89373d95b..0dff1e75ba 100644 --- a/finch/gntxfer.c +++ b/finch/gntxfer.c @@ -59,7 +59,6 @@ static PurpleGntXferDialog *xfer_dialog = NULL; typedef struct { gint64 last_updated_time; - gboolean in_list; gboolean notified; /* Has the completion of the transfer been notified? */ @@ -256,8 +255,7 @@ finch_xfer_dialog_new(void) for (iter = purple_xfers_get_all(); iter; iter = iter->next) { PurpleXfer *xfer = (PurpleXfer *)iter->data; - PurpleGntXferUiData *data = g_object_get_data(G_OBJECT(xfer), UI_DATA); - if (data->in_list) { + if (purple_xfer_get_visible(xfer)) { finch_xfer_dialog_add_xfer(xfer); finch_xfer_dialog_update_xfer(xfer); gnt_tree_set_selected(GNT_TREE(tree), xfer); @@ -297,7 +295,6 @@ finch_xfer_dialog_add_xfer(PurpleXfer *xfer) g_object_ref(xfer); data = g_object_get_data(G_OBJECT(xfer), UI_DATA); - data->in_list = TRUE; finch_xfer_dialog_show(); @@ -329,20 +326,14 @@ finch_xfer_dialog_add_xfer(PurpleXfer *xfer) void finch_xfer_dialog_remove_xfer(PurpleXfer *xfer) { - PurpleGntXferUiData *data; - g_return_if_fail(xfer_dialog != NULL); g_return_if_fail(xfer != NULL); - data = g_object_get_data(G_OBJECT(xfer), UI_DATA); - - if (data == NULL) - return; - - if (!data->in_list) + if (!purple_xfer_get_visible(xfer)) { return; + } - data->in_list = FALSE; + purple_xfer_set_visible(xfer, FALSE); gnt_tree_remove(GNT_TREE(xfer_dialog->tree), xfer); @@ -369,8 +360,9 @@ finch_xfer_dialog_cancel_xfer(PurpleXfer *xfer) if (data == NULL) return; - if (!data->in_list) + if (!purple_xfer_get_visible(xfer)) { return; + } if ((purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) && (xfer_dialog->auto_clear)) { finch_xfer_dialog_remove_xfer(xfer); @@ -415,7 +407,7 @@ finch_xfer_dialog_update_xfer(PurpleXfer *xfer) g_return_if_fail(xfer != NULL); data = g_object_get_data(G_OBJECT(xfer), UI_DATA); - if (data == NULL || !data->in_list || data->notified) { + if (data == NULL || !purple_xfer_get_visible(xfer) || data->notified) { return; } @@ -464,16 +456,6 @@ finch_xfer_dialog_update_xfer(PurpleXfer *xfer) * File Transfer UI Ops **************************************************************************/ static void -finch_xfer_new_xfer(PurpleXfer *xfer) -{ - PurpleGntXferUiData *data; - - /* This is where we're setting xfer's "ui_data" for the first time. */ - data = g_new0(PurpleGntXferUiData, 1); - g_object_set_data_full(G_OBJECT(xfer), UI_DATA, data, g_free); -} - -static void finch_xfer_progress_notify(PurpleXfer *xfer, G_GNUC_UNUSED GParamSpec *pspec, G_GNUC_UNUSED gpointer data) { @@ -494,25 +476,41 @@ finch_xfer_status_notify(PurpleXfer *xfer, G_GNUC_UNUSED GParamSpec *pspec, } static void -finch_xfer_add_xfer(PurpleXfer *xfer) +finch_xfer_visible_notify(PurpleXfer *xfer, G_GNUC_UNUSED GParamSpec *pspec, + G_GNUC_UNUSED gpointer data) { + if (!purple_xfer_get_visible(xfer)) { + return; + } + if (!xfer_dialog) finch_xfer_dialog_new(); finch_xfer_dialog_add_xfer(xfer); gnt_tree_set_selected(GNT_TREE(xfer_dialog->tree), xfer); +} + +static void +finch_xfer_new_xfer(PurpleXfer *xfer) +{ + PurpleGntXferUiData *data; + + /* This is where we're setting xfer's "ui_data" for the first time. */ + data = g_new0(PurpleGntXferUiData, 1); + g_object_set_data_full(G_OBJECT(xfer), UI_DATA, data, g_free); g_signal_connect(xfer, "notify::progress", G_CALLBACK(finch_xfer_progress_notify), NULL); g_signal_connect(xfer, "notify::status", G_CALLBACK(finch_xfer_status_notify), NULL); + g_signal_connect(xfer, "notify::visible", + G_CALLBACK(finch_xfer_visible_notify), NULL); } static PurpleXferUiOps ops = { finch_xfer_new_xfer, - NULL, - finch_xfer_add_xfer + NULL }; /************************************************************************** |