Blender V4.3
workspace_layout_edit.cc File Reference
#include <cstdlib>
#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "DNA_screen_types.h"
#include "DNA_workspace_types.h"
#include "BKE_context.hh"
#include "BKE_main.hh"
#include "BKE_screen.hh"
#include "BKE_workspace.hh"
#include "WM_api.hh"
#include "ED_screen.hh"
#include "screen_intern.hh"

Go to the source code of this file.

Functions

WorkSpaceLayoutED_workspace_layout_add (Main *bmain, WorkSpace *workspace, wmWindow *win, const char *name)
 
WorkSpaceLayoutED_workspace_layout_duplicate (Main *bmain, WorkSpace *workspace, const WorkSpaceLayout *layout_old, wmWindow *win)
 
static bool workspace_layout_delete_doit (WorkSpace *workspace, WorkSpaceLayout *layout_old, WorkSpaceLayout *layout_new, bContext *C)
 
bool workspace_layout_set_poll (const WorkSpaceLayout *layout)
 
static WorkSpaceLayoutworkspace_layout_delete_find_new (const WorkSpaceLayout *layout_old)
 
bool ED_workspace_layout_delete (WorkSpace *workspace, WorkSpaceLayout *layout_old, bContext *C)
 
static bool workspace_change_find_new_layout_cb (const WorkSpaceLayout *layout, void *)
 
static bScreenscreen_fullscreen_find_associated_normal_screen (const Main *bmain, bScreen *screen)
 
static bool screen_is_used_by_other_window (const wmWindow *win, const bScreen *screen)
 
WorkSpaceLayoutED_workspace_screen_change_ensure_unused_layout (Main *bmain, WorkSpace *workspace, WorkSpaceLayout *layout_new, const WorkSpaceLayout *layout_fallback_base, wmWindow *win)
 
static bool workspace_layout_cycle_iter_cb (const WorkSpaceLayout *layout, void *)
 
bool ED_workspace_layout_cycle (WorkSpace *workspace, const short direction, bContext *C)
 

Function Documentation

◆ ED_workspace_layout_add()

WorkSpaceLayout * ED_workspace_layout_add ( Main * bmain,
WorkSpace * workspace,
wmWindow * win,
const char * name )

Empty screen, with 1 dummy area without space-data. Uses window size.

Definition at line 28 of file workspace_layout_edit.cc.

References BKE_workspace_layout_add(), screen_add(), and WM_window_screen_rect_calc().

Referenced by ED_workspace_layout_duplicate(), screen_state_to_nonnormal(), and WM_window_open().

◆ ED_workspace_layout_cycle()

◆ ED_workspace_layout_delete()

bool ED_workspace_layout_delete ( WorkSpace * workspace,
WorkSpaceLayout * layout_old,
bContext * C )
Warning
Only call outside of area/region loops!
Returns
true if succeeded.

Definition at line 117 of file workspace_layout_edit.cc.

References BKE_screen_is_fullscreen_area(), BKE_workspace_layout_screen_get(), BLI_assert, BLI_findindex(), WorkSpace::layouts, workspace_layout_delete_doit(), and workspace_layout_delete_find_new().

Referenced by wm_event_do_notifiers().

◆ ED_workspace_layout_duplicate()

◆ ED_workspace_screen_change_ensure_unused_layout()

WorkSpaceLayout * ED_workspace_screen_change_ensure_unused_layout ( Main * bmain,
WorkSpace * workspace,
WorkSpaceLayout * layout_new,
const WorkSpaceLayout * layout_fallback_base,
wmWindow * win )

Make sure there is a non-full-screen layout to switch to that isn't used yet by an other window. Needed for workspace or screen switching to ensure valid screens.

Parameters
layout_fallback_baseAs last resort, this layout is duplicated and returned.

Definition at line 167 of file workspace_layout_edit.cc.

References BKE_workspace_layout_find(), BKE_workspace_layout_iter_circular(), BKE_workspace_layout_screen_get(), ED_workspace_layout_duplicate(), screen_fullscreen_find_associated_normal_screen(), screen_is_used_by_other_window(), and workspace_change_find_new_layout_cb().

Referenced by ED_screen_change(), and workspace_change_get_new_layout().

◆ screen_fullscreen_find_associated_normal_screen()

static bScreen * screen_fullscreen_find_associated_normal_screen ( const Main * bmain,
bScreen * screen )
static

◆ screen_is_used_by_other_window()

static bool screen_is_used_by_other_window ( const wmWindow * win,
const bScreen * screen )
static

◆ workspace_change_find_new_layout_cb()

static bool workspace_change_find_new_layout_cb ( const WorkSpaceLayout * layout,
void *  )
static

◆ workspace_layout_cycle_iter_cb()

static bool workspace_layout_cycle_iter_cb ( const WorkSpaceLayout * layout,
void *  )
static

Definition at line 195 of file workspace_layout_edit.cc.

References workspace_layout_set_poll().

Referenced by ED_workspace_layout_cycle().

◆ workspace_layout_delete_doit()

◆ workspace_layout_delete_find_new()

static WorkSpaceLayout * workspace_layout_delete_find_new ( const WorkSpaceLayout * layout_old)
static

◆ workspace_layout_set_poll()