+ unsigned int btn_width_ok = strlen(btn_txt_ok);
+ unsigned int btn_width_cancel = strlen(btn_txt_cancel);
+
+ // Maybe make the box wider to fix both buttons inside
+ unsigned int min_width = btn_width_ok + btn_width_cancel + 5;
+ if (width < min_width)
+ width = min_width;
+
+ unsigned int btn_pos_ok = (width / 3) - (btn_width_ok / 2) - 1;
+ unsigned int btn_pos_cancel = (width * 2 / 3) - (btn_width_cancel / 2) - 1;
+
+ // Move buttons a bit if they overlap
+ while ((btn_pos_ok + btn_width_ok + 5) > btn_pos_cancel) {
+ // Move the cancel button to the right if there is enough space left
+ if ((btn_pos_cancel + btn_width_cancel + 2) < width) {
+ ++btn_pos_cancel;
+ continue;
+ }
+
+ // Move the OK button to the left if possible
+ if (btn_pos_ok > 1) {
+ --btn_pos_ok;
+ continue;
+ }
+
+ // If they still overlap, we cannot fix the situtation
+ // and break. Should actually never get here, because we
+ // adjust the width of the window earlier.
+ break;
+ }
+