e_randr: Show "ask position" dialog, if ASK policy is used.

SVN revision: 71566
devs/princeamd/enlightenment-0.17-elive
Leif Middelschulte 11 years ago
parent c43f83ef52
commit bdb66274c0
  1. 1247
      po/ar.po
  2. 1260
      po/bg.po
  3. 1265
      po/ca.po
  4. 1255
      po/cs.po
  5. 1251
      po/da.po
  6. 1261
      po/de.po
  7. 1246
      po/el.po
  8. 1246
      po/eo.po
  9. 1260
      po/es.po
  10. 1245
      po/et.po
  11. 1260
      po/fi.po
  12. 1225
      po/fo.po
  13. 2059
      po/fr.po
  14. 1266
      po/fr_CH.po
  15. 1246
      po/he.po
  16. 1246
      po/hr.po
  17. 1246
      po/hu.po
  18. 112
      po/it.po
  19. 1264
      po/ja.po
  20. 1226
      po/km.po
  21. 1265
      po/ko.po
  22. 1223
      po/ku.po
  23. 1246
      po/lt.po
  24. 1245
      po/ms.po
  25. 1257
      po/nb.po
  26. 1252
      po/nl.po
  27. 1261
      po/pl.po
  28. 1269
      po/pt.po
  29. 1259
      po/pt_BR.po
  30. 1245
      po/ro.po
  31. 1258
      po/ru.po
  32. 1257
      po/sk.po
  33. 1247
      po/sl.po
  34. 1260
      po/sv.po
  35. 1246
      po/tr.po
  36. 1246
      po/uk.po
  37. 1260
      po/zh_CN.po
  38. 1266
      po/zh_TW.po
  39. 1
      src/bin/Makefile.am
  40. 3
      src/bin/e_randr.h
  41. 19
      src/bin/e_randr_12.c
  42. 82
      src/bin/e_randr_12_ask_dialog.c
  43. 2
      src/modules/conf_randr/e_int_config_randr.h
  44. 42
      src/modules/conf_randr/e_int_config_randr_policy.c

1247
po/ar.po

File diff suppressed because it is too large Load Diff

1260
po/bg.po

File diff suppressed because it is too large Load Diff

1265
po/ca.po

File diff suppressed because it is too large Load Diff

1255
po/cs.po

File diff suppressed because it is too large Load Diff

1251
po/da.po

File diff suppressed because it is too large Load Diff

1261
po/de.po

File diff suppressed because it is too large Load Diff

1246
po/el.po

File diff suppressed because it is too large Load Diff

1246
po/eo.po

File diff suppressed because it is too large Load Diff

1260
po/es.po

File diff suppressed because it is too large Load Diff

1245
po/et.po

File diff suppressed because it is too large Load Diff

1260
po/fi.po

File diff suppressed because it is too large Load Diff

1225
po/fo.po

File diff suppressed because it is too large Load Diff

2059
po/fr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1246
po/he.po

File diff suppressed because it is too large Load Diff

1246
po/hr.po

File diff suppressed because it is too large Load Diff

1246
po/hu.po

File diff suppressed because it is too large Load Diff

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Enlightenment 0.17\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2012-05-13 21:16+0200\n"
"POT-Creation-Date: 2012-05-30 21:07+0200\n"
"PO-Revision-Date: 2012-05-13 21:18+0200\n"
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
"Language-Team: none\n"
@ -303,7 +303,7 @@ msgstr "Commuta stato attaccata"
#: src/bin/e_fm_device.c:637 src/bin/e_fm_device.c:664
#: src/bin/e_int_menus.c:144 src/bin/e_int_shelf_config.c:247
#: src/modules/conf_window_manipulation/e_int_config_clientlist.c:101
#: src/modules/fileman/e_mod_main.c:358 src/modules/ibox/e_mod_config.c:162
#: src/modules/fileman/e_mod_main.c:360 src/modules/ibox/e_mod_config.c:162
msgid "Desktop"
msgstr "Desktop"
@ -754,13 +754,13 @@ msgstr "Selettore colore"
#: src/bin/e_utils.c:707 src/modules/conf_dialogs/e_int_config_profiles.c:387
#: src/modules/conf_intl/e_int_config_imc_import.c:120
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:222
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:352
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:357
#: src/modules/conf_theme/e_int_config_theme_import.c:120
#: src/modules/cpufreq/e_mod_main.c:415 src/modules/cpufreq/e_mod_main.c:444
#: src/modules/cpufreq/e_mod_main.c:469
#: src/modules/fileman/e_int_config_mime_edit.c:303
#: src/modules/shot/e_mod_main.c:242 src/modules/shot/e_mod_main.c:482
#: src/modules/xkbswitch/e_mod_config.c:512
#: src/modules/xkbswitch/e_mod_config.c:526
msgid "OK"
msgstr "OK"
@ -770,12 +770,12 @@ msgstr "OK"
#: src/modules/conf_dialogs/e_int_config_profiles.c:388
#: src/modules/conf_intl/e_int_config_imc_import.c:124
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:226
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:356
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:361
#: src/modules/conf_theme/e_int_config_theme_import.c:124
#: src/modules/fileman/e_int_config_mime_edit.c:304
#: src/modules/syscon/e_syscon.c:120 src/modules/connman/e_mod_main.c:300
#: src/modules/shot/e_mod_main.c:244 src/modules/shot/e_mod_main.c:483
#: src/modules/shot/e_mod_main.c:698 src/modules/xkbswitch/e_mod_config.c:513
#: src/modules/shot/e_mod_main.c:698 src/modules/xkbswitch/e_mod_config.c:527
msgid "Cancel"
msgstr "Annulla"
@ -1124,7 +1124,7 @@ msgid "Show in Menus"
msgstr "Mostra in menù"
#: src/bin/e_eap_editor.c:786 src/bin/e_int_border_remember.c:757
#: src/modules/xkbswitch/e_mod_config.c:325
#: src/modules/xkbswitch/e_mod_config.c:335
msgid "Options"
msgstr "Opzioni"
@ -1136,26 +1136,26 @@ msgstr "Seleziona un'icona"
msgid "Select an Executable"
msgstr "Seleziona un'eseguibile"
#: src/bin/e_entry.c:501 src/bin/e_fm.c:8243 src/bin/e_shelf.c:1703
#: src/bin/e_entry.c:506 src/bin/e_fm.c:8243 src/bin/e_shelf.c:1703
#: src/modules/conf_dialogs/e_int_config_profiles.c:135
#: src/modules/conf_shelves/e_int_config_shelf.c:81
#: src/modules/ibar/e_mod_config.c:108
msgid "Delete"
msgstr "Elimina"
#: src/bin/e_entry.c:511 src/bin/e_fm.c:8151
#: src/bin/e_entry.c:516 src/bin/e_fm.c:8151
msgid "Cut"
msgstr "Taglia"
#: src/bin/e_entry.c:519 src/bin/e_fm.c:6198 src/bin/e_fm.c:8165
#: src/bin/e_entry.c:524 src/bin/e_fm.c:6198 src/bin/e_fm.c:8165
msgid "Copy"
msgstr "Copia"
#: src/bin/e_entry.c:527 src/bin/e_fm.c:7989 src/bin/e_fm.c:8178
#: src/bin/e_entry.c:532 src/bin/e_fm.c:7989 src/bin/e_fm.c:8178
msgid "Paste"
msgstr "Incolla"
#: src/bin/e_entry.c:537
#: src/bin/e_entry.c:542
msgid "Select All"
msgstr "Seleziona tutto"
@ -1652,7 +1652,7 @@ msgstr "Aspetto"
#: src/modules/conf_applications/e_int_config_apps.c:260
#: src/modules/conf_applications/e_int_config_apps.c:280
#: src/modules/gadman/e_mod_gadman.c:818 src/modules/ibar/e_mod_main.c:801
#: src/modules/xkbswitch/e_mod_config.c:260
#: src/modules/xkbswitch/e_mod_config.c:268
msgid "Remove"
msgstr "Elimina"
@ -2187,7 +2187,7 @@ msgstr "Utilità"
#: src/bin/e_int_config_modules.c:55
#: src/modules/everything/evry_plug_files.c:1585
#: src/modules/fileman/e_mod_main.c:56 src/modules/fileman/e_mod_main.c:76
#: src/modules/fileman/e_mod_main.c:420
#: src/modules/fileman/e_mod_main.c:421
msgid "Files"
msgstr "File"
@ -2302,7 +2302,7 @@ msgstr "Applicazioni"
#: src/bin/e_int_menus.c:151 src/bin/e_int_menus.c:1126
#: src/modules/conf_window_manipulation/e_mod_main.c:17
#: src/modules/conf_window_remembers/e_mod_main.c:14
#: src/modules/winlist/e_mod_main.c:25 src/modules/tiling/e_mod_tiling.c:3810
#: src/modules/winlist/e_mod_main.c:25 src/modules/tiling/e_mod_tiling.c:3812
msgid "Windows"
msgstr "Finestre"
@ -3459,7 +3459,7 @@ msgstr "%li minuti fa"
#: src/bin/e_utils.c:924 src/modules/conf_dialogs/e_int_config_profiles.c:274
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1179
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1179
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1189
#: src/modules/wizard/page_020.c:19 src/modules/wizard/page_020.c:30
msgid "Unknown"
msgstr "Sconosciuto"
@ -3559,19 +3559,19 @@ msgstr ""
#: src/modules/conf_dialogs/e_int_config_profiles.c:133
#: src/modules/conf_shelves/e_int_config_shelf.c:79
#: src/modules/ibar/e_mod_config.c:106
#: src/modules/xkbswitch/e_mod_config.c:255
#: src/modules/xkbswitch/e_mod_config.c:263
msgid "Add"
msgstr "Aggiungi"
#: src/bin/e_widget_config_list.c:80
#: src/modules/conf_applications/e_int_config_apps.c:272
#: src/modules/xkbswitch/e_mod_config.c:243
#: src/modules/xkbswitch/e_mod_config.c:251
msgid "Up"
msgstr "Su"
#: src/bin/e_widget_config_list.c:86
#: src/modules/conf_applications/e_int_config_apps.c:276
#: src/modules/xkbswitch/e_mod_config.c:249
#: src/modules/xkbswitch/e_mod_config.c:257
msgid "Down"
msgstr "Giù"
@ -4524,29 +4524,29 @@ msgstr ""
"diversa."
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1312
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1334
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1366
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1344
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1376
#: src/modules/gadman/e_mod_gadman.c:842
msgid "CTRL"
msgstr "Ctrl"
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1317
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1339
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1371
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1349
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1381
#: src/modules/gadman/e_mod_gadman.c:847
msgid "ALT"
msgstr "Alt"
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1323
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1345
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1377
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1355
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1387
#: src/modules/gadman/e_mod_gadman.c:853
msgid "SHIFT"
msgstr "Maiuscole"
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1329
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1351
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1383
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1361
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1393
#: src/modules/gadman/e_mod_gadman.c:859
msgid "WIN"
msgstr "Windows"
@ -4766,11 +4766,11 @@ msgstr "Combinazioni della tastiera"
msgid "Key Binding Sequence"
msgstr "Sequenza di tastiera"
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1174
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1184
msgid "Binding Key Error"
msgstr "Errore di associazione"
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1175
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1185
#, c-format
msgid ""
"The binding key sequence, that you choose, is already used by <br><hilight>"
@ -4871,7 +4871,7 @@ msgid "Main Menu"
msgstr "Menù principale"
#: src/modules/conf_menus/e_int_config_menus.c:258
#: src/modules/fileman/e_mod_main.c:364
#: src/modules/fileman/e_mod_main.c:366
msgid "Favorites"
msgstr "Preferiti"
@ -4891,7 +4891,7 @@ msgstr "Commenti"
#: src/modules/gadman/e_mod_config.c:162 src/modules/gadman/e_mod_main.c:27
#: src/modules/gadman/e_mod_main.c:77 src/modules/gadman/e_mod_main.c:84
#: src/modules/gadman/e_mod_main.c:109 src/modules/gadman/e_mod_main.c:139
#: src/modules/xkbswitch/e_mod_config.c:289
#: src/modules/xkbswitch/e_mod_config.c:299
msgid "Gadgets"
msgstr "Gadget"
@ -5177,34 +5177,34 @@ msgstr "Estesa"
msgid "Select a Picture..."
msgstr "Selezionare un'immmagine..."
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:696
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:701
msgid "Picture Import Error"
msgstr "Errore importazione immagine"
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:697
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:702
msgid ""
"Enlightenment was unable to import the picture<br>due to conversion errors."
msgstr ""
"Enlightenment non ha potuto importare l'immagine<br>a causa di errori di "
"conversione."
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:784
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:794
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:876
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:886
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:789
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:799
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:881
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:891
msgid "Wallpaper Import Error"
msgstr "Errore importazione sfondo"
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:785
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:877
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:790
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:882
msgid ""
"Enlightenment was unable to import the wallpaper<br>due to a copy error."
msgstr ""
"Enlightenment non ha potuto importare lo sfondo<br>a causa di un errore di "
"copia."
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:795
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:887
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:800
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:892
msgid ""
"Enlightenment was unable to import the wallpaper.<br><br>Are you sure this "
"is a valid wallpaper?"
@ -6951,15 +6951,15 @@ msgstr "Seleziona un'immagine"
msgid "File Manager"
msgstr "File manager"
#: src/modules/fileman/e_mod_main.c:352
#: src/modules/fileman/e_mod_main.c:354
msgid "Home"
msgstr "Home"
#: src/modules/fileman/e_mod_main.c:376
#: src/modules/fileman/e_mod_main.c:378
msgid "Root"
msgstr "Directory principale"
#: src/modules/fileman/e_mod_main.c:474
#: src/modules/fileman/e_mod_main.c:475
msgid ""
"Fileman Module Settings data needed upgrading. Your old configuration<br>has "
"been wiped and a new set of defaults initialized. This<br>will happen "
@ -6979,7 +6979,7 @@ msgstr ""
"nuove funzionalità.<br>Adesso è possibile riconfigurare le cose a proprio "
"piacimento.<br>Ci scusiamo per il disagio.<br>"
#: src/modules/fileman/e_mod_main.c:487
#: src/modules/fileman/e_mod_main.c:488
msgid ""
"Your Fileman Module configuration is NEWER than Fileman Module version. This "
"is very<br>strange. This should not happen unless you downgraded<br>the "
@ -6996,7 +6996,7 @@ msgstr ""
"configurazione è<br>stata ripristinata a scopo precauzionale ai valori "
"predefiniti. Ci<br>scusiamo per l'inconveniente.<br>"
#: src/modules/fileman/e_mod_main.c:557
#: src/modules/fileman/e_mod_main.c:558
msgid "Fileman Settings Updated"
msgstr "Impostazioni di Fileman aggiornate"
@ -8169,9 +8169,9 @@ msgstr "Numero di colonne da usare per desktop (0 → griglia disabilitata)"
msgid "Tiling Configuration"
msgstr "Configurazione di Tiling"
#: src/modules/tiling/e_mod_tiling.c:3783
#: src/modules/tiling/e_mod_tiling.c:3812
#: src/modules/tiling/e_mod_tiling.c:3901
#: src/modules/tiling/e_mod_tiling.c:3785
#: src/modules/tiling/e_mod_tiling.c:3814
#: src/modules/tiling/e_mod_tiling.c:3903
msgid "Tiling"
msgstr "Tiling"
@ -8184,30 +8184,30 @@ msgstr "Commutatore tastiera"
msgid "XKB Switcher Module"
msgstr "Modulo XKBswitcher"
#: src/modules/xkbswitch/e_mod_config.c:269
#: src/modules/xkbswitch/e_mod_config.c:277
msgid "Configurations"
msgstr "Configurazioni"
#: src/modules/xkbswitch/e_mod_config.c:278
#: src/modules/xkbswitch/e_mod_config.c:286
msgid "Models"
msgstr "Modelli"
#: src/modules/xkbswitch/e_mod_config.c:291
#: src/modules/xkbswitch/e_mod_config.c:301
msgid "Label only"
msgstr "Solo etichette"
#: src/modules/xkbswitch/e_mod_config.c:470
#: src/modules/xkbswitch/e_mod_config.c:481
msgid "Add New Configuration"
msgstr "Aggiungi nuova configurazione"
#: src/modules/xkbswitch/e_mod_config.c:480
#: src/modules/xkbswitch/e_mod_config.c:494
msgid "Available"
msgstr "Disponibile"
#: src/modules/xkbswitch/e_mod_config.c:487
#: src/modules/xkbswitch/e_mod_config.c:501
msgid "Model"
msgstr "Modello"
#: src/modules/xkbswitch/e_mod_config.c:494
#: src/modules/xkbswitch/e_mod_config.c:508
msgid "Variant"
msgstr "Variante"

1264
po/ja.po

File diff suppressed because it is too large Load Diff

1226
po/km.po

File diff suppressed because it is too large Load Diff

1265
po/ko.po

File diff suppressed because it is too large Load Diff

1223
po/ku.po

File diff suppressed because it is too large Load Diff

1246
po/lt.po

File diff suppressed because it is too large Load Diff

1245
po/ms.po

File diff suppressed because it is too large Load Diff

1257
po/nb.po

File diff suppressed because it is too large Load Diff

1252
po/nl.po

File diff suppressed because it is too large Load Diff

1261
po/pl.po

File diff suppressed because it is too large Load Diff

1269
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1245
po/ro.po

File diff suppressed because it is too large Load Diff

1258
po/ru.po

File diff suppressed because it is too large Load Diff

1257
po/sk.po

File diff suppressed because it is too large Load Diff

1247
po/sl.po

File diff suppressed because it is too large Load Diff

1260
po/sv.po

File diff suppressed because it is too large Load Diff

1246
po/tr.po

File diff suppressed because it is too large Load Diff

1246
po/uk.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -283,6 +283,7 @@ e_randr_11_serialization.c \
e_randr_12.c \
e_randr_12_output.c \
e_randr_12_crtc.c \
e_randr_12_ask_dialog.c \
e_randr_12_serialization.c \
e_remember.c \
e_resist.c \

@ -191,6 +191,9 @@ EINTERN void e_randr_11_serialized_setup_free(E_Randr_Serialized_Setup_11 *ss_11
EINTERN void e_randr_12_serialized_setup_free(E_Randr_Serialized_Setup_12 *ss_12);
EINTERN void e_randr_12_serialized_output_policy_free(E_Randr_Serialized_Output_Policy *policy);
EINTERN Eina_Bool e_randr_12_try_enable_output(E_Randr_Output_Info *output_info, Ecore_X_Randr_Output_Policy policy, Eina_Bool force);
EINTERN void e_randr_12_ask_dialog_new(E_Randr_Output_Info *oi);
EAPI extern E_Randr_Screen_Info e_randr_screen_info;
#endif

@ -19,7 +19,6 @@ static Eina_Bool _x_poll_cb(void *data __UNUSED__);
static Eina_Bool _crtc_change_event_cb(void *data, int type, void *e);
static Eina_Bool _output_change_event_cb(void *data, int type, void *e);
static Eina_Bool _output_property_change_event_cb(void *data, int type, void *e);
static Eina_Bool _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force);
static Ecore_Poller *poller = NULL;
static Eina_List *_event_handlers = NULL;
@ -443,7 +442,7 @@ _output_change_event_cb(void *data __UNUSED__, int type, void *ev)
//only try to enable the monitor if there is no serialized setup
if(!_12_try_restore_configuration())
{
policy_success = _try_enable_output(output_info, EINA_FALSE); //maybe give a success message?
policy_success = e_randr_12_try_enable_output(output_info, output_info->policy, EINA_FALSE); //maybe give a success message?
fprintf(stderr, "E_RANDR: Policy \"%s\" was enforced %ssuccesfully.\n", _POLICIES_STRINGS[output_info->policy - 1], (policy_success ? "" : "un"));
}
}
@ -573,8 +572,8 @@ _output_property_change_event_cb(void *data __UNUSED__, int type, void *ev)
* - try to share the output of a CRTC with other outputs already using it
* (clone).
*/
static Eina_Bool
_try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
EINTERN Eina_Bool
e_randr_12_try_enable_output(E_Randr_Output_Info *output_info, Ecore_X_Randr_Output_Policy policy, Eina_Bool force)
{
Eina_List *iter, *outputs_list = NULL, *common_modes = NULL;
E_Randr_Crtc_Info *crtc_info = NULL, *usable_crtc = NULL;
@ -607,11 +606,15 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
return EINA_FALSE;
//get the CRTC we will refer to, dependend on policy
switch (output_info->policy)
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_NONE:
return EINA_TRUE;
case ECORE_X_RANDR_OUTPUT_POLICY_ASK:
e_randr_12_ask_dialog_new(output_info);
return EINA_TRUE; //This is a bit incorrect (dialog feedback is async), but probably not worth a lock.
case ECORE_X_RANDR_OUTPUT_POLICY_CLONE:
/*
* Order of approaches to enable a clone (of the primary output):
@ -720,7 +723,7 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
//get the crtc we will place our's relative to. If it's NULL, this is the
//only output attached, work done.
if (!(crtc_rel = _crtc_according_to_policy_get(usable_crtc, output_info->policy)))
if (!(crtc_rel = _crtc_according_to_policy_get(usable_crtc, policy)))
{
fprintf(stderr, "E_RANDR: CRTC %d enabled. No other CRTC had to be moved.\n", usable_crtc->xid);
ret &= ecore_x_randr_crtc_mode_set(e_randr_screen_info.root, usable_crtc->xid, &output_info->xid, 1, mode_info->xid);
@ -728,7 +731,7 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
}
//Calculate new CRTC's position according to policy
switch (output_info->policy)
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_ABOVE:
usable_crtc->geometry.x = crtc_rel->geometry.x;
@ -763,7 +766,7 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
fprintf(stderr, "E_RANDR: Moved CRTC %d has geometry (x,y,wxh): %d, %d, %dx%d.\n", usable_crtc->xid, usable_crtc->geometry.x, usable_crtc->geometry.y, usable_crtc->geometry.w, usable_crtc->geometry.h);
//following is policy dependend.
switch (output_info->policy)
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_ABOVE:
dy = (crtc_rel->geometry.y - usable_crtc->geometry.h);

@ -0,0 +1,82 @@
#include "e.h"
static void _e_randr_ask_cb(void *data, E_Dialog *dia);
static void e_randr_12_memorize_monitor_dialog_new(void);
static void _e_randr_ask_memorize_monitor_cb(void *data, E_Dialog *dia);
static E_Randr_Output_Info *_ask_output_info = NULL;
EINTERN void e_randr_12_ask_dialog_new(E_Randr_Output_Info *oi)
{
E_Dialog *dia = NULL;
if (!oi) return;
dia = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_randr_ask");
if (!dia) return;
_ask_output_info = oi;
e_dialog_title_set(dia, _("Position of New Monitor"));
e_dialog_icon_set(dia, "display", 64);
e_dialog_text_set(dia, _("<b>Where</b> should the newly connected monitor be put?"));
e_dialog_button_add(dia, _("Left"), "stock-left", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_LEFT);
e_dialog_button_add(dia, _("Right"), "stock-right", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_RIGHT);
e_dialog_button_add(dia, _("Above"), "stock-top", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_ABOVE);
e_dialog_button_add(dia, _("Below"), "stock-bottom", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_BELOW);
e_dialog_button_focus_num(dia, 1);
e_win_centered_set(dia->win, 1);
e_dialog_show(dia);
}
static void
_e_randr_ask_cb(void *data __UNUSED__, E_Dialog *dia)
{
Ecore_X_Randr_Output_Policy pos = (Ecore_X_Randr_Output_Policy)data;
Eina_Bool successful = EINA_FALSE;
if (!_ask_output_info)
goto _close_ret;
successful = e_randr_12_try_enable_output(_ask_output_info, pos, EINA_FALSE);
if (successful)
e_randr_12_memorize_monitor_dialog_new();
_ask_output_info = NULL;
_close_ret:
e_object_del(E_OBJECT(dia));
}
static void e_randr_12_memorize_monitor_dialog_new(void)
{
E_Dialog *dia = NULL;
dia = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_randr_ask");
if (!dia) return;
e_dialog_title_set(dia, _("Memorize This Monitor?"));
e_dialog_icon_set(dia, "display", 64);
e_dialog_text_set(dia, _("Should the position of this monitor be <b>memorized</b>?"));
e_dialog_button_add(dia, _("Yes"), "stock-yes", _e_randr_ask_memorize_monitor_cb, (void*)EINA_TRUE);
e_dialog_button_add(dia, _("No"), "stock-no", _e_randr_ask_memorize_monitor_cb, (void*)EINA_FALSE);
e_dialog_button_focus_num(dia, 1);
e_win_centered_set(dia->win, 1);
e_dialog_show(dia);
}
static void
_e_randr_ask_memorize_monitor_cb(void *data, E_Dialog *dia)
{
Eina_Bool memorize = (Eina_Bool)data;
const E_Randr_Configuration_Store_Modifier modifier = (
E_RANDR_CONFIGURATION_STORE_RESOLUTIONS
| E_RANDR_CONFIGURATION_STORE_ARRANGEMENT
| E_RANDR_CONFIGURATION_STORE_ORIENTATIONS);
if (memorize)
e_randr_store_configuration(modifier);
e_object_del(E_OBJECT(dia));
}

@ -31,7 +31,7 @@ struct _E_Config_Dialog_Data
struct {
Evas_Object *widget;
//Evas_Object *swallowing_edje;
Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none;
Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none, *radio_ask;
int radio_val;
//Evas_Object *current_displays_setup, *current_displays_setup_background, *new_display, *new_display_background;
} policy;

@ -24,12 +24,14 @@ static const char *_POLICIES_STRINGS[] = {
"BELOW",
"LEFT",
"CLONE",
"NONE"};
"NONE",
"ASK"};
static void
_policy_widget_radio_add_callbacks(void)
{
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_ask, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_none, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_clone, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_left, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
@ -87,6 +89,9 @@ policy_widget_basic_create_widgets(Evas *canvas)
if (!(rg = e_widget_radio_group_new(&e_config_runtime_info->gui.widgets.policy.radio_val))) goto _policy_widget_radio_add_fail;
//IMPROVABLE: use enum to determine objects via 'switch'-statement
e_config_runtime_info->gui.widgets.policy.radio_ask = e_widget_radio_add(canvas, _("Ask"), ECORE_X_RANDR_OUTPUT_POLICY_ASK, rg);
e_widget_framelist_object_append(widget, e_config_runtime_info->gui.widgets.policy.radio_ask);
e_config_runtime_info->gui.widgets.policy.radio_above = e_widget_radio_add(canvas, _("Above"), ECORE_X_RANDR_OUTPUT_POLICY_ABOVE, rg);
e_widget_framelist_object_append(widget, e_config_runtime_info->gui.widgets.policy.radio_above);
@ -181,6 +186,7 @@ _policy_widget_mouse_up_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Objec
* 1-liner below.
* snprintf(signal, sizeof(signal), "conf,randr,dialog,policies,%d", e_config_runtime_info->gui.widgets.policy.radio_val);
*/
if (obj == e_config_runtime_info->gui.widgets.policy.radio_ask) policy = ECORE_X_RANDR_OUTPUT_POLICY_ASK;
if (obj == e_config_runtime_info->gui.widgets.policy.radio_above) policy = ECORE_X_RANDR_OUTPUT_POLICY_ABOVE;
if (obj == e_config_runtime_info->gui.widgets.policy.radio_right) policy = ECORE_X_RANDR_OUTPUT_POLICY_RIGHT;
if (obj == e_config_runtime_info->gui.widgets.policy.radio_below) policy = ECORE_X_RANDR_OUTPUT_POLICY_BELOW;
@ -254,33 +260,27 @@ void
policy_widget_update_radio_buttons(E_Config_Randr_Dialog_Output_Dialog_Data *odd)
{
Ecore_X_Randr_Output_Policy policy;
Eina_Bool enable = !odd;
//disable widgets, if no rep is selected
if (!odd)
{
//Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none;
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_above, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_right, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_below, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_left, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_clone, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_none, EINA_TRUE);
return;
}
else
{
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_above, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_right, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_below, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_left, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_clone, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_none, EINA_FALSE);
}
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_ask, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_above, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_right, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_below, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_left, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_clone, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_none, enable);
if (!odd) return;
policy = (odd->new_policy != (Ecore_X_Randr_Output_Policy) Ecore_X_Randr_Unset) ? odd->new_policy : odd->previous_policy;
//toggle the switch of the currently used policies
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_ASK:
e_widget_radio_toggle_set(e_config_runtime_info->gui.widgets.policy.radio_ask, EINA_TRUE);
break;
case ECORE_X_RANDR_OUTPUT_POLICY_RIGHT:
e_widget_radio_toggle_set(e_config_runtime_info->gui.widgets.policy.radio_right, EINA_TRUE);
break;

Loading…
Cancel
Save