Resolution and frequency saving fix

pull/104/head
parent 83112df809
commit d8dab2b971

@ -752,6 +752,7 @@ void on_monitor_config_save(GtkWidget *, monitor_edit_window *window){
char *target=NULL; char *target=NULL;
int main_display=0; int main_display=0;
char *resolution = NULL; char *resolution = NULL;
const char *frequency = NULL;
char *rotate = NULL; char *rotate = NULL;
char *position = NULL; char *position = NULL;
// int switch_off=0; // int switch_off=0;
@ -763,8 +764,11 @@ void on_monitor_config_save(GtkWidget *, monitor_edit_window *window){
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PortCombo))){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PortCombo))){
target = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->PortCombo)); target = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->PortCombo));
main_display = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->MainCheck)); main_display = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->MainCheck));
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ResolutionCombo))) if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ResolutionCombo))){
resolution = yon_char_divide_search(yon_char_new(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ResolutionCombo)))," ",-1); char *res_str = yon_char_new(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ResolutionCombo)));
frequency = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->FrequencyCombo));
resolution = yon_char_unite(yon_char_divide_search(res_str," ",-1),"x",frequency,NULL);
}
int rot = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationCombo)); int rot = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationCombo));
rotate = yon_char_append("rotate:",rot == 0?"normal":rot==1?"left":rot==2?"right":"invert"); rotate = yon_char_append("rotate:",rot == 0?"normal":rot==1?"left":rot==2?"right":"invert");
int pos = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PositionPosCombo)); int pos = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PositionPosCombo));
@ -816,9 +820,7 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(string,&parsed_size,","); config_str parsed = yon_char_parse(string,&parsed_size,",");
if (parsed_size>0){ if (parsed_size>0){
int resolution = yon_gtk_combo_box_text_find(window->ResolutionCombo,parsed[0]); for (int i=0; i<parsed_size;i++){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->ResolutionCombo),resolution);
for (int i=1; i<parsed_size;i++){
if (!strcmp(parsed[i],"cvt")){ if (!strcmp(parsed[i],"cvt")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ModelineCVTCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ModelineCVTCheck),1);
} else if (!strcmp(parsed[i],"gtf")){ } else if (!strcmp(parsed[i],"gtf")){
@ -881,6 +883,22 @@ void yon_monitor_parse(monitor_edit_window *window, char *string){
} }
} else if (g_ascii_isdigit(parsed[i][0])&&strstr(parsed[i],"x")){
if (yon_char_count(parsed[i],"x")>1){
int pos = yon_char_find_last(parsed[i],'x');
char *res = yon_char_divide(parsed[i],pos);
int resolution = yon_gtk_combo_box_text_find(window->FrequencyCombo,parsed[i]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->FrequencyCombo),resolution==0?-1:resolution);
free(parsed[i]);
parsed[i]=res;
}
int resolution = yon_gtk_combo_box_text_find(window->ResolutionCombo,parsed[i]);
if (resolution == -1){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UnsupportedCheck),1);
while(gtk_events_pending()) gtk_main_iteration();
}
resolution = yon_gtk_combo_box_text_find(window->ResolutionCombo,parsed[i]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->ResolutionCombo),resolution==0?-1:resolution);
} }
} }
} }

Loading…
Cancel
Save