2015-02-12 12:46:34 -08:00
|
|
|
#include "private.h"
|
|
|
|
#include "dbus.h"
|
2015-02-12 13:50:44 -08:00
|
|
|
#ifdef HAVE_ELDBUS
|
|
|
|
#include <Eldbus.h>
|
|
|
|
|
|
|
|
static Eldbus_Connection *_dbus_conn = NULL;
|
|
|
|
static Eldbus_Object *_dbus_obj = NULL;
|
|
|
|
static Eina_Stringshare *_curr_url = NULL;
|
2015-02-12 12:46:34 -08:00
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_init(void)
|
|
|
|
{
|
2015-02-12 13:50:44 -08:00
|
|
|
if (_dbus_conn) return;
|
|
|
|
|
|
|
|
eldbus_init();
|
|
|
|
|
|
|
|
if (!elm_need_sys_notify())
|
|
|
|
WRN("Elementary does not have system notification support");
|
2015-02-12 12:46:34 -08:00
|
|
|
|
2015-02-12 13:50:44 -08:00
|
|
|
_dbus_conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
|
|
|
|
_dbus_obj =
|
|
|
|
eldbus_object_get(_dbus_conn,"org.enlightenment.wm.service",
|
|
|
|
"/org/enlightenment/wm/RemoteObject");
|
2015-02-12 12:46:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_shutdown(void)
|
|
|
|
{
|
2015-02-12 13:50:44 -08:00
|
|
|
_dbus_link_hide();
|
|
|
|
|
|
|
|
if (_dbus_conn) eldbus_connection_unref(_dbus_conn);
|
|
|
|
_dbus_conn = NULL;
|
|
|
|
|
|
|
|
_dbus_obj = NULL;
|
2015-02-12 12:46:34 -08:00
|
|
|
|
2015-02-12 13:50:44 -08:00
|
|
|
eldbus_shutdown();
|
2015-02-12 12:46:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_link_hide(void)
|
|
|
|
{
|
2015-02-12 13:50:44 -08:00
|
|
|
Eldbus_Message *msg;
|
2015-02-12 12:46:34 -08:00
|
|
|
|
2015-02-12 13:50:44 -08:00
|
|
|
if ((!_dbus_obj) || (!_curr_url)) return;
|
|
|
|
|
|
|
|
msg = eldbus_message_method_call_new("org.enlightenment.wm.service",
|
|
|
|
"/org/enlightenment/wm/RemoteObject",
|
|
|
|
"org.enlightenment.wm.Teamwork",
|
|
|
|
"LinkHide");
|
|
|
|
|
|
|
|
eldbus_message_arguments_append(msg, "s", _curr_url);
|
|
|
|
eldbus_object_send(_dbus_obj, msg, NULL, NULL, -1);
|
|
|
|
|
|
|
|
eina_stringshare_replace(&_curr_url, NULL);
|
2015-02-12 12:46:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_link_mousein(uint64_t win, const char *url, int x, int y)
|
|
|
|
{
|
2015-02-12 13:50:44 -08:00
|
|
|
Eldbus_Message *msg;
|
|
|
|
Eina_Stringshare *u;
|
|
|
|
|
|
|
|
if (!_dbus_obj) return;
|
|
|
|
|
|
|
|
u = eina_stringshare_add(url);
|
|
|
|
/* if previous link exists, do MouseOut now */
|
|
|
|
if (_curr_url && (u != _curr_url))
|
|
|
|
_dbus_link_mouseout(win, _curr_url, x, y);
|
|
|
|
eina_stringshare_del(_curr_url);
|
|
|
|
_curr_url = u;
|
2015-02-12 12:46:34 -08:00
|
|
|
|
2015-02-12 13:50:44 -08:00
|
|
|
msg = eldbus_message_method_call_new("org.enlightenment.wm.service",
|
|
|
|
"/org/enlightenment/wm/RemoteObject",
|
|
|
|
"org.enlightenment.wm.Teamwork",
|
|
|
|
"LinkMouseIn");
|
|
|
|
|
|
|
|
#if (ELM_VERSION_MAJOR > 1) || (ELM_VERSION_MINOR > 8) // not a typo
|
|
|
|
eldbus_message_arguments_append(msg, "sutii", _curr_url,
|
|
|
|
time(NULL), win, x, y);
|
|
|
|
#else
|
|
|
|
eldbus_message_arguments_append(msg, "suxii", _curr_url,
|
|
|
|
time(NULL), (int64_t)win, x, y);
|
|
|
|
#endif
|
|
|
|
eldbus_object_send(_dbus_obj, msg, NULL, NULL, -1);
|
2015-02-12 12:46:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_link_mouseout(uint64_t win, const char *url, int x, int y)
|
2015-02-12 13:50:44 -08:00
|
|
|
{
|
|
|
|
Eldbus_Message *msg;
|
|
|
|
|
|
|
|
if (!_dbus_obj) return;
|
|
|
|
|
|
|
|
msg = eldbus_message_method_call_new("org.enlightenment.wm.service",
|
|
|
|
"/org/enlightenment/wm/RemoteObject",
|
|
|
|
"org.enlightenment.wm.Teamwork",
|
|
|
|
"LinkMouseOut");
|
|
|
|
#if (ELM_VERSION_MAJOR > 1) || (ELM_VERSION_MINOR > 8) // not a typo
|
|
|
|
eldbus_message_arguments_append(msg, "sutii", url,
|
|
|
|
time(NULL), win, x, y);
|
|
|
|
#else
|
|
|
|
eldbus_message_arguments_append(msg, "suxii", url,
|
|
|
|
time(NULL), (int64_t)win, x, y);
|
|
|
|
#endif
|
|
|
|
eldbus_object_send(_dbus_obj, msg, NULL, NULL, -1);
|
|
|
|
eina_stringshare_replace(&_curr_url, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
#else
|
|
|
|
void
|
|
|
|
_dbus_init(void)
|
2015-02-12 12:46:34 -08:00
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-02-12 13:50:44 -08:00
|
|
|
void
|
|
|
|
_dbus_shutdown(void)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_link_hide(void)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_link_mousein(uint64_t win EINA_UNUSED, const char *url EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_dbus_link_mouseout(uint64_t win EINA_UNUSED, const char *url EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
#endif
|