lp:~larsu/indicator-messages/fix-set-status
- Get this branch:
- bzr branch lp:~larsu/indicator-messages/fix-set-status
Branch merges
- Charles Kerr (community): Approve
- jenkins (community): Needs Fixing (continuous-integration)
-
Diff: 679 lines (+283/-81)7 files modifiedlibmessaging-menu/messaging-menu.c (+7/-4)
src/app-section.c (+51/-0)
src/app-section.h (+3/-0)
src/ido-menu-item.c (+32/-2)
src/indicator-messages.c (+33/-6)
src/messages-service.c (+156/-69)
src/messages-service.xml (+1/-0)
Related bugs
Bug #859905: There is no indication of online status on the panel | Medium | Fix Released | |
Bug #1052576: Menu title doesn't show chat status | Undecided | In Progress |
Related blueprints
Branch information
Recent revisions
- 317. By Lars Karlitski
-
Use indicator-message icons with chat status
Changes the state of the "messages" action from a boolean (draws-attention) to
a string (icon-name). This has the added benefit that more logic is moved from
the plugin into the service.It also fixes an edge case: the messaging menu didn't have the blue icon after
the service restarted (if anything was drawing attention). - 316. By Lars Karlitski
-
Set the global chat status more intelligently
Up until now, the global chat status was set every time an application called
_set_status. Thus, global status really meant "status of the app that last
changed the status".Now, the service remembers the chat status for each application and sets the
global status as a combination of all of application statuses. If applications
have different statuses, the menu items are shown in an inconsistent state.
This is implemented in IdoMenuItem by making it accept state as an array of
strings in addition to a single string. It is drawn inconsistent if the state
contains the menu item's target value in addition to other values.When the global status is changed through the messaging menu, the service
doesn't update the action immediately anymore. Instead, it notifies all
applications about the change via the "status-changed" signal. Applications
must call _set_state to acknowledge that they have indeed changed their state.
This is consistent with libmessaging-menu's documentation and design.Also, the SetStatus D-Bus call was missing a "desktop-id" parameter to tell the
menu which application changed status. Changing this doesn't break existing
apps, as the D-Bus interface is considered private to indicator-messages. - 315. By Lars Karlitski
-
libmessaging-menu: don't set app->status when global status changes
The application's status only changes when it calls _set_status, so it's wrong
to set the internal status when the global status changes.This shouldn't be a problem in practice, as app->status is not accessible from
the API. - 314. By Lars Karlitski
-
libmessaging-menu: don't call SetStatus(OFFLINE) for all apps
Only notify the service about status if the application has actually called
messaging_menu_app_ set_status. This saves a d-bus call per non-chat
application and - more importantly - doesn't make the messaging menu go into
"unknown status" mode when one application is reporting 'online' status. - 311. By Lars Karlitski
-
messages-service: fix merge error
Check whether no apps are left in remove_section instead of remove_application,
so that it is also done when an AppSection emits "destroy". This is a result
of improper merging of the watch-desktop-files and hide-indicator branches. - 309. By Lars Karlitski
-
Hide the indicator when no application is configured to use it.. Fixes: https:/
/bugs.launchpad .net/bugs/ 661059, https:/ /bugs.launchpad .net/bugs/ 1045039. Approved by jenkins, Charles Kerr.
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp:indicator-messages/12.10