UI: replace toggle header with a property

This commit is contained in:
2019-04-18 16:35:11 +02:00
parent 9954cce59f
commit cfed33f738
2 changed files with 53 additions and 66 deletions

View File

@@ -3746,40 +3746,6 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot)
/** \} */
/* -------------------------------------------------------------------- */
/** \name Header Toggle Operator
* \{ */
static int header_exec(bContext *C, wmOperator *UNUSED(op))
{
ARegion *ar = screen_find_region_type(C, RGN_TYPE_HEADER);
if (ar == NULL) {
return OPERATOR_CANCELLED;
}
ar->flag ^= RGN_FLAG_HIDDEN;
ED_area_tag_redraw(CTX_wm_area(C));
WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL);
return OPERATOR_FINISHED;
}
static void SCREEN_OT_header(wmOperatorType *ot)
{
/* identifiers */
ot->name = "Toggle Header";
ot->description = "Toggle header display";
ot->idname = "SCREEN_OT_header";
/* api callbacks */
ot->exec = header_exec;
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Header Toggle Menu Operator
* \{ */
@@ -3830,7 +3796,9 @@ void ED_screens_header_tools_menu_create(bContext *C, uiLayout *layout, void *UN
IFACE_("Flip to Top");
if (!ELEM(sa->spacetype, SPACE_TOPBAR)) {
uiItemO(layout, IFACE_("Toggle Header"), ICON_NONE, "SCREEN_OT_header");
PointerRNA ptr;
RNA_pointer_create((ID *)CTX_wm_screen(C), &RNA_Space, sa->spacedata.first, &ptr);
uiItemR(layout, &ptr, "show_region_header", 0, IFACE_("Show Header"), ICON_NONE);
}
/* default is WM_OP_INVOKE_REGION_WIN, which we don't want here. */
@@ -5110,7 +5078,6 @@ void ED_operatortypes_screen(void)
WM_operatortype_append(SCREEN_OT_region_quadview);
WM_operatortype_append(SCREEN_OT_region_scale);
WM_operatortype_append(SCREEN_OT_region_flip);
WM_operatortype_append(SCREEN_OT_header);
WM_operatortype_append(SCREEN_OT_header_toggle_menus);
WM_operatortype_append(SCREEN_OT_header_context_menu);
WM_operatortype_append(SCREEN_OT_footer);

View File

@@ -614,6 +614,20 @@ static void rna_Space_bool_from_region_flag_update_by_type(bContext *C,
/** \name Region Flag Access (Typed Callbacks)
* \{ */
/* Header Region. */
static bool rna_Space_show_region_header_get(PointerRNA *ptr)
{
return !rna_Space_bool_from_region_flag_get_by_type(ptr, RGN_TYPE_HEADER, RGN_FLAG_HIDDEN);
}
static void rna_Space_show_region_header_set(PointerRNA *ptr, bool value)
{
rna_Space_bool_from_region_flag_set_by_type(ptr, RGN_TYPE_HEADER, RGN_FLAG_HIDDEN, !value);
}
static void rna_Space_show_region_header_update(bContext *C, PointerRNA *ptr)
{
rna_Space_bool_from_region_flag_update_by_type(C, ptr, RGN_TYPE_HEADER, RGN_FLAG_HIDDEN);
}
/* Tools Region. */
static bool rna_Space_show_region_toolbar_get(PointerRNA *ptr)
{
@@ -2392,6 +2406,41 @@ static const EnumPropertyItem dt_uv_items[] = {
{0, NULL, 0, NULL, NULL},
};
static void rna_def_space_generic_show_region_toggles(StructRNA *srna, int region_type_mask)
{
PropertyRNA *prop;
# define DEF_SHOW_REGION_PROPERTY(identifier, label, description) \
{ \
prop = RNA_def_property(srna, STRINGIFY(identifier), PROP_BOOLEAN, PROP_NONE); \
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); \
RNA_def_property_boolean_funcs(prop, \
STRINGIFY(rna_Space_##identifier##_get), \
STRINGIFY(rna_Space_##identifier##_set)); \
RNA_def_property_ui_text(prop, label, description); \
RNA_def_property_update(prop, 0, STRINGIFY(rna_Space_##identifier##_update)); \
} \
((void)0)
if (region_type_mask & (1 << RGN_TYPE_HEADER)) {
region_type_mask &= ~(1 << RGN_TYPE_HEADER);
DEF_SHOW_REGION_PROPERTY(show_region_header, "Header", "");
}
if (region_type_mask & (1 << RGN_TYPE_TOOLS)) {
region_type_mask &= ~(1 << RGN_TYPE_TOOLS);
DEF_SHOW_REGION_PROPERTY(show_region_toolbar, "Toolbar", "");
}
if (region_type_mask & (1 << RGN_TYPE_UI)) {
region_type_mask &= ~(1 << RGN_TYPE_UI);
DEF_SHOW_REGION_PROPERTY(show_region_ui, "Sidebar", "");
}
if (region_type_mask & (1 << RGN_TYPE_HUD)) {
region_type_mask &= ~(1 << RGN_TYPE_HUD);
DEF_SHOW_REGION_PROPERTY(show_region_hud, "Adjust Last Operation", "");
}
BLI_assert(region_type_mask == 0);
}
static void rna_def_space(BlenderRNA *brna)
{
StructRNA *srna;
@@ -2414,37 +2463,8 @@ static void rna_def_space(BlenderRNA *brna)
RNA_def_property_boolean_funcs(prop, "rna_Space_view2d_sync_get", "rna_Space_view2d_sync_set");
RNA_def_property_ui_text(prop, "Lock Time to Other Windows", "");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, "rna_Space_view2d_sync_update");
}
static void rna_def_space_generic_show_region_toggles(StructRNA *srna, int region_type_mask)
{
PropertyRNA *prop;
# define DEF_SHOW_REGION_PROPERTY(identifier, label, description) \
{ \
prop = RNA_def_property(srna, STRINGIFY(identifier), PROP_BOOLEAN, PROP_NONE); \
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); \
RNA_def_property_boolean_funcs(prop, \
STRINGIFY(rna_Space_##identifier##_get), \
STRINGIFY(rna_Space_##identifier##_set)); \
RNA_def_property_ui_text(prop, label, description); \
RNA_def_property_update(prop, 0, STRINGIFY(rna_Space_##identifier##_update)); \
} \
((void)0)
if (region_type_mask & (1 << RGN_TYPE_TOOLS)) {
region_type_mask &= ~(1 << RGN_TYPE_TOOLS);
DEF_SHOW_REGION_PROPERTY(show_region_toolbar, "Toolbar", "");
}
if (region_type_mask & (1 << RGN_TYPE_UI)) {
region_type_mask &= ~(1 << RGN_TYPE_UI);
DEF_SHOW_REGION_PROPERTY(show_region_ui, "Sidebar", "");
}
if (region_type_mask & (1 << RGN_TYPE_HUD)) {
region_type_mask &= ~(1 << RGN_TYPE_HUD);
DEF_SHOW_REGION_PROPERTY(show_region_hud, "Adjust Last Operation", "");
}
BLI_assert(region_type_mask == 0);
rna_def_space_generic_show_region_toggles(srna, (1 << RGN_TYPE_HEADER));
}
/* for all spaces that use a mask */