diff --git a/README.md b/README.md index 8523cbf..f9daa77 100644 --- a/README.md +++ b/README.md @@ -169,8 +169,15 @@ information: *(Available from version 0.45.)* +* `get_window_is_minimised` + + + Returns `true` if the window is minimised, `false` otherwise. + + *(Available from version 0.46; -`ized` from 0.46)* + * `get_window_is_maximised` - Returns `true` if the window is maximised, `false` otherwise. diff --git a/src/script.c b/src/script.c index 399680b..3f77b8b 100644 --- a/src/script.c +++ b/src/script.c @@ -132,6 +132,8 @@ register_cfunctions(lua_State *lua) DP2_REGISTER(lua, set_skip_tasklist); DP2_REGISTER(lua, set_skip_pager); + DP2_REGISTER(lua, get_window_is_minimized); + lua_register(lua, "get_window_is_minimised", c_get_window_is_minimized); DP2_REGISTER(lua, get_window_is_maximized); lua_register(lua, "get_window_is_maximised", c_get_window_is_maximized); diff --git a/src/script_functions.c b/src/script_functions.c index 240d582..1fca008 100644 --- a/src/script_functions.c +++ b/src/script_functions.c @@ -781,7 +781,7 @@ int c_minimize(lua_State *lua) if (!devilspie2_emulate) { WnckWindow *window = get_current_window(); - if (window) { + if (window && FALSE == wnck_window_is_minimized(window)) { wnck_window_minimize(window); } } @@ -802,7 +802,7 @@ int c_unminimize(lua_State *lua) if (!devilspie2_emulate) { WnckWindow *window = get_current_window(); - if (window) { + if (window && TRUE == wnck_window_is_minimized(window)) { wnck_window_unminimize (window, current_time()); } } @@ -1406,6 +1406,19 @@ int c_set_skip_pager(lua_State *lua) return 0; } +int c_get_window_is_minimized(lua_State *lua) +{ + if (!check_param_count(lua, "get_window_is_minimized", 0)) { + return 0; + } + + WnckWindow *window = get_current_window(); + gboolean is_minimized = window ? wnck_window_is_minimized(window) : FALSE; + + lua_pushboolean(lua, is_minimized); + + return 1; +} /** * diff --git a/src/script_functions.h b/src/script_functions.h index 6a2f2d0..8ed2d1c 100644 --- a/src/script_functions.h +++ b/src/script_functions.h @@ -86,6 +86,7 @@ int c_get_window_frame_extents(lua_State *lua); int c_set_skip_tasklist(lua_State *lua); int c_set_skip_pager(lua_State *lua); +int c_get_window_is_minimized(lua_State *lua); int c_get_window_is_maximized(lua_State *lua); int c_get_window_is_maximized_vertically(lua_State *lua); int c_get_window_is_maximized_horisontally(lua_State *lua); // deprecated