e randr - feature fix that allows config to jump to specific screen

as part of another fix for having e just pop up the screen config
dialog when a new screen is detected that isn't configured, allow
config dialog for randr to get screen output name via input params

@fix
This commit is contained in:
Carsten Haitzler 2015-12-07 19:44:46 +09:00
parent bb3701702a
commit ecca33310d
1 changed files with 26 additions and 8 deletions

View File

@ -5,6 +5,7 @@
/* local structures */ /* local structures */
struct _E_Config_Dialog_Data struct _E_Config_Dialog_Data
{ {
char *params;
E_Config_Dialog *cfd; E_Config_Dialog *cfd;
Eina_List *screen_items; Eina_List *screen_items;
Eina_List *screen_items2; Eina_List *screen_items2;
@ -49,7 +50,7 @@ static int _basic_check(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfd
/* public functions */ /* public functions */
E_Config_Dialog * E_Config_Dialog *
e_int_config_randr2(Evas_Object *parent EINA_UNUSED, const char *params EINA_UNUSED) e_int_config_randr2(Evas_Object *parent EINA_UNUSED, const char *params)
{ {
E_Config_Dialog *cfd; E_Config_Dialog *cfd;
E_Config_Dialog_View *v; E_Config_Dialog_View *v;
@ -69,7 +70,7 @@ e_int_config_randr2(Evas_Object *parent EINA_UNUSED, const char *params EINA_UNU
cfd = e_config_dialog_new(NULL, _("Screen Setup"), cfd = e_config_dialog_new(NULL, _("Screen Setup"),
"E", "screen/screen_setup", "E", "screen/screen_setup",
"preferences-system-screen-resolution", "preferences-system-screen-resolution",
0, v, NULL); 0, v, (void *)params);
return cfd; return cfd;
} }
@ -80,7 +81,8 @@ _create_data(E_Config_Dialog *cfd EINA_UNUSED)
E_Config_Dialog_Data *cfdata; E_Config_Dialog_Data *cfdata;
if (!(cfdata = E_NEW(E_Config_Dialog_Data, 1))) return NULL; if (!(cfdata = E_NEW(E_Config_Dialog_Data, 1))) return NULL;
cfdata->restore = e_randr2_cfg->restore; cfdata->params = strdup(cfd->data);
if (cfd->data) cfdata->restore = e_randr2_cfg->restore;
cfdata->hotplug = !e_randr2_cfg->ignore_hotplug_events; cfdata->hotplug = !e_randr2_cfg->ignore_hotplug_events;
cfdata->acpi = !e_randr2_cfg->ignore_acpi_events; cfdata->acpi = !e_randr2_cfg->ignore_acpi_events;
return cfdata; return cfdata;
@ -98,6 +100,7 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
eina_stringshare_del(cs->rel_to); eina_stringshare_del(cs->rel_to);
free(cs); free(cs);
} }
free(cfdata->params);
eina_list_free(cfdata->screen_items); eina_list_free(cfdata->screen_items);
eina_list_free(cfdata->screen_items2); eina_list_free(cfdata->screen_items2);
EINA_LIST_FREE(cfdata->freelist, dt) free(dt); EINA_LIST_FREE(cfdata->freelist, dt) free(dt);
@ -572,12 +575,27 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas EINA_UNUSED, E_Config_Dialog_Data
it = elm_hoversel_item_add(o, s->info.name, it = elm_hoversel_item_add(o, s->info.name,
NULL, ELM_ICON_NONE, NULL, ELM_ICON_NONE,
_cb_screen_select, cfdata); _cb_screen_select, cfdata);
if (!first) if (cfdata->params)
{ {
first = s; if ((s->info.name) &&
first_cfg = cs; (!strcmp(s->info.name, cfdata->params)) &&
cfdata->screen = i; (!first))
elm_object_text_set(o, s->info.name); {
first = s;
first_cfg = cs;
cfdata->screen = i;
elm_object_text_set(o, s->info.name);
}
}
else
{
if (!first)
{
first = s;
first_cfg = cs;
cfdata->screen = i;
elm_object_text_set(o, s->info.name);
}
} }
cfdata->screen_items = eina_list_append(cfdata->screen_items, it); cfdata->screen_items = eina_list_append(cfdata->screen_items, it);
i++; i++;