Example #1
0
bool
od_wm_iconified(Ecore_X_Window window)
{
    int             size = 0;
    Atom           *atom = NULL;

    if (ecore_x_window_prop_property_get(window, ecore_x_atom_get("WM_STATE"),
                                         ecore_x_atom_get("WM_STATE"), 32,
                                         (unsigned char **) &atom, &size)) {
        bool            ret = (*atom == IconicState);

        free(atom);
        return ret;
    }

    if (ecore_x_window_prop_property_get
            (window, ecore_x_atom_get("_NET_WM_STATE"), XA_ATOM, 32,
             (unsigned char **) &atom, &size)) {
        int             i;
        bool            hidden = false, shaded = false;

        for (i = 0; i < size / sizeof(Atom); i++) {
            if (atom[i] == ecore_x_atom_get("_NET_WM_STATE_SHADED"))
                shaded = true;
            if (atom[i] == ecore_x_atom_get("_NET_WM_STATE_HIDDEN"))
                hidden = true;
        }
        free(atom);
        return hidden && !shaded;
    }
    return false;                 // anything we've missed ???
}
Example #2
0
int
window_prop_change_cb(void *data, int type, void *event)
{
    Ecore_X_Event_Window_Property *ev = event;

    if ((ev->atom == ecore_x_atom_get("_NET_CLIENT_LIST")) ||
            (ev->atom == ecore_x_atom_get("_NET_WM_STATE")))
        od_sync_clients(NULL);
    return 1;                     // carry on
}
Example #3
0
EINTERN int
e_dnd_init(void)
{
   _type_text_uri_list = eina_stringshare_add("text/uri-list");
   _type_xds = eina_stringshare_add("XdndDirectSave0");
   _type_text_x_moz_url = eina_stringshare_add("text/x-moz-url");
   _type_enlightenment_x_file = eina_stringshare_add("enlightenment/x-file");
#ifndef HAVE_WAYLAND_ONLY
   if (e_comp_util_has_x())
     _text_atom = ecore_x_atom_get("text/plain");
#endif

   _drop_win_hash = eina_hash_int32_new(NULL);
   _drop_handlers_responsives = eina_hash_int32_new(NULL);

   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _e_dnd_cb_mouse_up, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_MOUSE_MOVE, _e_dnd_cb_mouse_move, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_KEY_DOWN, _e_dnd_cb_key_down, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_KEY_UP, _e_dnd_cb_key_up, NULL);
   if (e_comp->comp_type != E_PIXMAP_TYPE_X) return 1;
#ifndef HAVE_WAYLAND_ONLY
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_X_EVENT_XDND_ENTER, _e_dnd_cb_event_dnd_enter, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_X_EVENT_XDND_LEAVE, _e_dnd_cb_event_dnd_leave, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_X_EVENT_XDND_POSITION, _e_dnd_cb_event_dnd_position, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_X_EVENT_XDND_FINISHED, _e_dnd_cb_event_dnd_finished, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_X_EVENT_XDND_DROP, _e_dnd_cb_event_dnd_drop, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_X_EVENT_SELECTION_NOTIFY, _e_dnd_cb_event_dnd_selection, NULL);
   E_LIST_HANDLER_APPEND(_event_handlers, ECORE_X_EVENT_WINDOW_HIDE, _e_dnd_cb_event_hide, NULL);

   e_drop_xdnd_register_set(e_comp->ee_win, 1);

   _action = ECORE_X_ATOM_XDND_ACTION_PRIVATE;
#endif
   return 1;
}
Example #4
0
Ecore_X_Window *
od_wm_get_clients(int *size)
{
    Ecore_X_Window *win_list = NULL;

    if (!ecore_x_window_prop_property_get(0, ecore_x_atom_get("_NET_CLIENT_LIST"),
                                          XA_WINDOW, 32,
                                          (unsigned char **) &win_list, size)) {
        if (!ecore_x_window_prop_property_get
                (0, ecore_x_atom_get("_WIN_CLIENT_LIST"), XA_CARDINAL, 32,
                 (unsigned char **) &win_list, size)) {
            *size = 0;
            return NULL;
        }
    }
    return win_list;
}
/* for HDMI rotation */
void e_illume_util_hdmi_rotation (Ecore_X_Window root, int angle)
{
   Ecore_X_Display *dpy;
   RROutput output;
   char hdmi_commands[HDMI_BUF_SIZE];
   char buf[5];
   int buf_len;
   int i;
   char* x_control[] = {"illume2", "rotation", buf, NULL };

   if (access(HDMI_DEV_NODE, F_OK) == 0)
     {
        if (!_atom_hdmi)
           _atom_hdmi = ecore_x_atom_get ("X_RR_PROPERTY_REMOTE_CONTROLLER");

        if(!_atom_hdmi)
          {
             fprintf (stderr, "[ILLUME2] Critical Error!!! Cannot create X_RR_PROPERTY_REMOTE_CONTROLLER Atom...\n");
             return;
          }

        dpy = ecore_x_display_get();

        memset (hdmi_commands, 0, sizeof(hdmi_commands));
        memset (buf, 0, sizeof(buf));

        output = 0;
        XRRScreenResources* res = XRRGetScreenResources (dpy, root);
        if (res && (res->noutput != 0))
          {
             for (i=0; i<res->noutput; i++)
               {
                  output = res->outputs[i];
               }

             snprintf (buf, sizeof(buf)-1, "%d", angle);
             buf_len = _e_illume_util_marshalize_string (hdmi_commands, 3, x_control);

             XRRChangeOutputProperty(dpy, output, _atom_hdmi, XA_CARDINAL, 8, PropModeReplace, (unsigned char *)hdmi_commands, buf_len);
          }
        else
          {
             printf("[ILLUME2]Error.. Cannot get screen resource.\n");
          }
     }
}