@ -25,14 +25,17 @@ void dialog_subdialog_arrangement_free_data(E_Config_Dialog
static inline Eina_List * _dialog_subdialog_arrangement_neighbors_get ( Evas_Object * obj ) ;
static void _dialog_subdialog_arrangement_determine_positions_recursive ( Evas_Object * obj ) ;
//static inline E_Config_Randr_Dialog_Output_Dialog_Data *_dialog_subdialog_arrangement_output _dialog_data_new (E_Randr_Crtc_Info *crtc_info, E_Randr_Output_Info *output_info);
//static inline E_Config_Randr_Dialog_Output_Dialog_Data *_dialog_subdialog_arrangement_rep _dialog_data_new (E_Randr_Crtc_Info *crtc_info, E_Randr_Output_Info *output_info);
static inline void _dialog_subdialog_arrangement_suggestion_add ( Evas * evas ) ;
static inline void _dialog_subdialog_arrangement_make_suggestion ( Evas_Object * obj ) ;
static void _dialog_subdialog_arrangement_smart_class_resize ( Evas_Object * obj , Evas_Coord w , Evas_Coord h ) ;
static Evas_Object * _dialog_subdialog_arrangement_output_add ( Evas * canvas , E_Config_Randr_Dialog_Output_Dialog_Data * output_dialog_data ) ;
static void _dialog_subdialog_arrangement_output_mouse_down_cb ( void * data , Evas * e , Evas_Object * obj , void * event_info ) ;
static void _dialog_subdialog_arrangement_output_mouse_move_cb ( void * data , Evas * e , Evas_Object * obj , void * event_info ) ;
static void _dialog_subdialog_arrangement_output_mouse_up_cb ( void * data , Evas * e , Evas_Object * obj , void * event_info ) ;
static Evas_Object * _dialog_subdialog_arrangement_rep_add ( Evas * canvas , E_Config_Randr_Dialog_Output_Dialog_Data * output_dialog_data ) ;
static void _dialog_subdialog_arrangement_rep_del ( Evas_Object * output ) ;
static void _dialog_subdialog_arrangement_rep_mouse_down_cb ( void * data , Evas * e , Evas_Object * obj , void * event_info ) ;
static void _dialog_subdialog_arrangement_rep_mouse_move_cb ( void * data , Evas * e , Evas_Object * obj , void * event_info ) ;
static void _dialog_subdialog_arrangement_rep_mouse_up_cb ( void * data , Evas * e , Evas_Object * obj , void * event_info ) ;
static void _dialog_subdialog_arrangement_check_mouse_down_cb ( void * data , Evas * e , Evas_Object * obj , void * event_info ) ;
static void _dialog_subdialog_arrangement_update ( void ) ;
// Function for the resolutions subdialog interaction
extern void dialog_subdialog_resolutions_update_list ( Evas_Object * crtc ) ;
@ -46,10 +49,11 @@ static Evas_Smart_Class screen_setup_smart_class = EVAS_SMART_CLASS_INIT_NAME_VE
static Evas_Smart * screen_setup_smart = NULL ;
extern E_Config_Dialog_Data * e_config_runtime_info ;
extern Config * randr_dialog_config ;
extern char _theme_file_path [ ] ;
static void
_dialog_subdialog_arrangement_output _dialog_data_fill ( E_Config_Randr_Dialog_Output_Dialog_Data * odd )
_dialog_subdialog_arrangement_rep _dialog_data_fill ( E_Config_Randr_Dialog_Output_Dialog_Data * odd )
{
if ( ! odd ) return ;
@ -82,6 +86,45 @@ _dialog_subdialog_arrangement_output_dialog_data_fill(E_Config_Randr_Dialog_Outp
odd - > new_pos . y = Ecore_X_Randr_Unset ;
}
void
_dialog_subdialog_arrangement_update ( void )
{
Evas_Object * area , * rep ;
Eina_List * iter ;
E_Config_Randr_Dialog_Output_Dialog_Data * output_dialog_data ;
area = e_config_runtime_info - > gui . subdialogs . arrangement . smart_parent ;
if ( ! e_config_runtime_info | | ! e_config_runtime_info - > gui . canvas | | ! e_config_runtime_info - > output_dialog_data_list | | ! area ) return ;
EINA_LIST_FOREACH ( evas_object_smart_members_get ( area ) , iter , rep )
{
//skip clipper
if ( rep = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper )
continue ;
evas_object_smart_member_del ( rep ) ;
_dialog_subdialog_arrangement_rep_del ( rep ) ;
}
EINA_LIST_FOREACH ( e_config_runtime_info - > output_dialog_data_list , iter , output_dialog_data )
{
fprintf ( stderr , " CONF_RANDR: Display disabled outputs %d \n " , randr_dialog_config - > display_disabled_outputs ) ;
if ( ! output_dialog_data - > crtc )
{
if ( ! output_dialog_data - > output | | ( randr_dialog_config & & ! randr_dialog_config - > display_disabled_outputs ) )
continue ;
}
rep = _dialog_subdialog_arrangement_rep_add ( e_config_runtime_info - > gui . canvas , output_dialog_data ) ;
if ( ! rep ) continue ;
evas_object_show ( rep ) ;
evas_object_smart_member_add ( rep , area ) ;
fprintf ( stderr , " CONF_RANDR: Representation (%p) added to arrangement subdialog (%p). \n " , rep , area ) ;
}
}
Eina_Bool
dialog_subdialog_arrangement_create_data ( E_Config_Dialog_Data * data )
{
@ -92,7 +135,7 @@ dialog_subdialog_arrangement_create_data(E_Config_Dialog_Data *data)
EINA_LIST_FOREACH ( data - > output_dialog_data_list , iter , dialog_data )
{
_dialog_subdialog_arrangement_output _dialog_data_fill ( dialog_data ) ;
_dialog_subdialog_arrangement_rep _dialog_data_fill ( dialog_data ) ;
}
if ( ! ( disabled_output_width = edje_file_data_get ( _theme_file_path , " disabled_output_width " ) ) )
@ -110,71 +153,67 @@ dialog_subdialog_arrangement_create_data(E_Config_Dialog_Data *data)
Evas_Object *
dialog_subdialog_arrangement_basic_create_widgets ( Evas * canvas )
{
Evas_Object * subdialog , * crtc ;
E_Config_Randr_Dialog_Output_Dialog_Data * output_dialog_data ;
Eina_List * iter ;
Evas_Object * subdialog , * area , * check ;
if ( ! canvas | | ! e_config_runtime_info | | ! e_config_runtime_info - > output_dialog_data_list ) return NULL ;
subdialog = e_widget_list_add ( canvas , 0 , 1 ) ;
//Add checkbox
check = e_widget_check_add ( canvas , _ ( " Display disabled outputs " ) , & e_config_runtime_info - > gui . subdialogs . arrangement . check_val_display_disabled_outputs ) ;
if ( randr_dialog_config )
e_widget_check_checked_set ( check , randr_dialog_config - > display_disabled_outputs ) ;
evas_object_event_callback_add ( check , EVAS_CALLBACK_MOUSE_DOWN , _dialog_subdialog_arrangement_check_mouse_down_cb , NULL ) ;
e_config_runtime_info - > gui . subdialogs . arrangement . check_display_disabled_outputs = check ;
//Add smart move area with outputs
//initialize smart object
evas_object_smart_clipped_smart_set ( & screen_setup_smart_class ) ;
screen_setup_smart_class . resize = _dialog_subdialog_arrangement_smart_class_resize ;
screen_setup_smart = evas_smart_class_new ( & screen_setup_smart_class ) ;
subdialog = evas_object_smart_add ( canvas , screen_setup_smart ) ;
e_config_runtime_info - > gui . subdialogs . arrangement . clipper = evas_object_smart_clipped_clipper_get ( subdialog ) ;
area = evas_object_smart_add ( canvas , screen_setup_smart ) ;
e_config_runtime_info - > gui . subdialogs . arrangement . clipper = evas_object_smart_clipped_clipper_get ( area ) ;
e_config_runtime_info - > gui . subdialogs . arrangement . smart_parent = area ;
_dialog_subdialog_arrangement_update ( ) ;
fprintf ( stderr , " CONF_RANDR: Arrangement subdialog added (%p). \n " , subdialog ) ;
//only use information we can restore.
EINA_LIST_FOREACH ( e_config_runtime_info - > output_dialog_data_list , iter , output_dialog_data )
{
if ( ( ! output_dialog_data - > crtc & & ! output_dialog_data - > output ) )
continue ;
crtc = _dialog_subdialog_arrangement_output_add ( canvas , output_dialog_data ) ;
if ( ! crtc ) continue ;
evas_object_show ( crtc ) ;
// Append both objects to widget list
e_widget_list_object_append ( subdialog , area , EVAS_HINT_FILL , EVAS_HINT_EXPAND , EVAS_HINT_FILL ) ;
e_widget_list_object_append ( subdialog , check , 0 , 0 , 1.0 ) ;
evas_object_event_callback_add ( crtc , EVAS_CALLBACK_MOUSE_DOWN , _dialog_subdialog_arrangement_output_mouse_down_cb , NULL ) ;
evas_object_event_callback_add ( crtc , EVAS_CALLBACK_MOUSE_MOVE , _dialog_subdialog_arrangement_output_mouse_move_cb , NULL ) ;
evas_object_event_callback_add ( crtc , EVAS_CALLBACK_MOUSE_UP , _dialog_subdialog_arrangement_output_mouse_up_cb , NULL ) ;
evas_object_smart_member_add ( crtc , subdialog ) ;
fprintf ( stderr , " CONF_RANDR: CRTC representation (%p) added to arrangement subdialog (%p). \n " , crtc , subdialog ) ;
}
e_config_runtime_info - > gui . subdialogs . arrangement . smart_parent = subdialog ;
e_config_runtime_info - > gui . subdialogs . arrangement . widget_list = subdialog ;
return subdialog ;
}
static Evas_Object *
_dialog_subdialog_arrangement_output _add ( Evas * canvas , E_Config_Randr_Dialog_Output_Dialog_Data * output_dialog_data )
_dialog_subdialog_arrangement_rep_add ( Evas * canvas , E_Config_Randr_Dialog_Output_Dialog_Data * output_dialog_data )
{
E_Randr_Output_Info * output_info ;
Evas_Object * output ;
Evas_Object * rep ;
const char * output_name = NULL ;
const char * state_signal ;
if ( ! canvas | | ! output_dialog_data | | ! e_config_runtime_info ) return NULL ;
output = edje_object_add ( canvas ) ;
rep = edje_object_add ( canvas ) ;
//set instance data for output
evas_object_data_set ( output , " output _info" , output_dialog_data ) ;
evas_object_data_set ( rep , " rep _info" , output_dialog_data ) ;
//set theme for monitor representation
EINA_SAFETY_ON_FALSE_GOTO ( edje_object_file_set ( output , _theme_file_path , " e/conf/randr/dialog/subdialog/arrangement/output " ) , _dialog_subdialog_arrangement_output _add_edje_set_fail ) ;
EINA_SAFETY_ON_FALSE_GOTO ( edje_object_file_set ( rep , _theme_file_path , " e/conf/randr/dialog/subdialog/arrangement/output " ) , _dialog_subdialog_arrangement_rep _add_edje_set_fail ) ;
//indicate monitor state
if ( ! output_dialog_data - > crtc | | ( output_dialog_data - > crtc & & ! output_dialog_data - > previous_mode ) )
state_signal = " disabled " ;
else
state_signal = " enabled " ;
edje_object_signal_emit ( output , state_signal , " e " ) ;
//for now use deskpreview widget as background of output , maybe change this to
edje_object_signal_emit ( rep , state_signal , " e " ) ;
//for now use deskpreview widget as background of rep , maybe change this to
//live image from comp module
output_dialog_data - > bg = e_widget_deskpreview_add ( canvas , 1 , 1 ) ;
edje_object_part_swallow ( output , " e.swallow.content " , output_dialog_data - > bg ) ;
edje_object_part_swallow ( rep , " e.swallow.content " , output_dialog_data - > bg ) ;
//Try to get the name of the monitor connected to the output's last output via edid
//else use the output's name
@ -190,21 +229,50 @@ _dialog_subdialog_arrangement_output_add(Evas *canvas, E_Config_Randr_Dialog_Out
output_name = output_info - > name ;
}
if ( output_name )
edje_object_part_text_set ( output , " output_txt " , output_name ) ;
edje_object_part_text_set ( rep , " output_txt " , output_name ) ;
//set output orientation
dialog_subdialog_orientation_update_edje ( output ) ;
return output ;
dialog_subdialog_orientation_update_edje ( rep ) ;
evas_object_event_callback_add ( rep , EVAS_CALLBACK_MOUSE_DOWN , _dialog_subdialog_arrangement_rep_mouse_down_cb , NULL ) ;
evas_object_event_callback_add ( rep , EVAS_CALLBACK_MOUSE_MOVE , _dialog_subdialog_arrangement_rep_mouse_move_cb , NULL ) ;
evas_object_event_callback_add ( rep , EVAS_CALLBACK_MOUSE_UP , _dialog_subdialog_arrangement_rep_mouse_up_cb , NULL ) ;
return rep ;
_dialog_subdialog_arrangement_output_add_edje_set_fail :
evas_object_del ( output ) ;
_dialog_subdialog_arrangement_rep _add_edje_set_fail :
evas_object_del ( rep ) ;
return NULL ;
}
static void
_dialog_subdialog_arrangement_rep_del ( Evas_Object * rep )
{
E_Config_Randr_Dialog_Output_Dialog_Data * output_dialog_data ;
EINA_SAFETY_ON_NULL_RETURN ( rep ) ;
evas_object_hide ( rep ) ;
//get instance data for output
output_dialog_data = evas_object_data_get ( rep , " rep_info " ) ;
edje_object_part_unswallow ( rep , output_dialog_data - > bg ) ;
evas_object_del ( output_dialog_data - > bg ) ;
evas_object_event_callback_del ( rep , EVAS_CALLBACK_MOUSE_DOWN , _dialog_subdialog_arrangement_rep_mouse_down_cb ) ;
evas_object_event_callback_del ( rep , EVAS_CALLBACK_MOUSE_MOVE , _dialog_subdialog_arrangement_rep_mouse_move_cb ) ;
evas_object_event_callback_del ( rep , EVAS_CALLBACK_MOUSE_UP , _dialog_subdialog_arrangement_rep_mouse_up_cb ) ;
//set output orientation
dialog_subdialog_orientation_update_edje ( NULL ) ;
evas_object_del ( rep ) ;
}
static void
_dialog_subdialog_arrangement_smart_class_resize ( Evas_Object * obj , Evas_Coord w , Evas_Coord h )
{
Evas_Object * output ;
Evas_Object * rep ;
Evas_Coord real_sum_w = 0 , real_sum_h = 0 ;
Eina_Rectangle parent_geo , new_geo ;
Evas_Coord_Point offset = { . x = 0 , . y = 0 } ;
@ -220,10 +288,10 @@ _dialog_subdialog_arrangement_smart_class_resize(Evas_Object *obj, Evas_Coord w,
lst = evas_object_smart_members_get ( obj ) ;
//Calc average aspect ratio from all available monitors
EINA_LIST_FOREACH ( lst , itr , output )
EINA_LIST_FOREACH ( lst , itr , rep )
{
if ( output = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper ) continue ;
output_dialog_data = evas_object_data_get ( output , " output _info" ) ;
if ( rep = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper ) continue ;
output_dialog_data = evas_object_data_get ( rep , " rep _info" ) ;
if ( ! output_dialog_data ) continue ;
if ( ( ! output_dialog_data - > previous_mode ) & & ( ! output_dialog_data - > preferred_mode ) ) continue ;
if ( output_dialog_data - > previous_mode )
@ -246,12 +314,12 @@ _dialog_subdialog_arrangement_smart_class_resize(Evas_Object *obj, Evas_Coord w,
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 * = e_scale ;
EINA_LIST_FOREACH ( lst , itr , output )
EINA_LIST_FOREACH ( lst , itr , rep )
{
//Skip elements that are either the clipped smart object or falsely added
//to the list of outputs (which should not happen)
if ( output = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper ) continue ;
output_dialog_data = evas_object_data_get ( output , " output _info" ) ;
if ( rep = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper ) continue ;
output_dialog_data = evas_object_data_get ( rep , " rep _info" ) ;
if ( ! output_dialog_data ) continue ;
if ( output_dialog_data - > previous_mode )
{
@ -299,17 +367,30 @@ _dialog_subdialog_arrangement_smart_class_resize(Evas_Object *obj, Evas_Coord w,
new_geo . y = ( ( int ) ( ( float ) output_dialog_data - > previous_pos . y * scaling_factor ) ) + parent_geo . y ;
}
//resize edje element
evas_object_resize ( output , new_geo . w , new_geo . h ) ;
evas_object_resize ( rep , new_geo . w , new_geo . h ) ;
//also resize bg
e_thumb_icon_size_set ( output_dialog_data - > bg , new_geo . w , new_geo . h ) ; //need to clarify the usage of e_thumb. Usable without e_thumb_icon_file_set??!!
evas_object_move ( output , new_geo . x , new_geo . y ) ;
fprintf ( stderr , " CONF_RANDR: output representation %p was resized to %d x %d \n " , output , new_geo . w , new_geo . h ) ;
fprintf ( stderr , " CONF_RANDR: output representation %p was moved to %d x %d \n " , output , new_geo . x , new_geo . y ) ;
evas_object_move ( rep , new_geo . x , new_geo . y ) ;
fprintf ( stderr , " CONF_RANDR: output representation %p was resized to %d x %d \n " , rep , new_geo . w , new_geo . h ) ;
fprintf ( stderr , " CONF_RANDR: output representation %p was moved to %d x %d \n " , rep , new_geo . x , new_geo . y ) ;
}
}
static void
_dialog_subdialog_arrangement_check_mouse_down_cb ( void * data __UNUSED__ , Evas * e __UNUSED__ , Evas_Object * obj , void * event_info __UNUSED__ )
{
if ( ! obj | | ! e_config_runtime_info | | ! randr_dialog_config ) return ;
if ( obj = = e_config_runtime_info - > gui . subdialogs . arrangement . check_display_disabled_outputs )
{
//this is bad. The events are called _before_ the value is updated.
randr_dialog_config - > display_disabled_outputs ^ = EINA_TRUE ;
_dialog_subdialog_arrangement_update ( ) ;
}
}
static void
_dialog_subdialog_arrangement_output_mouse_down_cb ( void * data __UNUSED__ , Evas * e __UNUSED__ , Evas_Object * obj , void * event_info __UNUSED__ )
_dialog_subdialog_arrangement_rep _mouse_down_cb ( void * data __UNUSED__ , Evas * e __UNUSED__ , Evas_Object * obj , void * event_info __UNUSED__ )
{
Evas_Object * element = NULL ;
Eina_List * iter ;
@ -325,7 +406,7 @@ _dialog_subdialog_arrangement_output_mouse_down_cb(void *data __UNUSED__, Evas *
edje_object_signal_emit ( element , " select " , " e " ) ;
//update data for other dialogs
e_config_runtime_info - > gui . selected_eo = obj ;
e_config_runtime_info - > gui . selected_output_dd = evas_object_data_get ( obj , " output _info" ) ;
e_config_runtime_info - > gui . selected_output_dd = evas_object_data_get ( obj , " rep _info" ) ;
//update resolutions list
dialog_subdialog_resolutions_update_list ( obj ) ;
@ -359,7 +440,7 @@ _dialog_subdialog_arrangement_output_mouse_down_cb(void *data __UNUSED__, Evas *
}
static void
_dialog_subdialog_arrangement_output _mouse_move_cb ( void * data __UNUSED__ , Evas * e __UNUSED__ , Evas_Object * obj , void * event_info )
_dialog_subdialog_arrangement_rep _mouse_move_cb ( void * data __UNUSED__ , Evas * e __UNUSED__ , Evas_Object * obj , void * event_info )
{
Evas_Event_Mouse_Move * ev = event_info ;
Eina_Rectangle geo , parent ;
@ -391,7 +472,7 @@ _dialog_subdialog_arrangement_output_mouse_move_cb(void *data __UNUSED__, Evas *
}
static void
_dialog_subdialog_arrangement_output _mouse_up_cb ( void * data __UNUSED__ , Evas * e __UNUSED__ , Evas_Object * obj , void * event_info __UNUSED__ )
_dialog_subdialog_arrangement_rep _mouse_up_cb ( void * data __UNUSED__ , Evas * e __UNUSED__ , Evas_Object * obj , void * event_info __UNUSED__ )
{
Evas_Coord_Point coords ;
@ -577,14 +658,14 @@ _dialog_subdialog_arrangement_neighbors_get(Evas_Object *obj)
smart_parent = evas_object_smart_parent_get ( obj ) ;
crtcs = evas_object_smart_members_get ( smart_parent ) ;
EINA_SAFETY_ON_FALSE_RETURN_VAL ( ( dialog_data = evas_object_data_get ( obj , " output _info" ) ) , NULL ) ;
EINA_SAFETY_ON_FALSE_RETURN_VAL ( ( dialog_data = evas_object_data_get ( obj , " rep _info" ) ) , NULL ) ;
evas_object_geometry_get ( obj , & geo . x , & geo . y , & geo . w , & geo . h ) ;
EINA_LIST_FOREACH ( crtcs , iter , crtc )
{
if ( ( crtc = = 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 = evas_object_data_get ( crtc , " rep _info" ) ) ) continue ;
if ( ! neighbor_info - > previous_mode ) continue ;
if ( ( ( geo . x + geo . w ) = = neighbor_geo . x )
@ -620,7 +701,7 @@ _dialog_subdialog_arrangement_determine_positions_recursive(Evas_Object *obj)
//fprintf(stderr, "CONF_RANDR: Smart Parent is at %dx%d\n", smart_geo.x, smart_geo.y);
neighbors = _dialog_subdialog_arrangement_neighbors_get ( obj ) ;
EINA_SAFETY_ON_FALSE_RETURN ( ( dialog_data = evas_object_data_get ( obj , " output _info" ) ) ) ;
EINA_SAFETY_ON_FALSE_RETURN ( ( dialog_data = evas_object_data_get ( obj , " rep _info" ) ) ) ;
evas_object_geometry_get ( obj , & geo . x , & geo . y , & geo . w , & geo . h ) ;
//fprintf(stderr, "CONF_RANDR: Traversed element (%p) is at %dx%d\n", obj, geo.x, geo.y);
@ -633,7 +714,7 @@ _dialog_subdialog_arrangement_determine_positions_recursive(Evas_Object *obj)
EINA_LIST_FOREACH ( neighbors , iter , crtc )
{
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 , " rep _info" ) ) ) continue ;
evas_object_geometry_get ( crtc , & neighbor_geo . x , & neighbor_geo . y , & neighbor_geo . w , & neighbor_geo . h ) ;
@ -696,7 +777,7 @@ _dialog_subdialog_arrangement_determine_positions_recursive(Evas_Object *obj)
//element as reference for their position
EINA_LIST_FOREACH ( neighbors , iter , crtc )
{
neighbor_info = evas_object_data_get ( crtc , " output _info" ) ;
neighbor_info = evas_object_data_get ( crtc , " rep _info" ) ;
if ( ( neighbor_info - > new_pos . x = = Ecore_X_Randr_Unset )
| | ( neighbor_info - > new_pos . y = = Ecore_X_Randr_Unset ) )
{
@ -728,7 +809,7 @@ dialog_subdialog_arrangement_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dia
{
if ( crtc = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper ) continue ;
//Already reset values for upcoming calculation
if ( ! ( odd = evas_object_data_get ( crtc , " output _info" ) ) ) continue ;
if ( ! ( odd = evas_object_data_get ( crtc , " rep _info" ) ) ) continue ;
odd - > new_pos . x = Ecore_X_Randr_Unset ;
odd - > new_pos . y = Ecore_X_Randr_Unset ;
odd = NULL ;
@ -752,7 +833,7 @@ dialog_subdialog_arrangement_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dia
EINA_LIST_FOREACH ( crtcs , iter , crtc )
{
if ( ( crtc = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper ) | | ! ( odd = evas_object_data_get ( crtc , " output _info" ) ) | | ! odd - > crtc
if ( ( crtc = = e_config_runtime_info - > gui . subdialogs . arrangement . clipper ) | | ! ( odd = evas_object_data_get ( crtc , " rep _info" ) ) | | ! odd - > crtc
| | ( ( odd - > new_pos . x = = Ecore_X_Randr_Unset ) | | ( odd - > new_pos . y = = Ecore_X_Randr_Unset ) ) ) continue ;
if ( ( odd - > previous_pos . x ! = odd - > new_pos . x ) | | ( odd - > previous_pos . y ! = odd - > new_pos . y ) )
{