api: refactor FloatAnchor usage

This commit is contained in:
Marco Hinz 2019-03-13 20:09:00 +01:00
parent cfed9a4123
commit 98391cd6ab
No known key found for this signature in database
GPG Key ID: 1C980A1B657B4A4F
3 changed files with 24 additions and 27 deletions

View File

@ -958,15 +958,18 @@ struct matchitem {
int conceal_char; ///< cchar for Conceal highlighting
};
typedef enum {
typedef int FloatAnchor;
enum {
kFloatAnchorEast = 1,
kFloatAnchorSouth = 2,
};
kFloatAnchorNW = 0,
kFloatAnchorNE = 1,
kFloatAnchorSW = 2,
kFloatAnchorSE = 3,
} FloatAnchor;
// NW -> 0
// NE -> kFloatAnchorEast
// SW -> kFloatAnchorSouth
// SE -> kFloatAnchorSouth | kFloatAnchorEast
EXTERN const char *const float_anchor_str[] INIT(= { "NW", "NE", "SW", "SE" });
typedef enum {
kFloatRelativeEditor = 0,

View File

@ -614,12 +614,6 @@ static void ui_ext_win_position(win_T *wp)
wp->w_wincol, wp->w_width, wp->w_height);
return;
}
const char *const anchor_str[] = {
"NW",
"NE",
"SW",
"SE"
};
FloatConfig c = wp->w_float_config;
if (!c.external) {
@ -635,7 +629,7 @@ static void ui_ext_win_position(win_T *wp)
api_clear_error(&dummy);
}
if (ui_has(kUIMultigrid)) {
String anchor = cstr_to_string(anchor_str[c.anchor]);
String anchor = cstr_to_string(float_anchor_str[c.anchor]);
ui_call_win_float_pos(wp->w_grid.handle, wp->handle, anchor, grid->handle,
row, col, c.focusable);
} else {
@ -672,14 +666,14 @@ static bool parse_float_anchor(String anchor, FloatAnchor *out)
*out = (FloatAnchor)0;
}
char *str = anchor.data;
if (!STRICMP(str, "NW")) {
*out = kFloatAnchorNW;
} else if (!STRICMP(str, "NE")) {
*out = kFloatAnchorNE;
} else if (!STRICMP(str, "SW")) {
*out = kFloatAnchorSW;
} else if (!STRICMP(str, "SE")) {
*out = kFloatAnchorSE;
if (striequal(str, "NW")) {
*out = 0; // NW is the default
} else if (striequal(str, "NE")) {
*out = kFloatAnchorEast;
} else if (striequal(str, "SW")) {
*out = kFloatAnchorSouth;
} else if (striequal(str, "SE")) {
*out = kFloatAnchorSouth | kFloatAnchorEast;
} else {
return false;
}