static E_Quick_Access_Entry *
_e_qa_entry_find_border(const E_Client *ec)
{
   E_Quick_Access_Entry *entry;
   const Eina_List *n;
   EINA_LIST_FOREACH(qa_config->transient_entries, n, entry)
     if ((ec->pixmap && (entry->win == e_client_util_win_get(ec))) || (entry->client == ec))
       return entry;
   EINA_LIST_FOREACH(qa_config->entries, n, entry)
     if (entry->client == ec)
       return entry;
   return NULL;
}
Ejemplo n.º 2
0
static void
_create_data(E_Dialog *cfd, E_Client *ec)
{
   E_Config_Dialog_Data *cfdata;
   char buf[4096];

   cfdata = E_NEW(E_Config_Dialog_Data, 1);
   cfdata->client = ec;
   ec->border_prop_dialog = cfd;

#define IFDUP(prop, dest)   \
  if (cfdata->client->prop) \
    cfdata->dest = strdup(cfdata->client->prop)

   IFDUP(icccm.title, icccm.title);
   IFDUP(icccm.name, icccm.name);
   IFDUP(icccm.class, icccm.class);
   IFDUP(icccm.icon_name, icccm.icon_name);
   IFDUP(icccm.machine, icccm.machine);
   IFDUP(icccm.window_role, icccm.role);

   if (cfdata->client->icccm.min_w >= 0)
     {
        snprintf(buf, sizeof(buf), _("%i×%i"),
                 cfdata->client->icccm.min_w,
                 cfdata->client->icccm.min_h);
        cfdata->icccm.min = strdup(buf);
     }
   if (cfdata->client->icccm.max_w >= 0)
     {
        snprintf(buf, sizeof(buf), _("%i×%i"),
                 cfdata->client->icccm.max_w,
                 cfdata->client->icccm.max_h);
        cfdata->icccm.max = strdup(buf);
     }
   if (cfdata->client->icccm.base_w >= 0)
     {
        snprintf(buf, sizeof(buf), _("%i×%i"),
                 cfdata->client->icccm.base_w,
                 cfdata->client->icccm.base_h);
        cfdata->icccm.base = strdup(buf);
     }
   if (cfdata->client->icccm.step_w >= 0)
     {
        snprintf(buf, sizeof(buf), _("%i,%i"),
                 cfdata->client->icccm.step_w,
                 cfdata->client->icccm.step_h);
        cfdata->icccm.step = strdup(buf);
     }
   if ((cfdata->client->icccm.min_aspect > 0.0) &&
       (cfdata->client->icccm.max_aspect > 0.0))
     {
        if (EINA_DBL_EQ(cfdata->client->icccm.min_aspect, cfdata->client->icccm.max_aspect))
          snprintf(buf, sizeof(buf), _("%1.3f"),
                   cfdata->client->icccm.min_aspect);
        else
          snprintf(buf, sizeof(buf), _("%1.3f–%1.3f"),
                   cfdata->client->icccm.min_aspect,
                   cfdata->client->icccm.max_aspect);
        cfdata->icccm.aspect = strdup(buf);
     }
#ifndef HAVE_WAYLAND_ONLY
   if (cfdata->client->icccm.initial_state != ECORE_X_WINDOW_STATE_HINT_NONE)
     {
        switch (cfdata->client->icccm.initial_state)
          {
           case ECORE_X_WINDOW_STATE_HINT_WITHDRAWN:
             snprintf(buf, sizeof(buf), _("Withdrawn"));
             break;

           case ECORE_X_WINDOW_STATE_HINT_NORMAL:
             snprintf(buf, sizeof(buf), _("Normal"));
             break;

           case ECORE_X_WINDOW_STATE_HINT_ICONIC:
             snprintf(buf, sizeof(buf), _("Iconic"));
             break;

           default:
             buf[0] = 0;
             break;
          }
        cfdata->icccm.initial_state = strdup(buf);
     }
   if (cfdata->client->icccm.state != ECORE_X_WINDOW_STATE_HINT_NONE)
     {
        switch (cfdata->client->icccm.state)
          {
           case ECORE_X_WINDOW_STATE_HINT_WITHDRAWN:
             snprintf(buf, sizeof(buf), _("Withdrawn"));
             break;

           case ECORE_X_WINDOW_STATE_HINT_NORMAL:
             snprintf(buf, sizeof(buf), _("Normal"));
             break;

           case ECORE_X_WINDOW_STATE_HINT_ICONIC:
             snprintf(buf, sizeof(buf), _("Iconic"));
             break;

           default:
             buf[0] = 0;
             break;
          }
        cfdata->icccm.state = strdup(buf);
     }
#endif
   snprintf(buf, sizeof(buf), "0x%08x",
            (unsigned int)e_client_util_win_get(cfdata->client));
   cfdata->icccm.window_id = strdup(buf);
   if (cfdata->client->icccm.window_group != 0)
     {
        snprintf(buf, sizeof(buf), "0x%08x",
                 (unsigned int)cfdata->client->icccm.window_group);
        cfdata->icccm.window_group = strdup(buf);
     }
   if (cfdata->client->icccm.transient_for != 0)
     {
        snprintf(buf, sizeof(buf), "0x%08x",
                 (unsigned int)cfdata->client->icccm.transient_for);
        cfdata->icccm.transient_for = strdup(buf);
     }
   if (cfdata->client->icccm.client_leader != 0)
     {
        snprintf(buf, sizeof(buf), "0x%08x",
                 (unsigned int)cfdata->client->icccm.client_leader);
        cfdata->icccm.client_leader = strdup(buf);
     }
#ifndef HAVE_WAYLAND_ONLY
   switch (cfdata->client->icccm.gravity)
     {
      case ECORE_X_GRAVITY_FORGET:
        snprintf(buf, sizeof(buf), _("Forget/Unmap"));
        break;

      case ECORE_X_GRAVITY_NW:
        snprintf(buf, sizeof(buf), _("Northwest"));
        break;

      case ECORE_X_GRAVITY_N:
        snprintf(buf, sizeof(buf), _("North"));
        break;

      case ECORE_X_GRAVITY_NE:
        snprintf(buf, sizeof(buf), _("Northeast"));
        break;

      case ECORE_X_GRAVITY_W:
        snprintf(buf, sizeof(buf), _("West"));
        break;

      case ECORE_X_GRAVITY_CENTER:
        snprintf(buf, sizeof(buf), _("Center"));
        break;

      case ECORE_X_GRAVITY_E:
        snprintf(buf, sizeof(buf), _("East"));
        break;

      case ECORE_X_GRAVITY_SW:
        snprintf(buf, sizeof(buf), _("Southwest"));
        break;

      case ECORE_X_GRAVITY_S:
        snprintf(buf, sizeof(buf), _("South"));
        break;

      case ECORE_X_GRAVITY_SE:
        snprintf(buf, sizeof(buf), _("Southeast"));
        break;

      case ECORE_X_GRAVITY_STATIC:
        snprintf(buf, sizeof(buf), _("Static"));
        break;

      default:
        buf[0] = 0;
        break;
     }
   cfdata->icccm.gravity = strdup(buf);
#endif
   if (cfdata->client->icccm.command.argv)
     {
        int i;

        buf[0] = 0;
        for (i = 0; i < cfdata->client->icccm.command.argc; i++)
          {
             if ((sizeof(buf) - strlen(buf)) <
                 (strlen(cfdata->client->icccm.command.argv[i]) - 2))
               break;
             strcat(buf, cfdata->client->icccm.command.argv[i]);
             strcat(buf, " ");
          }
        cfdata->icccm.command = strdup(buf);
     }

   cfdata->icccm.take_focus = cfdata->client->icccm.take_focus;
   cfdata->icccm.accepts_focus = cfdata->client->icccm.accepts_focus;
   cfdata->icccm.urgent = cfdata->client->icccm.urgent;
   cfdata->icccm.delete_request = cfdata->client->icccm.delete_request;
   cfdata->icccm.request_pos = cfdata->client->icccm.request_pos;

   IFDUP(netwm.name, netwm.name);
   IFDUP(netwm.icon_name, netwm.icon_name);
   cfdata->netwm.modal = cfdata->client->netwm.state.modal;
   cfdata->netwm.sticky = cfdata->client->netwm.state.sticky;
   cfdata->netwm.shaded = cfdata->client->netwm.state.shaded;
   cfdata->netwm.skip_taskbar = cfdata->client->netwm.state.skip_taskbar;
   cfdata->netwm.skip_pager = cfdata->client->netwm.state.skip_pager;
   cfdata->netwm.hidden = cfdata->client->netwm.state.hidden;
   cfdata->netwm.fullscreen = cfdata->client->netwm.state.fullscreen;
   switch (cfdata->client->netwm.state.stacking)
     {
      case 0:
        cfdata->netwm.stacking = strdup(_("None"));
        break;

      case 1:
        cfdata->netwm.stacking = strdup(_("Above"));
        break;

      case 2:
        cfdata->netwm.stacking = strdup(_("Below"));
        break;
     }

   cfd->data = cfdata;
}