summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@netscape.net>2017-03-11 19:45:14 +0100
committerFrédéric Buclin <LpSolit@gmail.com>2017-03-13 17:37:45 +0100
commit74fafa20c2a11d9c59db1016342eca1d240d7ce7 (patch)
tree69e61d4314984d04ddee2550da4bb84fea7bab91
parent577d4f6312a8cbd3572ede4017202346bb5f85ed (diff)
downloadmgaonline-74fafa20c2a11d9c59db1016342eca1d240d7ce7.tar
mgaonline-74fafa20c2a11d9c59db1016342eca1d240d7ce7.tar.gz
mgaonline-74fafa20c2a11d9c59db1016342eca1d240d7ce7.tar.bz2
mgaonline-74fafa20c2a11d9c59db1016342eca1d240d7ce7.tar.xz
mgaonline-74fafa20c2a11d9c59db1016342eca1d240d7ce7.zip
Use DBus Menu + StatusNotifier 1.0 (mga#20410)
-rw-r--r--NEWS2
-rwxr-xr-xmgaapplet34
2 files changed, 16 insertions, 20 deletions
diff --git a/NEWS b/NEWS
index 3137f1a1..ada0cf02 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+- use DBus Menu (requires StatusNotifier 1.0) (mga#20410)
+
Version 3.19 - 5 March 2017, Nicolas Lécureuil
- use bigger icons for mgaaplet (mga#18107)
diff --git a/mgaapplet b/mgaapplet
index 04e08429..79541d70 100755
--- a/mgaapplet
+++ b/mgaapplet
@@ -42,11 +42,6 @@ use Net::DBus qw(:typing);
use Rpmdrake::open_db;
use Glib::Object::Introspection;
-Glib::Object::Introspection->setup(
- basename => 'StatusNotifier',
- version => '0.1',
- package => 'StatusNotifier');
-
POSIX::sigprocmask(SIG_BLOCK, POSIX::SigSet->new(SIGCHLD));
if (!find { $_ eq '--auto-update' } @ARGV) {
@@ -180,13 +175,16 @@ my ($icon, $is_plasma);
# the deprecated GtkStatusIcon.
if ($ENV{DESKTOP_SESSION} =~ /plasma$/i) {
$is_plasma = 1;
- $icon = StatusNotifier::Notifier->new_from_icon_name('mgaapplet', 'STATUS_NOTIFIER_CATEGORY_APPLICATION_STATUS', 'mgaonline');
+
+ Glib::Object::Introspection->setup(
+ basename => 'StatusNotifier',
+ version => '1.0',
+ package => 'StatusNotifier');
+
+ $icon = StatusNotifier::Item->new_from_icon_name('mgaapplet', 'STATUS_NOTIFIER_CATEGORY_APPLICATION_STATUS', 'mgaonline');
$icon->set_title('mgaapplet');
$icon->set_status('STATUS_NOTIFIER_STATUS_ACTIVE');
$icon->register;
- $icon->signal_connect(context_menu => sub {
- $menu->popup(undef, undef, undef, undef, 0, Gtk3::get_current_event_time()) if $menu;
- });
}
else {
$icon = Gtk3::StatusIcon->new;
@@ -636,14 +634,6 @@ sub checkUpdates() {
member($state_global, qw(disconnected)) or silentCheck();
}
-sub go2State {
- my ($state) = @_;
- $menu->destroy if $menu;
- $menu = setState($state);
- $state_global = $state;
- gtkflush();
-}
-
sub shouldStart() {
to_bool($local_config{AUTOSTART} ne 'FALSE');
}
@@ -672,7 +662,7 @@ sub about_dialog() {
return 1;
}
-sub setState {
+sub go2State {
my ($state) = @_;
my $checkme;
state $previous_state;
@@ -731,7 +721,8 @@ sub setState {
warn ">> ERR:$@" if $@;
}
- my $menu = Gtk3::Menu->new;
+ $menu->destroy if $menu;
+ $menu = Gtk3::Menu->new;
foreach (@arr) {
my $action = $actions{$_};
next if !ref($action->{launch});
@@ -745,7 +736,10 @@ sub setState {
$menu->append(gtksignal_connect(gtkset_active($checkme = Gtk3::CheckMenuItem->new_with_label(N("Always launch on startup")), shouldStart()), toggled => sub { setAutoStart(uc(bool2text($checkme->get_active))) }));
$checkme->show;
$menu->append(gtksignal_connect(gtkshow(Gtk3::MenuItem->new_with_label(N("Quit"))), activate => sub { mainQuit() }));
- $menu;
+
+ $icon->set_context_menu($menu) if $is_plasma;
+ $state_global = $state;
+ gtkflush();
}
sub setAutoStart {