Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Dinges <blender@dingto.org>2012-05-28 04:02:24 +0400
committerThomas Dinges <blender@dingto.org>2012-05-28 04:02:24 +0400
commit492d7ace57fbb405a4881ebce01d2f0358fe2e64 (patch)
treecf92a14b3d6ccb03366f7175f91d9446d5879500 /source/blender/editors/interface/interface_panel.c
parent46f1671c07a93ebd18574e0f6378e93a7c90227f (diff)
User Interface Panels:
* Add a solo mode for panels, CTRL+LMB on a panel header. This closes all other panels. Patch [#22233] by sneg negr (sneg) with modifications by myself to exclude panels with hidden header (like context)
Diffstat (limited to 'source/blender/editors/interface/interface_panel.c')
-rw-r--r--source/blender/editors/interface/interface_panel.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index e2dbb06fa2f..92d92359814 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -164,6 +164,18 @@ static int panels_re_align(ScrArea *sa, ARegion *ar, Panel **r_pa)
/****************************** panels ******************************/
+static void panels_collapse_all(ScrArea *sa, ARegion *ar)
+{
+ Panel *pa;
+ int align = panel_aligned(sa, ar);
+
+ for (pa= ar->panels.first; pa; pa= pa->next) {
+ if (pa->type && !(pa->type->flag & PNL_NO_HEADER))
+ pa->flag = (align==BUT_HORIZONTAL)? PNL_CLOSEDX: PNL_CLOSEDY;
+ }
+}
+
+
static void ui_panel_copy_offset(Panel *pa, Panel *papar)
{
/* with respect to sizes... papar is parent */
@@ -1074,6 +1086,7 @@ static void ui_handle_panel_header(const bContext *C, uiBlock *block, int mx, in
int ui_handler_panel_region(bContext *C, wmEvent *event)
{
+ ScrArea *sa = CTX_wm_area(C);
ARegion *ar = CTX_wm_region(C);
uiBlock *block;
Panel *pa;
@@ -1141,6 +1154,8 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
}
else if (event->type == LEFTMOUSE) {
if (inside_header) {
+ if (event->ctrl)
+ panels_collapse_all(sa, ar);
ui_handle_panel_header(C, block, mx, my, 0);
break;
}