new methods is_maximize and toggle_maximize

master
Alexey Gulev 2017-05-11 23:31:34 +03:00
parent c9ee8af20c
commit 3d3a3521df
4 changed files with 49 additions and 5 deletions

View File

@ -50,12 +50,24 @@ static int toggle_fullscreen(lua_State* L) {
return 0;
}
static int isFullScreen(lua_State* L) {
bool isFullScreen = defos_isFullScreen();
static int is_fullscreen(lua_State* L) {
bool isFullScreen = defos_is_fullscreen();
lua_pushboolean(L, isFullScreen);
return 1;
}
static int toggle_maximize(lua_State* L) {
defos_toggle_maximize();
return 0;
}
static int is_maximize(lua_State* L) {
bool isMaximize = defos_is_maximize();
lua_pushboolean(L, isMaximize);
return 1;
}
static const luaL_reg Module_methods[] =
{
{"disable_maximize_button", disable_maximize_button},
@ -66,7 +78,9 @@ static const luaL_reg Module_methods[] =
{"set_window_size", set_window_size},
{"set_window_title", set_window_title},
{"toggle_fullscreen", toggle_fullscreen},
{"is_fullscreen", isFullScreen},
{"is_fullscreen", is_fullscreen},
{"toggle_maximize", toggle_maximize},
{"is_maximize", is_maximize},
{0, 0}
};

View File

@ -7,6 +7,9 @@
NSWindow* window;
bool is_maximize = false;
CGRect previous_state;
void init_window(){
if (window == NULL) {
window = dmGraphics::GetNativeOSXNSWindow();
@ -37,17 +40,40 @@ void defos_enable_mouse_cursor() {
}
void defos_toggle_fullscreen() {
if (is_maximize){
defos_toggle_maximize();
}
init_window();
[window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
[window toggleFullScreen:window];
}
bool defos_isFullScreen() {
void defos_toggle_maximize() {
if (defos_is_fullscreen()){
defos_toggle_fullscreen();
}
if (is_maximize){
is_maximize = false;
[window setFrame:previous_state display:YES];
}
else
{
is_maximize = true;
previous_state = [window frame];
[window setFrame:[[NSScreen mainScreen] visibleFrame] display:YES];
}
}
bool defos_is_fullscreen() {
init_window();
BOOL fullscreen = (([window styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask);
return fullscreen == YES;
}
bool defos_is_maximize() {
return is_maximize;
}
void defos_set_window_size(lua_State* L) {
init_window();
int x = luaL_checkint(L, 1);

View File

@ -8,10 +8,12 @@ extern void defos_disable_window_resize();
extern void defos_disable_mouse_cursor();
extern void defos_enable_mouse_cursor();
extern void defos_toggle_fullscreen();
extern void defos_toggle_maximize();
extern void defos_set_window_size(lua_State* L);
extern void defos_set_window_title(lua_State* L);
extern bool defos_isFullScreen();
extern bool defos_is_fullscreen();
extern bool defos_is_maximize();
void init_window();

View File

@ -8,6 +8,8 @@ function init(self)
defos.enable_mouse_cursor()
defos.set_window_size(-1,-1,800,600)
defos.set_window_title("I set this title using Defos")
defos.toggle_maximize()
print(defos.is_maximize())
defos.toggle_fullscreen()
print(defos.is_fullscreen())