layout: Position keys closer to the left edge
This commit is contained in:
		@ -1,6 +1,6 @@
 | 
				
			|||||||
<?xml version="1.0"?>
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
<geometry version="0.90">
 | 
					<geometry version="0.90">
 | 
				
			||||||
  <bounds x="0.000000" y="0.000000" width="640.0000" height="296.5853"/>
 | 
					  <bounds x="0.000000" y="0.000000" width="410.0000" height="296.5853"/>
 | 
				
			||||||
  <section angle="0">
 | 
					  <section angle="0">
 | 
				
			||||||
    <bounds x="0" y="0" width="608.7804" height="201.3658"/>
 | 
					    <bounds x="0" y="0" width="608.7804" height="201.3658"/>
 | 
				
			||||||
    <row orientation="1">
 | 
					    <row orientation="1">
 | 
				
			||||||
 | 
				
			|||||||
@ -362,9 +362,6 @@ geometry_start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
            eek_element_set_bounds (EEK_ELEMENT(data->keyboard), &bounds);
 | 
					            eek_element_set_bounds (EEK_ELEMENT(data->keyboard), &bounds);
 | 
				
			||||||
        else if (g_strcmp0 (data->element_stack->data, "section") == 0)
 | 
					        else if (g_strcmp0 (data->element_stack->data, "section") == 0)
 | 
				
			||||||
            eek_element_set_bounds (EEK_ELEMENT(data->section), &bounds);
 | 
					            eek_element_set_bounds (EEK_ELEMENT(data->section), &bounds);
 | 
				
			||||||
        else if (g_strcmp0 (data->element_stack->data, "key") == 0)
 | 
					 | 
				
			||||||
            eek_element_set_bounds (EEK_ELEMENT(data->key), &bounds);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1137,6 +1134,7 @@ eek_xml_keyboard_desc_free (EekXmlKeyboardDesc *desc)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct place_data {
 | 
					struct place_data {
 | 
				
			||||||
 | 
					    double desired_width;
 | 
				
			||||||
    double current_offset;
 | 
					    double current_offset;
 | 
				
			||||||
    EekKeyboard *keyboard;
 | 
					    EekKeyboard *keyboard;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -1144,12 +1142,16 @@ struct place_data {
 | 
				
			|||||||
const double section_spacing = 7.0;
 | 
					const double section_spacing = 7.0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void section_placer(EekElement *element, gpointer user_data) {
 | 
					static void section_placer(EekElement *element, gpointer user_data) {
 | 
				
			||||||
    struct place_data *data = user_data;
 | 
					    struct place_data *data = (struct place_data*)user_data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EekBounds section_bounds = {0};
 | 
				
			||||||
 | 
					    eek_element_get_bounds(element, §ion_bounds);
 | 
				
			||||||
 | 
					    section_bounds.width = data->desired_width;
 | 
				
			||||||
 | 
					    eek_element_set_bounds(element, §ion_bounds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Sections are rows now. Gather up all the keys and adjust their bounds.
 | 
					    // Sections are rows now. Gather up all the keys and adjust their bounds.
 | 
				
			||||||
    eek_section_place_keys(EEK_SECTION(element), EEK_KEYBOARD(data->keyboard));
 | 
					    eek_section_place_keys(EEK_SECTION(element), EEK_KEYBOARD(data->keyboard));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EekBounds section_bounds = {0};
 | 
					 | 
				
			||||||
    eek_element_get_bounds(element, §ion_bounds);
 | 
					    eek_element_get_bounds(element, §ion_bounds);
 | 
				
			||||||
    section_bounds.y = data->current_offset;
 | 
					    section_bounds.y = data->current_offset;
 | 
				
			||||||
    eek_element_set_bounds(element, §ion_bounds);
 | 
					    eek_element_set_bounds(element, §ion_bounds);
 | 
				
			||||||
@ -1218,7 +1220,14 @@ parse_geometry (const gchar *path, EekKeyboard *keyboard, GError **error)
 | 
				
			|||||||
    /* Order rows */
 | 
					    /* Order rows */
 | 
				
			||||||
    // This needs to be done after outlines, because outlines define key sizes
 | 
					    // This needs to be done after outlines, because outlines define key sizes
 | 
				
			||||||
    // TODO: do this only for rows without bounds
 | 
					    // TODO: do this only for rows without bounds
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // The keyboard width is given by the user via screen size. The height will be given dynamically.
 | 
				
			||||||
 | 
					    // TODO: calculate max line width beforehand for button centering. Leave keyboard centering to the renderer later
 | 
				
			||||||
 | 
					    EekBounds keyboard_bounds = {0};
 | 
				
			||||||
 | 
					    eek_element_get_bounds(EEK_ELEMENT(keyboard), &keyboard_bounds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    struct place_data placer_data = {
 | 
					    struct place_data placer_data = {
 | 
				
			||||||
 | 
					        .desired_width = keyboard_bounds.width,
 | 
				
			||||||
        .current_offset = 0,
 | 
					        .current_offset = 0,
 | 
				
			||||||
        .keyboard = keyboard,
 | 
					        .keyboard = keyboard,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -1226,8 +1235,6 @@ parse_geometry (const gchar *path, EekKeyboard *keyboard, GError **error)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    double total_height = 0;
 | 
					    double total_height = 0;
 | 
				
			||||||
    eek_container_foreach_child(EEK_CONTAINER(keyboard), section_counter, &total_height);
 | 
					    eek_container_foreach_child(EEK_CONTAINER(keyboard), section_counter, &total_height);
 | 
				
			||||||
    EekBounds keyboard_bounds = {0};
 | 
					 | 
				
			||||||
    eek_element_get_bounds(EEK_ELEMENT(keyboard), &keyboard_bounds);
 | 
					 | 
				
			||||||
    keyboard_bounds.height = total_height;
 | 
					    keyboard_bounds.height = total_height;
 | 
				
			||||||
    eek_element_set_bounds(EEK_ELEMENT(keyboard), &keyboard_bounds);
 | 
					    eek_element_set_bounds(EEK_ELEMENT(keyboard), &keyboard_bounds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user