Cleanup: split keymap lookups into own functions

More will be added in 2.8, keep this manageable.
This commit is contained in:
2018-07-13 10:26:24 +02:00
parent 8c957468bc
commit 252ebf6bfd

View File

@@ -942,7 +942,6 @@ static void ui_menu_block_set_keyaccels(uiBlock *block)
* but this could be supported */ * but this could be supported */
void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, const bool do_strip) void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, const bool do_strip)
{ {
if (do_strip && (but->flag & UI_BUT_HAS_SEP_CHAR)) { if (do_strip && (but->flag & UI_BUT_HAS_SEP_CHAR)) {
char *cpoin = strrchr(but->str, UI_SEP_CHAR); char *cpoin = strrchr(but->str, UI_SEP_CHAR);
if (cpoin) { if (cpoin) {
@@ -973,14 +972,19 @@ void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, const bool do_str
} }
} }
static bool ui_but_event_operator_string( /* -------------------------------------------------------------------- */
/** \name Find Key Shortcut for Button
*
* - #ui_but_event_operator_string (and helpers)
* - #ui_but_event_property_operator_string
* \{ */
static bool ui_but_event_operator_string_from_operator(
const bContext *C, uiBut *but, const bContext *C, uiBut *but,
char *buf, const size_t buf_len) char *buf, const size_t buf_len)
{ {
MenuType *mt; BLI_assert(but->optype != NULL);
bool found = false; bool found = false;
if (but->optype) {
IDProperty *prop = (but->opptr) ? but->opptr->data : NULL; IDProperty *prop = (but->opptr) ? but->opptr->data : NULL;
if (WM_key_event_operator_string( if (WM_key_event_operator_string(
@@ -989,10 +993,18 @@ static bool ui_but_event_operator_string(
{ {
found = true; found = true;
} }
} return found;
else if ((mt = UI_but_menutype_get(but))) { }
IDProperty *prop_menu;
IDProperty *prop_menu_name; static bool ui_but_event_operator_string_from_menu(
const bContext *C, uiBut *but,
char *buf, const size_t buf_len)
{
MenuType *mt = UI_but_menutype_get(but);
BLI_assert(mt != NULL);
bool found = false;
IDProperty *prop_menu, *prop_menu_name;
/* annoying, create a property */ /* annoying, create a property */
IDPropertyTemplate val = {0}; IDPropertyTemplate val = {0};
@@ -1010,6 +1022,20 @@ static bool ui_but_event_operator_string(
IDP_FreeProperty(prop_menu); IDP_FreeProperty(prop_menu);
MEM_freeN(prop_menu); MEM_freeN(prop_menu);
return found;
}
static bool ui_but_event_operator_string(
const bContext *C, uiBut *but,
char *buf, const size_t buf_len)
{
bool found = false;
if (but->optype != NULL) {
found = ui_but_event_operator_string_from_operator(C, but, buf, buf_len);
}
else if (UI_but_menutype_get(but) != NULL) {
found = ui_but_event_operator_string_from_menu(C, but, buf, buf_len);
} }
return found; return found;
@@ -1131,6 +1157,8 @@ static bool ui_but_event_property_operator_string(
return found; return found;
} }
/** \} */
/** /**
* This goes in a seemingly weird pattern: * This goes in a seemingly weird pattern:
* *