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:
authorSeverin <eiseljulian@gmail.com>2019-01-04 23:40:16 +0300
committerJulian Eisel <eiseljulian@gmail.com>2019-01-05 00:18:23 +0300
commita77b63c56943ebd0046f738e6abbea4c85dc65b6 (patch)
tree173dddb28838298d2319f4f062586ba8985728c1 /source/blender/editors/screen/area.c
parent4b486eaec9763108fd471b7705133c45116df966 (diff)
UI: Preferences Redesign Part 2
(Part 1 was 00963afc14978b) Does the following changes visible to users: * Use panels and sub-panels for more structured & logical grouping * Re-organized options more logically than before (see images in D4148) * Use flow layout (single column by default). * New layout uses horizontal margin if there's enough space. * Change size of Preferences window to suit new layout. * Move keymap related options from "Input" into own section. * Own, left-bottom aligned region for Save Preferences button. * Adjustments of names, tooltips & icons. * Move buttons from header into the main region (except editor switch). * Hide Preferences header when opened in temporary window. * Use full area width for header. * Don't use slider but regular number widget for UI scale. * Gray out animation player path option if player isn't "Custom" Internal changes: * Rearrange RNA properties to match changed UI structure. * Introduces new "EXECUTE" region type, see reasoning in D3982. * Changes to panel layout and AZone code for dynamic panel region. * Bumps subversion and does versioning for new regions. RNA changes are documented in the release notes: https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Preferences_API Design & implementation mostly done by @billreynish and myself. I recommend checking out the screenshots posted by William: https://developer.blender.org/D4148#93787 Reviewed By: brecht Maniphest Tasks: T54115 Differential Revision: https://developer.blender.org/D4148
Diffstat (limited to 'source/blender/editors/screen/area.c')
-rw-r--r--source/blender/editors/screen/area.c70
1 files changed, 14 insertions, 56 deletions
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 47c44468bc7..34a20c8ccf7 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -187,52 +187,6 @@ void ED_area_do_refresh(bContext *C, ScrArea *sa)
}
/**
- * Action zones are only updated if the mouse is inside of them, but in some cases (currently only fullscreen icon)
- * it might be needed to update their properties and redraw if the mouse isn't inside.
- */
-void ED_area_azones_update(ScrArea *sa, const int mouse_xy[2])
-{
- AZone *az;
- bool changed = false;
-
- for (az = sa->actionzones.first; az; az = az->next) {
- if (az->type == AZONE_FULLSCREEN) {
- /* only if mouse is not hovering the azone */
- if (BLI_rcti_isect_pt_v(&az->rect, mouse_xy) == false) {
- az->alpha = 0.0f;
- changed = true;
-
- /* can break since currently only this is handled here */
- break;
- }
- }
- else if (az->type == AZONE_REGION_SCROLL) {
- /* only if mouse is not hovering the azone */
- if (BLI_rcti_isect_pt_v(&az->rect, mouse_xy) == false) {
- View2D *v2d = &az->ar->v2d;
-
- if (az->direction == AZ_SCROLL_VERT) {
- az->alpha = v2d->alpha_vert = 0;
- changed = true;
- }
- else if (az->direction == AZ_SCROLL_HOR) {
- az->alpha = v2d->alpha_hor = 0;
- changed = true;
- }
- else {
- BLI_assert(0);
- }
- }
- }
- }
-
- if (changed) {
- sa->flag &= ~AREA_FLAG_ACTIONZONES_UPDATE;
- ED_area_tag_redraw_no_rebuild(sa);
- }
-}
-
-/**
* \brief Corner widget use for quitting fullscreen.
*/
static void area_draw_azone_fullscreen(short x1, short y1, short x2, short y2, float alpha)
@@ -412,18 +366,11 @@ static void region_draw_azones(ScrArea *sa, ARegion *ar)
}
else if (az->type == AZONE_FULLSCREEN) {
area_draw_azone_fullscreen(az->x1, az->y1, az->x2, az->y2, az->alpha);
-
- if (az->alpha != 0.0f) {
- area_azone_tag_update(sa);
- }
- }
- else if (az->type == AZONE_REGION_SCROLL) {
- if (az->alpha != 0.0f) {
- area_azone_tag_update(sa);
- }
- /* Don't draw this azone. */
}
}
+ if (!IS_EQF(az->alpha, 0.0f) && ELEM(az->type, AZONE_FULLSCREEN, AZONE_REGION_SCROLL)) {
+ area_azone_tag_update(sa);
+ }
}
GPU_matrix_pop();
@@ -1605,6 +1552,7 @@ void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *ar
if (!(area->flag & AREA_FLAG_REGION_SIZE_UPDATE)) {
return;
}
+ const bScreen *screen = WM_window_get_active_screen(win);
WM_window_rect_calc(win, &window_rect);
area_calc_totrct(area, &window_rect);
@@ -1614,6 +1562,9 @@ void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *ar
overlap_rect = rect;
region_rect_recursive(area, area->regionbase.first, &rect, &overlap_rect, 0);
+ /* Dynamically sized regions may have changed region sizes, so we have to force azone update. */
+ area_azone_initialize(win, screen, area);
+
for (ARegion *ar = area->regionbase.first; ar; ar = ar->next) {
region_subwindow(ar);
@@ -1621,7 +1572,11 @@ void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *ar
if (ar->type->init) {
ar->type->init(wm, ar);
}
+
+ /* Some AZones use View2D data which is only updated in region init, so call that first! */
+ region_azones_add(screen, area, ar, ar->alignment & ~RGN_SPLIT_PREV);
}
+ ED_area_azones_update(area, &win->eventstate->x);
area->flag &= ~AREA_FLAG_REGION_SIZE_UPDATE;
}
@@ -2386,6 +2341,9 @@ void ED_region_panels_draw(const bContext *C, ARegion *ar)
/* set the view */
UI_view2d_view_ortho(v2d);
+ /* View2D matrix might have changed due to dynamic sized regions. */
+ UI_blocklist_update_window_matrix(C, &ar->uiblocks);
+
/* draw panels */
UI_panels_draw(C, ar);