Date: Thursday, October 22, 2020 @ 21:26:33 Author: bgyorgy Revision: 730162
archrelease: copy trunk to community-x86_64 Added: modem-manager-gui/repos/community-x86_64/PKGBUILD (from rev 730161, modem-manager-gui/trunk/PKGBUILD) Deleted: modem-manager-gui/repos/community-x86_64/PKGBUILD modem-manager-gui/repos/community-x86_64/fix-crash.patch modem-manager-gui/repos/community-x86_64/no-indicator.patch --------------------+ PKGBUILD | 69 +++------ fix-crash.patch | 140 ------------------- no-indicator.patch | 363 --------------------------------------------------- 3 files changed, 27 insertions(+), 545 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2020-10-22 21:26:29 UTC (rev 730161) +++ PKGBUILD 2020-10-22 21:26:33 UTC (rev 730162) @@ -1,42 +0,0 @@ -# Maintainer: Balló György <ballogyor+arch at gmail dot com> -# Contributor: Ilya Medvedev <medved55rus [at] gmail [dot] com> - -pkgname=modem-manager-gui -pkgver=0.0.19.1 -pkgrel=5 -pkgdesc="Frontend for ModemManager daemon able to control specific modem functions" -arch=('x86_64') -url="https://linuxonly.ru/page/modem-manager-gui" -license=('GPL3') -depends=('gdbm' 'gtk3' 'gtkspell3' 'libnotify' 'modemmanager') -makedepends=('po4a' 'itstool') -optdepends=('networkmanager: monitor network traffic') -options=(!emptydirs) -source=("https://download.tuxfamily.org/gsf/source/$pkgname-$pkgver.tar.gz" - fix-crash.patch - no-indicator.patch) -sha256sums=('0b9bae29f3cd3d99b3a61d5530097d576a5fa67d3215d54f3570cb20c6ca0bc2' - 'bcc451c1db096ea1b76907616fecfd14f73baf88b774827b2d1dc6065798ed03' - '04f85c3d6e7dbf89f5767446a1884f1f45aaea4023a8d07981b819be181849b3') - -prepare() { - cd $pkgname-$pkgver - - # Fix memory corruption because of wrong strsep() usage (FS#61622, FS#61823) - # Fix segfault in strftime_l() because of timestamps from future (FS#62584) - patch -Np1 -i ../fix-crash.patch - - # Revert to GTK+ status icon - patch -Np1 -i ../no-indicator.patch -} - -build() { - cd $pkgname-$pkgver - ./configure --prefix=/usr - make -} - -package() { - cd $pkgname-$pkgver - make DESTDIR="$pkgdir" install -} Copied: modem-manager-gui/repos/community-x86_64/PKGBUILD (from rev 730161, modem-manager-gui/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2020-10-22 21:26:33 UTC (rev 730162) @@ -0,0 +1,27 @@ +# Maintainer: Balló György <ballogyor+arch at gmail dot com> +# Contributor: Ilya Medvedev <medved55rus [at] gmail [dot] com> + +pkgname=modem-manager-gui +pkgver=0.0.20 +pkgrel=1 +pkgdesc="Frontend for ModemManager daemon able to control specific modem functions" +arch=('x86_64') +url="https://linuxonly.ru/page/modem-manager-gui" +license=('GPL3') +depends=('gdbm' 'gtk3' 'gtkspell3' 'libnotify' 'modemmanager') +makedepends=('po4a' 'itstool') +optdepends=('networkmanager: monitor network traffic') +options=(!emptydirs) +source=("https://download.tuxfamily.org/gsf/source/$pkgname-$pkgver.tar.gz") +sha256sums=('00c7054293e5e7832a7eeb7d9ba0d35745e95d2f7df27ab8f912302e2bb56fc5') + +build() { + cd $pkgname + ./configure --prefix=/usr + make +} + +package() { + cd $pkgname + make DESTDIR="$pkgdir" install +} Deleted: fix-crash.patch =================================================================== --- fix-crash.patch 2020-10-22 21:26:29 UTC (rev 730161) +++ fix-crash.patch 2020-10-22 21:26:33 UTC (rev 730162) @@ -1,140 +0,0 @@ -# HG changeset patch -# User Alex <a...@linuxonly.ru> -# Date 1550936745 -10800 -# Node ID 6710bf86869852bb8a9946b628eff5bc1019b5aa -# Parent e8a146d4d2ea8525301670fb48b1accfdde13ac9 -Fix memory corruption because of wrong strsep() usage (Thanks to Persmule) - -diff --git a/src/modules/mm06.c b/src/modules/mm06.c ---- a/src/modules/mm06.c -+++ b/src/modules/mm06.c -@@ -1552,10 +1552,12 @@ - GVariantIter *iter; - guint32 locationtype; - GVariant *locationdata; -- gchar *locationstring; - gsize strlength; -+ gchar **fragments; -+ gint i; - GError *error; -- -+ const gint numbases[4] = {10, 10, 16, 16}; -+ - if ((mmguicore == NULL) || (device == NULL)) return FALSE; - mmguicorelc = (mmguicore_t)mmguicore; - -@@ -1578,14 +1580,17 @@ - g_variant_get(data, "(a{uv})", &iter); - while (g_variant_iter_next(iter, "{uv}", &locationtype, &locationdata)) { - if ((locationtype == MODULE_INT_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI) && (locationdata != NULL)) { -- //3GPP location -+ /*3GPP location*/ - strlength = 256; -- locationstring = g_strdup(g_variant_get_string(locationdata, &strlength)); -- device->loc3gppdata[0] = (guint)strtol(strsep(&locationstring, ","), NULL, 10); -- device->loc3gppdata[1] = (guint)strtol(strsep(&locationstring, ","), NULL, 10); -- device->loc3gppdata[2] = (guint)strtol(strsep(&locationstring, ","), NULL, 16); -- device->loc3gppdata[3] = (guint)strtol(strsep(&locationstring, ","), NULL, 16); -- g_free(locationstring); -+ fragments = g_strsplit(g_variant_get_string(locationdata, &strlength), ",", 4); -+ if (fragments != NULL) { -+ i = 0; -+ while ((fragments[i] != NULL) && (i < 4)) { -+ device->loc3gppdata[i] = (guint)strtoul(fragments[i], NULL, numbases[i]); -+ i++; -+ } -+ g_strfreev(fragments); -+ } - g_variant_unref(locationdata); - g_debug("3GPP location: %u, %u, %4x, %4x", device->loc3gppdata[0], device->loc3gppdata[1], device->loc3gppdata[2], device->loc3gppdata[3]); - } -diff --git a/src/modules/mm07.c b/src/modules/mm07.c ---- a/src/modules/mm07.c -+++ b/src/modules/mm07.c -@@ -1659,8 +1659,11 @@ - GVariant *locationdata; - gchar *locationstring; - gsize strlength; -+ gchar **fragments; -+ gint i; - GError *error; -- -+ const gint numbases[4] = {10, 10, 16, 16}; -+ - if ((mmguicore == NULL) || (device == NULL)) return FALSE; - mmguicorelc = (mmguicore_t)mmguicore; - -@@ -1684,12 +1687,15 @@ - if ((locationtype == MODULE_INT_MODEM_LOCATION_SOURCE_3GPP_LAC_CI) && (locationdata != NULL)) { - /*3GPP location*/ - strlength = 256; -- locationstring = g_strdup(g_variant_get_string(locationdata, &strlength)); -- device->loc3gppdata[0] = (guint)strtol(strsep(&locationstring, ","), NULL, 10); -- device->loc3gppdata[1] = (guint)strtol(strsep(&locationstring, ","), NULL, 10); -- device->loc3gppdata[2] = (guint)strtol(strsep(&locationstring, ","), NULL, 16); -- device->loc3gppdata[3] = (guint)strtol(strsep(&locationstring, ","), NULL, 16); -- g_free(locationstring); -+ fragments = g_strsplit(g_variant_get_string(locationdata, &strlength), ",", 4); -+ if (fragments != NULL) { -+ i = 0; -+ while ((fragments[i] != NULL) && (i < 4)) { -+ device->loc3gppdata[i] = (guint)strtoul(fragments[i], NULL, numbases[i]); -+ i++; -+ } -+ g_strfreev(fragments); -+ } - g_variant_unref(locationdata); - g_debug("3GPP location: %u, %u, %4x, %4x\n", device->loc3gppdata[0], device->loc3gppdata[1], device->loc3gppdata[2], device->loc3gppdata[3]); - } else if ((locationtype == MODULE_INT_MODEM_LOCATION_SOURCE_GPS_RAW) && (locationdata != NULL)) { -# HG changeset patch -# User Alex <a...@linuxonly.ru> -# Date 1558782045 -10800 -# Node ID 83553d042443c71be71533b6b91ee10f228d935f -# Parent de113e8953ae708043823578b64882cfc5a45ca2 -Fix segfault in strftime_l() because of timestamps from future - -diff --git a/src/strformat.c b/src/strformat.c ---- a/src/strformat.c -+++ b/src/strformat.c -@@ -1,7 +1,7 @@ - /* - * strformat.c - * -- * Copyright 2013-2014 Alex <a...@linuxonly.ru> -+ * Copyright 2013-2019 Alex <a...@linuxonly.ru> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by -@@ -182,18 +182,22 @@ - - memset(buffer, 0, bufsize); - -- if (delta <= 0.0) { -- if (strftime(buffer, bufsize, _("Today, %T"), ftime) == 0) { -- g_snprintf(buffer, bufsize, _("Unknown")); -- } -- } else if ((delta > 0.0) && (delta < 86400.0)) { -- if (strftime(buffer, bufsize, _("Yesterday, %T"), ftime) == 0) { -- g_snprintf(buffer, bufsize, _("Unknown")); -+ if (ftime != NULL) { -+ if (delta <= 0.0) { -+ if (strftime(buffer, bufsize, _("Today, %T"), ftime) == 0) { -+ g_snprintf(buffer, bufsize, _("Unknown")); -+ } -+ } else if ((delta > 0.0) && (delta < 86400.0)) { -+ if (strftime(buffer, bufsize, _("Yesterday, %T"), ftime) == 0) { -+ g_snprintf(buffer, bufsize, _("Unknown")); -+ } -+ } else { -+ if (strftime(buffer, bufsize, _("%d %B %Y, %T"), ftime) == 0) { -+ g_snprintf(buffer, bufsize, _("Unknown")); -+ } - } - } else { -- if (strftime(buffer, bufsize, _("%d %B %Y, %T"), ftime) == 0) { -- g_snprintf(buffer, bufsize, _("Unknown")); -- } -+ g_snprintf(buffer, bufsize, _("Unknown")); - } - - return buffer; Deleted: no-indicator.patch =================================================================== --- no-indicator.patch 2020-10-22 21:26:29 UTC (rev 730161) +++ no-indicator.patch 2020-10-22 21:26:33 UTC (rev 730162) @@ -1,363 +0,0 @@ -diff -Naur modem-manager-gui-0.0.19.orig/src/main.c modem-manager-gui-0.0.19/src/main.c ---- modem-manager-gui-0.0.19.orig/src/main.c 2018-03-17 16:35:08.000000000 +0100 -+++ modem-manager-gui-0.0.19/src/main.c 2018-03-22 14:10:34.762564755 +0100 -@@ -138,11 +138,9 @@ - static void mmgui_main_ui_about_menu_item_activate_signal(GSimpleAction *action, GVariant *parameter, gpointer data); - static void mmgui_main_ui_section_menu_item_activate_signal(GSimpleAction *action, GVariant *parameter, gpointer data); - /*Tray*/ --static gboolean mmgui_main_tray_handle_state_change_from_thread(gpointer data); - static void mmgui_main_tray_icon_window_show_signal(GtkCheckMenuItem *checkmenuitem, gpointer data); - static void mmgui_main_tray_icon_new_sms_signal(GtkMenuItem *menuitem, gpointer data); - static void mmgui_main_tray_icon_exit_signal(GtkMenuItem *menuitem, gpointer data); --static void mmgui_main_tray_icon_build(mmgui_application_t mmguiapp); - static void mmgui_main_tray_icon_init(mmgui_application_t mmguiapp); - /*Ayatana*/ - static void mmgui_main_ayatana_event_callback(enum _mmgui_ayatana_event event, gpointer ayatana, gpointer data, gpointer userdata); -@@ -217,7 +215,6 @@ - mmgui_main_contacts_list_fill(mmguiapp); - /*Show network name*/ - g_idle_add(mmgui_main_ui_update_statusbar_from_thread, mmguiapp); -- g_idle_add(mmgui_main_tray_handle_state_change_from_thread, mmguiapp); - break; - case MMGUI_EVENT_DEVICE_CLOSING: - mmgui_modem_settings_close(mmguiapp->modemsettings); -@@ -235,21 +232,18 @@ - appdata->mmguiapp = mmguiapp; - appdata->data = data; - g_idle_add(mmgui_main_device_handle_enabled_status_from_thread, appdata); -- g_idle_add(mmgui_main_tray_handle_state_change_from_thread, mmguiapp); - break; - case MMGUI_EVENT_DEVICE_BLOCKED_STATUS: - appdata = g_new0(struct _mmgui_application_data, 1); - appdata->mmguiapp = mmguiapp; - appdata->data = data; - g_idle_add(mmgui_main_device_handle_blocked_status_from_thread, appdata); -- g_idle_add(mmgui_main_tray_handle_state_change_from_thread, mmguiapp); - break; - case MMGUI_EVENT_DEVICE_PREPARED_STATUS: - appdata = g_new0(struct _mmgui_application_data, 1); - appdata->mmguiapp = mmguiapp; - appdata->data = data; - g_idle_add(mmgui_main_device_handle_prepared_status_from_thread, appdata); -- g_idle_add(mmgui_main_tray_handle_state_change_from_thread, mmguiapp); - break; - case MMGUI_EVENT_DEVICE_CONNECTION_STATUS: - appdata = g_new0(struct _mmgui_application_data, 1); -@@ -272,7 +266,6 @@ - mmgui_main_info_handle_network_registration_change(mmguiapp, device); - /*Show new network name*/ - g_idle_add(mmgui_main_ui_update_statusbar_from_thread, mmguiapp); -- g_idle_add(mmgui_main_tray_handle_state_change_from_thread, mmguiapp); - break; - case MMGUI_EVENT_LOCATION_CHANGE: - device = (mmguidevice_t)data; -@@ -1660,9 +1653,9 @@ - gmm_settings_set_boolean(mmguiapp->settings, "window_hide_notify_shown", mmguiapp->options->hidenotifyshown); - } - /*Set tray menu mark*/ -- g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_ind), FALSE); -- g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -+ g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); -+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_tm), FALSE); -+ g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); - /*Save window state*/ - mmguiapp->options->minimized = TRUE; - gmm_settings_set_boolean(mmguiapp->settings, "window_state_minimized", mmguiapp->options->minimized); -@@ -1691,9 +1684,9 @@ - gmm_settings_set_boolean(mmguiapp->settings, "window_hide_notify_shown", mmguiapp->options->hidenotifyshown); - } - /*Set tray menu mark*/ -- g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_ind), FALSE); -- g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -+ g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); -+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_tm), FALSE); -+ g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); - /*Save window state*/ - mmguiapp->options->minimized = TRUE; - gmm_settings_set_boolean(mmguiapp->settings, "window_state_minimized", mmguiapp->options->minimized); -@@ -1910,32 +1903,7 @@ - } - - /*TRAY*/ --#if RESOURCE_INDICATOR_ENABLED -- --static gboolean mmgui_main_tray_handle_state_change_from_thread(gpointer data) --{ -- mmgui_application_t mmguiapp; -- mmguidevice_t device; -- guint caps; -- -- mmguiapp = (mmgui_application_t)data; -- -- if (mmguiapp == NULL) return FALSE; -- if (mmguiapp->core == NULL) return FALSE; -- -- device = mmguicore_devices_get_current(mmguiapp->core); -- -- if (device != NULL) { -- caps = mmguicore_sms_get_capabilities(mmguiapp->core); -- gtk_widget_set_sensitive(mmguiapp->window->newsms_ind, caps & MMGUI_SMS_CAPS_SEND); -- } else { -- gtk_widget_set_sensitive(mmguiapp->window->newsms_ind, FALSE); -- } -- -- return FALSE; --} -- --static void mmgui_main_tray_icon_window_show_signal(GtkCheckMenuItem *checkmenuitem, gpointer data) -+static void mmgui_main_tray_icon_activation_signal(GtkStatusIcon *status_icon, gpointer data) - { - mmgui_application_t mmguiapp; - -@@ -1952,9 +1920,9 @@ - /*Hide window*/ - gtk_widget_hide(mmguiapp->window->window); - mmguiapp->options->minimized = TRUE; -- g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_ind), FALSE); -- g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -+ g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); -+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_tm), FALSE); -+ g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); - } else { - /*Restore window position*/ - if (mmguiapp->options->savegeometry) { -@@ -1963,14 +1931,26 @@ - /*Show window*/ - gtk_widget_show(mmguiapp->window->window); - mmguiapp->options->minimized = FALSE; -- g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_ind), TRUE); -- g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -+ g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); -+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_tm), TRUE); -+ g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); - } - /*Save window state*/ - gmm_settings_set_boolean(mmguiapp->settings, "window_state_minimized", mmguiapp->options->minimized); - } - -+static void mmgui_main_tray_icon_window_show_signal(GtkCheckMenuItem *checkmenuitem, gpointer data) -+{ -+ mmgui_application_t mmguiapp; -+ -+ mmguiapp = (mmgui_application_t)data; -+ -+ if (mmguiapp == NULL) return; -+ if ((mmguiapp->core == NULL) || (mmguiapp->window == NULL)) return; -+ -+ mmgui_main_tray_icon_activation_signal(GTK_STATUS_ICON(mmguiapp->window->statusicon), mmguiapp); -+} -+ - static void mmgui_main_tray_icon_new_sms_signal(GtkMenuItem *menuitem, gpointer data) - { - mmgui_application_t mmguiapp; -@@ -1983,9 +1963,9 @@ - - if (!gtk_widget_get_visible(mmguiapp->window->window)) { - gtk_widget_show(mmguiapp->window->window); -- g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_ind), TRUE); -- g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -+ g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); -+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_tm), TRUE); -+ g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_tm), mmguiapp->window->traysigid); - } else { - gtk_window_present(GTK_WINDOW(mmguiapp->window->window)); - } -@@ -2013,59 +1993,98 @@ - mmgui_main_application_terminate(mmguiapp); - } - --static void mmgui_main_tray_icon_build(mmgui_application_t mmguiapp) -+static void mmgui_main_tray_popup_menu_show_signal(GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer data) - { -- gchar *iconfilepath; -+ mmgui_application_t mmguiapp; -+ guint smscaps; -+ -+ mmguiapp = (mmgui_application_t)data; -+ -+ if (mmguiapp == NULL) return; -+ if ((mmguiapp->core == NULL) || (mmguiapp->window == NULL)) return; -+ -+ if (mmguicore_devices_get_enabled(mmguiapp->core)) { -+ smscaps = mmguicore_sms_get_capabilities(mmguiapp->core); -+ if (smscaps & MMGUI_SMS_CAPS_SEND) { -+ gtk_widget_set_sensitive(mmguiapp->window->newsms_tm, TRUE); -+ } else { -+ gtk_widget_set_sensitive(mmguiapp->window->newsms_tm, FALSE); -+ } -+ } else { -+ gtk_widget_set_sensitive(mmguiapp->window->newsms_tm, FALSE); -+ } -+ -+ gtk_menu_popup(GTK_MENU(mmguiapp->window->traymenu), NULL, NULL, gtk_status_icon_position_menu, status_icon, button, activate_time); -+} -+ -+static gboolean mmgui_main_tray_tooltip_show_signal(GtkStatusIcon *status_icon, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip, gpointer data) -+{ -+ mmgui_application_t mmguiapp; -+ guint unreadmessages; -+ gchar strbuf[64]; - -+ mmguiapp = (mmgui_application_t)data; -+ -+ if (mmguiapp == NULL) return FALSE; -+ -+ if (mmguicore_devices_get_current(mmguiapp->core) != NULL) { -+ unreadmessages = mmgui_smsdb_get_unread_messages(mmguicore_devices_get_sms_db(mmguiapp->core)); -+ if (unreadmessages > 0) { -+ memset(strbuf, 0, sizeof(strbuf)); -+ g_snprintf(strbuf, sizeof(strbuf), _("Unread messages: %u"), unreadmessages); -+ gtk_tooltip_set_text(tooltip, strbuf); -+ } else { -+ gtk_tooltip_set_text(tooltip, _("No unread messages")); -+ } -+ } else { -+ gtk_tooltip_set_text(tooltip, _("No unread messages")); -+ } -+ -+ return TRUE; -+} -+ -+static void mmgui_main_tray_icon_init(mmgui_application_t mmguiapp) -+{ -+ gchar *iconfilepath; -+ - if (mmguiapp == NULL) return; - -- /*Indicator*/ -- iconfilepath = g_build_filename(RESOURCE_SYMBOLIC_ICONS_DIR, "modem-manager-gui-symbolic.svg", NULL); -- mmguiapp->window->indicator = app_indicator_new(RESOURCE_LOCALE_DOMAIN, iconfilepath, APP_INDICATOR_CATEGORY_APPLICATION_STATUS); -- g_free(iconfilepath); -- /*Indicator menu*/ -- mmguiapp->window->indmenu = gtk_menu_new(); -+ /*Tray icon*/ -+ iconfilepath = g_build_filename(RESOURCE_SCALABLE_ICONS_DIR, "modem-manager-gui.svg", NULL); -+ mmguiapp->window->statusicon = gtk_status_icon_new_from_file(iconfilepath); -+ g_signal_connect(G_OBJECT(mmguiapp->window->statusicon), "activate", G_CALLBACK(mmgui_main_tray_icon_activation_signal), mmguiapp); -+ gtk_status_icon_set_tooltip_text(mmguiapp->window->statusicon, _("No unread messages")); -+ /*Tray menu*/ -+ mmguiapp->window->traymenu = gtk_menu_new(); - /*Show window entry*/ -- mmguiapp->window->showwin_ind = gtk_check_menu_item_new_with_label(_("Show window")); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_ind), FALSE); -- mmguiapp->window->traysigid = g_signal_connect(G_OBJECT(mmguiapp->window->showwin_ind), "toggled", G_CALLBACK(mmgui_main_tray_icon_window_show_signal), mmguiapp); -+ mmguiapp->window->showwin_tm = gtk_check_menu_item_new_with_label(_("Show window")); -+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_tm), gtk_widget_get_visible(mmguiapp->window->window)); -+ mmguiapp->window->traysigid = g_signal_connect(G_OBJECT(mmguiapp->window->showwin_tm), "toggled", G_CALLBACK(mmgui_main_tray_icon_window_show_signal), mmguiapp); - /*Separator*/ -- mmguiapp->window->sep1_ind = gtk_separator_menu_item_new(); -+ mmguiapp->window->sep1_tm = gtk_separator_menu_item_new(); - /*New SMS entry*/ -- mmguiapp->window->newsms_ind = gtk_menu_item_new_with_label(_("New SMS")); -- gtk_widget_set_sensitive(mmguiapp->window->newsms_ind, FALSE); -- g_signal_connect(G_OBJECT(mmguiapp->window->newsms_ind), "activate", G_CALLBACK(mmgui_main_tray_icon_new_sms_signal), mmguiapp); -+ mmguiapp->window->newsms_tm = gtk_menu_item_new_with_label(_("New SMS")); -+ gtk_widget_set_sensitive(mmguiapp->window->newsms_tm, FALSE); -+ g_signal_connect(G_OBJECT(mmguiapp->window->newsms_tm), "activate", G_CALLBACK(mmgui_main_tray_icon_new_sms_signal), mmguiapp); - /*Separator 2*/ -- mmguiapp->window->sep2_ind = gtk_separator_menu_item_new(); -+ mmguiapp->window->sep2_tm = gtk_separator_menu_item_new(); - /*Quit entry*/ -- mmguiapp->window->quit_ind = gtk_menu_item_new_with_label(_("Quit")); -- g_signal_connect(G_OBJECT(mmguiapp->window->quit_ind), "activate", G_CALLBACK(mmgui_main_tray_icon_exit_signal), mmguiapp); -+ mmguiapp->window->quit_tm = gtk_menu_item_new_with_label(_("Quit")); -+ g_signal_connect(G_OBJECT(mmguiapp->window->quit_tm), "activate", G_CALLBACK(mmgui_main_tray_icon_exit_signal), mmguiapp); - /*Packaging*/ -- gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->indmenu), mmguiapp->window->showwin_ind); -- gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->indmenu), mmguiapp->window->sep1_ind); -- gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->indmenu), mmguiapp->window->newsms_ind); -- gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->indmenu), mmguiapp->window->sep2_ind); -- gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->indmenu), mmguiapp->window->quit_ind); -- gtk_widget_show_all(mmguiapp->window->indmenu); -- /*Set status*/ -- app_indicator_set_status(mmguiapp->window->indicator, APP_INDICATOR_STATUS_ACTIVE); -- app_indicator_set_attention_icon(mmguiapp->window->indicator, "indicator-messages-new"); -- /*Set menu*/ -- app_indicator_set_menu(mmguiapp->window->indicator, GTK_MENU(mmguiapp->window->indmenu)); --} -- --static void mmgui_main_tray_icon_init(mmgui_application_t mmguiapp) --{ -- if (mmguiapp == NULL) return; -- -- /*Window state*/ -- g_signal_handler_block(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mmguiapp->window->showwin_ind), ((!mmguiapp->options->invisible) && (!mmguiapp->options->minimized))); -- g_signal_handler_unblock(G_OBJECT(mmguiapp->window->showwin_ind), mmguiapp->window->traysigid); -+ gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->traymenu), mmguiapp->window->showwin_tm); -+ gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->traymenu), mmguiapp->window->sep1_tm); -+ gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->traymenu), mmguiapp->window->newsms_tm); -+ gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->traymenu), mmguiapp->window->sep2_tm); -+ gtk_menu_shell_append(GTK_MENU_SHELL(mmguiapp->window->traymenu), mmguiapp->window->quit_tm); -+ gtk_widget_show_all(mmguiapp->window->traymenu); -+ /*Tray menu signal*/ -+ g_signal_connect(G_OBJECT(mmguiapp->window->statusicon), "popup-menu", G_CALLBACK(mmgui_main_tray_popup_menu_show_signal), mmguiapp); -+ /*Tray tooltip signal*/ -+ g_signal_connect(G_OBJECT(mmguiapp->window->statusicon), "query-tooltip", G_CALLBACK(mmgui_main_tray_tooltip_show_signal), mmguiapp); -+ gtk_status_icon_set_has_tooltip(mmguiapp->window->statusicon, TRUE); - } - --#endif -- - /*Ayatana*/ - static void mmgui_main_ayatana_event_callback(enum _mmgui_ayatana_event event, gpointer ayatana, gpointer data, gpointer userdata) - { -@@ -2657,10 +2676,8 @@ - /*Builder object is not needed anymore*/ - g_object_unref(G_OBJECT(builder)); - -- #if RESOURCE_INDICATOR_ENABLED -- mmgui_main_tray_icon_build(mmguiapp); -- #endif -- -+ mmgui_main_tray_icon_init(mmguiapp); -+ - return TRUE; - } - -@@ -2800,11 +2817,6 @@ - #if RESOURCE_SPELLCHECKER_ENABLED - mmgui_main_sms_spellcheck_init(mmguiapp); - #endif -- -- #if RESOURCE_INDICATOR_ENABLED -- mmgui_main_tray_icon_init(mmguiapp); -- #endif -- - /*Restore window geometry*/ - if (mmguiapp->options->savegeometry) { - if ((mmguiapp->options->wgwidth >= 1) && (mmguiapp->options->wgheight >= 1)) { -diff -Naur modem-manager-gui-0.0.19.orig/src/main.h modem-manager-gui-0.0.19/src/main.h ---- modem-manager-gui-0.0.19.orig/src/main.h 2018-03-17 16:35:08.000000000 +0100 -+++ modem-manager-gui-0.0.19/src/main.h 2018-03-22 13:43:48.508435052 +0100 -@@ -34,10 +34,6 @@ - #include <gtkspell/gtkspell.h> - #endif - --#if RESOURCE_INDICATOR_ENABLED -- #include <libappindicator/app-indicator.h> --#endif -- - #define MMGUI_MAIN_DEFAULT_DEVICE_IDENTIFIER "00000000000000000000000" - #define MMGUI_MAIN_DEFAULT_CONNECTION_UUID "00000000-0000-4000-0000-000000000000" - -@@ -323,10 +319,10 @@ - GClosure *newcontactclosure; - GClosure *removecontactclosure; - GClosure *smstocontactclosure; -- /*Indicator*/ -- AppIndicator *indicator; -- GtkWidget *indmenu; -- GtkWidget *showwin_ind, *sep1_ind, *newsms_ind, *sep2_ind, *quit_ind; -+ /*Tray icon*/ -+ GtkStatusIcon *statusicon; -+ GtkWidget *traymenu; -+ GtkWidget *showwin_tm, *sep1_tm, *newsms_tm, *sep2_tm, *quit_tm; - gulong traysigid; - }; -