Selecting resolutions for mulitple monitors before applying should work now.
authorLeif Middelschulte <leif.middelschulte@gmail.com>
Tue, 10 Apr 2012 09:20:54 +0000 (09:20 +0000)
committerLeif Middelschulte <leif.middelschulte@gmail.com>
Tue, 10 Apr 2012 09:20:54 +0000 (09:20 +0000)
SVN revision: 69994

src/modules/conf_randr/e_int_config_randr_resolution.c

index d6d5e44a07f200eaff6814b9a91fe0d2c1e3c181..1a86c1f061b36d27bca413395a58a3bd3b574632 100644 (file)
@@ -20,7 +20,7 @@
 
 extern E_Config_Dialog_Data *e_config_runtime_info;
 static Ecore_X_Randr_Mode_Info disabled_mode = {.xid = Ecore_X_Randr_None, .name = "Disabled"};
-static void _resolution_widget_selected_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__);
+static void _resolution_widget_selected_cb(void *data);
 Eina_Bool
 resolution_widget_create_data(E_Config_Dialog_Data *cfdata)
 {
@@ -50,7 +50,6 @@ resolution_widget_create_data(E_Config_Dialog_Data *cfdata)
 void
 resolution_widget_free_cfdata(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
 {
-   evas_object_smart_callback_del(cfdata->gui.widgets.resolution.widget, "selected", _resolution_widget_selected_cb);
 }
 
 Evas_Object *
@@ -63,7 +62,6 @@ resolution_widget_basic_create_widgets(Evas *canvas)
    else if (!canvas || !e_config_runtime_info || !(widget = e_widget_ilist_add(canvas, ICON_WIDTH * e_scale, ICON_HEIGHT * e_scale, NULL)))
      return NULL;
 
-   evas_object_smart_callback_add(widget, "selected", _resolution_widget_selected_cb, NULL);
    e_widget_ilist_multi_select_set(widget, EINA_FALSE);
    e_widget_disabled_set(widget, EINA_TRUE);
    evas_object_show(widget);
@@ -195,7 +193,7 @@ resolution_widget_update_list(Evas_Object *rep)
         else
           snprintf(resolution_text, (RESOLUTION_TXT_MAX_LENGTH - 1), "%dx%d@%.1fHz", mode_info->width, mode_info->height, rate);
 
-        e_widget_ilist_append(e_config_runtime_info->gui.widgets.resolution.widget, NULL, resolution_text, NULL, mode_info, NULL);
+        e_widget_ilist_append(e_config_runtime_info->gui.widgets.resolution.widget, NULL, resolution_text, _resolution_widget_selected_cb, mode_info, NULL);
 
         //select currently enabled mode
         if (mode_info == current_mode)
@@ -251,16 +249,20 @@ resolution_widget_discard_changes(E_Config_Dialog_Data *cfdata)
 }
 
 static void
-_resolution_widget_selected_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_resolution_widget_selected_cb(void *data)
 {
-   Ecore_X_Randr_Mode_Info *selected_mode;
+   Ecore_X_Randr_Mode_Info *selected_mode = (Ecore_X_Randr_Mode_Info*)data;
+
+   if (!selected_mode)
+     return;
+
    if (!e_config_runtime_info->gui.selected_output_dd)
      {
         fprintf(stderr, "CONF_RANDR: Can't set newly selected resolution, because no odd was set \"selected\" yet!\n");
         return;
      }
 
-   if ((selected_mode = (Ecore_X_Randr_Mode_Info *)e_widget_ilist_selected_data_get(e_config_runtime_info->gui.widgets.resolution.widget)))
+   if ((selected_mode = selected_mode))
      e_config_runtime_info->gui.selected_output_dd->new_mode = selected_mode;
 
    fprintf(stderr, "CONF_RANDR: Mode %s was selected for crtc/output %d!\n", (selected_mode ? selected_mode->name : "None"), (e_config_runtime_info->gui.selected_output_dd->crtc ? e_config_runtime_info->gui.selected_output_dd->crtc->xid :  e_config_runtime_info->gui.selected_output_dd->output->xid));