UNIXworkcode

1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3 * 4 * Copyright 2025 Olaf Wintermann. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #include "container.h" 30 #include "object.h" 31 32 void ui_end_new(UiObject *obj) { 33 if(!obj->container_end) { 34 return; 35 } 36 UiContainerX *rm = obj->container_end; 37 uic_object_pop_container(obj); 38 ui_free(obj->ctx, rm); 39 } 40 41 void ui_newline(UiObject *obj) { 42 UiContainerX *container = obj->container_end; 43 if(container) { 44 container->newline = TRUE; 45 } 46 } 47 48 void uic_layout_setup_expand_fill( 49 UiLayout *layout, 50 UiBool def_hexpand, 51 UiBool def_vexpand, 52 UiBool def_hfill, 53 UiBool def_vfill) 54 { 55 if(layout->fill) { 56 layout->hfill = TRUE; 57 layout->vfill = TRUE; 58 layout->hexpand = TRUE; 59 layout->vexpand = TRUE; 60 return; 61 } 62 63 if(!layout->override_defaults) { 64 if(def_hexpand) { 65 layout->hexpand = TRUE; 66 } 67 if(def_hfill) { 68 layout->hfill = TRUE; 69 } 70 if(def_vexpand) { 71 layout->vexpand = TRUE; 72 } 73 if(def_vfill) { 74 layout->vfill = TRUE; 75 } 76 } 77 } 78 79 void uic_layout_setup_margin(UiLayout *layout) { 80 int margin = layout->margin; 81 if(margin > 0) { 82 layout->margin_left = margin; 83 layout->margin_right = margin; 84 layout->margin_top = margin; 85 layout->margin_bottom = margin; 86 } 87 } 88