forked from enlightenment/enlightenment
From: Leif Middelschulte <leif.middelschulte@gmail.com>
Subject: [E-devel] [PATCH] Patch to add disabled outputs to config dialog. Date: Thu, 17 Nov 2011 18:43:23 +0100 Hello devs, find attached a patch that enables the user to set the policy for an unused output. Since there is no resolution, an assumed resolution is set in the edc so it's easily adjustable for small screens. SVN revision: 65374
This commit is contained in:
parent
1f3c3ac719
commit
557f7d4755
|
@ -8,6 +8,11 @@ images {
|
||||||
image: "display-glass-shine.png" COMP;
|
image: "display-glass-shine.png" COMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data {
|
||||||
|
item: "disabled_output_width" "1024";
|
||||||
|
item: "disabled_output_height" "768";
|
||||||
|
}
|
||||||
|
|
||||||
collections {
|
collections {
|
||||||
|
|
||||||
// The icon used in the settings dialog
|
// The icon used in the settings dialog
|
||||||
|
|
|
@ -125,11 +125,6 @@ create_data(E_Config_Dialog *cfd)
|
||||||
e_config_runtime_info->manager = e_manager_current_get();
|
e_config_runtime_info->manager = e_manager_current_get();
|
||||||
EINA_LIST_FOREACH(e_randr_screen_info->rrvd_info.randr_info_12->outputs, iter, output_info)
|
EINA_LIST_FOREACH(e_randr_screen_info->rrvd_info.randr_info_12->outputs, iter, output_info)
|
||||||
{
|
{
|
||||||
//Create basic data struct for every connected output.
|
|
||||||
//Data would have to be recreated if a monitor is connected while dialog
|
|
||||||
//is open.
|
|
||||||
if (output_info->connection_status != ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED)
|
|
||||||
continue;
|
|
||||||
if ((odd = _dialog_output_dialog_data_new(output_info->crtc, output_info)))
|
if ((odd = _dialog_output_dialog_data_new(output_info->crtc, output_info)))
|
||||||
e_config_runtime_info->output_dialog_data_list = eina_list_append(e_config_runtime_info->output_dialog_data_list, odd);
|
e_config_runtime_info->output_dialog_data_list = eina_list_append(e_config_runtime_info->output_dialog_data_list, odd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ struct _E_Config_Dialog_Data
|
||||||
struct {
|
struct {
|
||||||
Evas_Object *dialog, *swallowing_edje, *smart_parent, *suggestion, *clipper;
|
Evas_Object *dialog, *swallowing_edje, *smart_parent, *suggestion, *clipper;
|
||||||
Evas_Coord_Point previous_pos, relative_zero;
|
Evas_Coord_Point previous_pos, relative_zero;
|
||||||
|
Evas_Coord_Rectangle disabled_output_size;
|
||||||
int suggestion_dist_min;
|
int suggestion_dist_min;
|
||||||
} arrangement;
|
} arrangement;
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -65,7 +65,13 @@ _dialog_subdialog_arrangement_output_dialog_data_fill(E_Config_Randr_Dialog_Outp
|
||||||
//disabled monitor
|
//disabled monitor
|
||||||
//try to get a mode from the preferred list, else use default list
|
//try to get a mode from the preferred list, else use default list
|
||||||
if (!(odd->preferred_mode = (Ecore_X_Randr_Mode_Info *)eina_list_data_get(eina_list_last(odd->output->preferred_modes))))
|
if (!(odd->preferred_mode = (Ecore_X_Randr_Mode_Info *)eina_list_data_get(eina_list_last(odd->output->preferred_modes))))
|
||||||
|
{
|
||||||
|
if (odd->output->modes)
|
||||||
odd->preferred_mode = (Ecore_X_Randr_Mode_Info *)eina_list_data_get(eina_list_last(odd->output->modes));
|
odd->preferred_mode = (Ecore_X_Randr_Mode_Info *)eina_list_data_get(eina_list_last(odd->output->modes));
|
||||||
|
else
|
||||||
|
odd->preferred_mode = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
odd->previous_pos.x = Ecore_X_Randr_Unset;
|
odd->previous_pos.x = Ecore_X_Randr_Unset;
|
||||||
odd->previous_pos.y = Ecore_X_Randr_Unset;
|
odd->previous_pos.y = Ecore_X_Randr_Unset;
|
||||||
}
|
}
|
||||||
|
@ -79,12 +85,22 @@ dialog_subdialog_arrangement_create_data(E_Config_Dialog_Data *data)
|
||||||
{
|
{
|
||||||
Eina_List *iter;
|
Eina_List *iter;
|
||||||
E_Config_Randr_Dialog_Output_Dialog_Data *dialog_data;
|
E_Config_Randr_Dialog_Output_Dialog_Data *dialog_data;
|
||||||
|
char *disabled_output_width, *disabled_output_height;
|
||||||
|
Evas_Object *display;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(data->output_dialog_data_list, iter, dialog_data)
|
EINA_LIST_FOREACH(data->output_dialog_data_list, iter, dialog_data)
|
||||||
{
|
{
|
||||||
_dialog_subdialog_arrangement_output_dialog_data_fill(dialog_data);
|
_dialog_subdialog_arrangement_output_dialog_data_fill(dialog_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(disabled_output_width = edje_file_data_get(_theme_file_path, "disabled_output_width")))
|
||||||
|
disabled_output_width = "1024";
|
||||||
|
if(!(disabled_output_height = edje_file_data_get(_theme_file_path, "disabled_output_height")))
|
||||||
|
disabled_output_height = "768";
|
||||||
|
|
||||||
|
data->gui.subdialogs.arrangement.disabled_output_size.w = atoi(disabled_output_width);
|
||||||
|
data->gui.subdialogs.arrangement.disabled_output_size.h = atoi(disabled_output_height);
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,11 +227,16 @@ _dialog_subdialog_arrangement_smart_class_resize(Evas_Object *obj, Evas_Coord w,
|
||||||
real_sum_w += output_dialog_data->previous_mode->width;
|
real_sum_w += output_dialog_data->previous_mode->width;
|
||||||
real_sum_h += output_dialog_data->previous_mode->height;
|
real_sum_h += output_dialog_data->previous_mode->height;
|
||||||
}
|
}
|
||||||
else
|
else if (output_dialog_data->preferred_mode)
|
||||||
{
|
{
|
||||||
real_sum_w += output_dialog_data->preferred_mode->width;
|
real_sum_w += output_dialog_data->preferred_mode->width;
|
||||||
real_sum_h += output_dialog_data->preferred_mode->height;
|
real_sum_h += output_dialog_data->preferred_mode->height;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
real_sum_w += e_config_runtime_info->gui.subdialogs.arrangement.disabled_output_size.w;
|
||||||
|
real_sum_h += e_config_runtime_info->gui.subdialogs.arrangement.disabled_output_size.h;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scaling_factor = (((float)parent_geo.w / (float)real_sum_w) < ((float)parent_geo.h / (float)real_sum_h)) ? ((float)parent_geo.w / (float)real_sum_w) : ((float)parent_geo.h / (float)real_sum_h);
|
scaling_factor = (((float)parent_geo.w / (float)real_sum_w) < ((float)parent_geo.h / (float)real_sum_h)) ? ((float)parent_geo.w / (float)real_sum_w) : ((float)parent_geo.h / (float)real_sum_h);
|
||||||
|
@ -240,8 +261,9 @@ _dialog_subdialog_arrangement_smart_class_resize(Evas_Object *obj, Evas_Coord w,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(stderr, "CONF_RANDR: Can't resize thumb, as neither mode nor preferred mode are avavailable for %x\n", (output_dialog_data->crtc ? output_dialog_data->crtc->xid : output_dialog_data->output->xid));
|
new_geo.w = (int)((float)e_config_runtime_info->gui.subdialogs.arrangement.disabled_output_size.w * scaling_factor);
|
||||||
continue;
|
new_geo.h = (int)((float)e_config_runtime_info->gui.subdialogs.arrangement.disabled_output_size.h * scaling_factor);
|
||||||
|
fprintf(stderr, "CONF_RANDR: Neither mode nor preferred mode are avavailable for %x. Using %dx%d.\n", (output_dialog_data->crtc ? output_dialog_data->crtc->xid : output_dialog_data->output->xid), e_config_runtime_info->gui.subdialogs.arrangement.disabled_output_size.w, e_config_runtime_info->gui.subdialogs.arrangement.disabled_output_size.h);
|
||||||
}
|
}
|
||||||
if ((new_geo.w <= 0) || (new_geo.h <= 0))
|
if ((new_geo.w <= 0) || (new_geo.h <= 0))
|
||||||
{
|
{
|
||||||
|
@ -557,6 +579,7 @@ _dialog_subdialog_arrangement_neighbors_get(Evas_Object *obj)
|
||||||
|| (crtc == e_config_runtime_info->gui.subdialogs.arrangement.clipper)) continue;
|
|| (crtc == e_config_runtime_info->gui.subdialogs.arrangement.clipper)) continue;
|
||||||
evas_object_geometry_get(crtc, &neighbor_geo.x, &neighbor_geo.y, &neighbor_geo.w, &neighbor_geo.h);
|
evas_object_geometry_get(crtc, &neighbor_geo.x, &neighbor_geo.y, &neighbor_geo.w, &neighbor_geo.h);
|
||||||
if (!(neighbor_info = evas_object_data_get(crtc, "output_info"))) continue;
|
if (!(neighbor_info = evas_object_data_get(crtc, "output_info"))) continue;
|
||||||
|
if (!neighbor_info->previous_mode) continue;
|
||||||
|
|
||||||
if (((geo.x + geo.w) == neighbor_geo.x)
|
if (((geo.x + geo.w) == neighbor_geo.x)
|
||||||
|| (geo.x == (neighbor_geo.x + neighbor_geo.w))
|
|| (geo.x == (neighbor_geo.x + neighbor_geo.w))
|
||||||
|
|
|
@ -283,6 +283,8 @@ dialog_subdialog_policies_keep_changes(E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
if (!odd || ((int)odd->previous_policy == Ecore_X_Randr_Unset)) continue;
|
if (!odd || ((int)odd->previous_policy == Ecore_X_Randr_Unset)) continue;
|
||||||
odd->previous_policy = odd->new_policy;
|
odd->previous_policy = odd->new_policy;
|
||||||
|
if (odd->output)
|
||||||
|
odd->output->policy = odd->new_policy;
|
||||||
odd->new_policy = Ecore_X_Randr_Unset;
|
odd->new_policy = Ecore_X_Randr_Unset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue