UI: replace toggle header with a property
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user