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.
--
Leif
From f6f84a4259285ed860a4f506a593413915877cda Mon Sep 17 00:00:00 2001
From: Leif Middelschulte <leif.middelschu...@gmail.com>
Date: Thu, 17 Nov 2011 18:34:36 +0100
Subject: [PATCH 1/2] Add disabled outputs to config dialog.
This enables us to e.g. adjust their policy.
---
.../src/modules/conf_randr/e-module-conf_randr.edc | 5 +++
.../e/src/modules/conf_randr/e_int_config_randr.c | 5 ---
.../e/src/modules/conf_randr/e_int_config_randr.h | 1 +
.../conf_randr/e_int_config_randr_arrangement.c | 31 +++++++++++++++++--
.../conf_randr/e_int_config_randr_policies.c | 2 +
5 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/trunk/e/src/modules/conf_randr/e-module-conf_randr.edc b/trunk/e/src/modules/conf_randr/e-module-conf_randr.edc
index d4fb8f6..433fc73 100644
--- a/trunk/e/src/modules/conf_randr/e-module-conf_randr.edc
+++ b/trunk/e/src/modules/conf_randr/e-module-conf_randr.edc
@@ -8,6 +8,11 @@ images {
image: "display-glass-shine.png" COMP;
}
+data {
+ item: "disabled_output_width" "1024";
+ item: "disabled_output_height" "768";
+}
+
collections {
// The icon used in the settings dialog
diff --git a/trunk/e/src/modules/conf_randr/e_int_config_randr.c b/trunk/e/src/modules/conf_randr/e_int_config_randr.c
index 4ac915c..267afca 100644
--- a/trunk/e/src/modules/conf_randr/e_int_config_randr.c
+++ b/trunk/e/src/modules/conf_randr/e_int_config_randr.c
@@ -123,11 +123,6 @@ create_data(E_Config_Dialog *cfd)
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)
{
- //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)))
e_config_runtime_info->output_dialog_data_list = eina_list_append(e_config_runtime_info->output_dialog_data_list, odd);
}
diff --git a/trunk/e/src/modules/conf_randr/e_int_config_randr.h b/trunk/e/src/modules/conf_randr/e_int_config_randr.h
index 5356e24..06687a2 100644
--- a/trunk/e/src/modules/conf_randr/e_int_config_randr.h
+++ b/trunk/e/src/modules/conf_randr/e_int_config_randr.h
@@ -23,6 +23,7 @@ struct _E_Config_Dialog_Data
struct {
Evas_Object *dialog, *swallowing_edje, *smart_parent, *suggestion, *clipper;
Evas_Coord_Point previous_pos, relative_zero;
+ Evas_Coord_Rectangle disabled_output_size;
int suggestion_dist_min;
} arrangement;
struct {
diff --git a/trunk/e/src/modules/conf_randr/e_int_config_randr_arrangement.c b/trunk/e/src/modules/conf_randr/e_int_config_randr_arrangement.c
index eb8d198..ee64efe 100644
--- a/trunk/e/src/modules/conf_randr/e_int_config_randr_arrangement.c
+++ b/trunk/e/src/modules/conf_randr/e_int_config_randr_arrangement.c
@@ -65,7 +65,13 @@ _dialog_subdialog_arrangement_output_dialog_data_fill(E_Config_Randr_Dialog_Outp
//disabled monitor
//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))))
- odd->preferred_mode = (Ecore_X_Randr_Mode_Info *)eina_list_data_get(eina_list_last(odd->output->modes));
+ {
+ if (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.y = Ecore_X_Randr_Unset;
}
@@ -79,12 +85,22 @@ dialog_subdialog_arrangement_create_data(E_Config_Dialog_Data *data)
{
Eina_List *iter;
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)
{
_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;
}
@@ -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_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_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);
@@ -240,8 +261,9 @@ _dialog_subdialog_arrangement_smart_class_resize(Evas_Object *obj, Evas_Coord w,
}
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));
- continue;
+ new_geo.w = (int)((float)e_config_runtime_info->gui.subdialogs.arrangement.disabled_output_size.w * scaling_factor);
+ 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))
{
@@ -557,6 +579,7 @@ _dialog_subdialog_arrangement_neighbors_get(Evas_Object *obj)
|| (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);
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)
|| (geo.x == (neighbor_geo.x + neighbor_geo.w))
diff --git a/trunk/e/src/modules/conf_randr/e_int_config_randr_policies.c b/trunk/e/src/modules/conf_randr/e_int_config_randr_policies.c
index c646427..6329b74 100644
--- a/trunk/e/src/modules/conf_randr/e_int_config_randr_policies.c
+++ b/trunk/e/src/modules/conf_randr/e_int_config_randr_policies.c
@@ -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;
odd->previous_policy = odd->new_policy;
+ if (odd->output)
+ odd->output->policy = odd->new_policy;
odd->new_policy = Ecore_X_Randr_Unset;
}
}
--
1.7.7.1
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel