Index: screen_ops.c =================================================================== --- screen_ops.c (revision 51092) +++ screen_ops.c (working copy) @@ -2856,7 +2856,43 @@ /* api callbacks */ ot->exec = header_flip_exec; + ot->poll = ED_operator_areaactive; + ot->flag = 0; +} + +/* ************** toggle header operator ***************************** */ + +/* toggle a header region display */ +static int screen_header(bContext *C, wmOperator *UNUSED(op)) +{ + ARegion *ar = CTX_wm_region(C); + /* find the header region + * - try context first, but upon failing, search all regions in area... + */ + if ((ar == NULL) || (ar->regiontype != RGN_TYPE_HEADER)) { + ScrArea *sa = CTX_wm_area(C); + ar = BKE_area_find_region_type(sa, RGN_TYPE_HEADER); + + /* don't do anything if no region */ + if (ar == NULL) + return OPERATOR_CANCELLED; + } + + ED_region_toggle_hidden(C, ar); + + WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); + + return OPERATOR_FINISHED; +} + +void SCREEN_OT_header(wmOperatorType *ot) +{ + ot->name = "Toggle Header"; + ot->description = "Toggles the header panel display"; + ot->idname = "SCREEN_OT_header"; + + ot->exec = screen_header; ot->poll = ED_operator_areaactive; ot->flag = 0; } @@ -2873,6 +2909,8 @@ else uiItemO(layout, IFACE_("Flip to Top"), ICON_NONE, "SCREEN_OT_header_flip"); + uiItemO(layout, IFACE_("Minimize"), ICON_NONE, "SCREEN_OT_header"); + uiItemS(layout); /* file browser should be fullscreen all the time, but other regions can be maximized/restored... */ @@ -3536,6 +3613,7 @@ 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_flip); WM_operatortype_append(SCREEN_OT_header_toolbox); WM_operatortype_append(SCREEN_OT_screen_set);