Compare commits

...

11 Commits

Author SHA1 Message Date
Carsten Haitzler 8167d4e02d acpi - delay missing acpid dialog until after we've started up
with a timer it'll wait untuil after mainloop is running before it
times out and thus shows the dialog ensuring it appears once the
compositor is fully up. this should avoid weird sized windows.

@fix
2019-10-30 12:30:50 +00:00
Carsten Haitzler 4852760c8e win stacking - fix stacking transients if there are multiple
if 1 parent has 2, 3 or 4 etc. transi3ents as immediate children we
reverse-stacked them. go to stacking them in order they are added
(which would normally bve creation order which makes more sense). this
stops some dialogs appearing intitally behind other dialogs that were
there before.

@fix
2019-10-30 12:30:44 +00:00
Carsten Haitzler d40788bc7b backlight - update timer on power plug/unplug
this ensures a different timeout can be applied if you plug or unplug
power.
2019-09-29 12:44:09 +01:00
Riccardo Calixte 25ec83f91a Updating Meson build Wayland conditional to match Makefile
Summary:
The conditional logic is flawed.
If `HAVE_WAYLAND` is true, only then should the path be updated to include wayland-sessions.

Test Plan: Verified desired output in build/meson-info/intro-installed.json after testing a clean build

Reviewers: devilhorns

Subscribers: cedric, zmike

Tags: #enlightenment-git

Differential Revision: https://phab.enlightenment.org/D9868
2019-09-29 12:42:48 +01:00
Davide Andreoli 2cdc51f866 PackageKit: fix count of available updates on fedora
seems on fedora the type of updates are reported differently
from debian and archlinux based distro

thanks Simon for reporting and testing
2019-09-29 12:37:56 +01:00
Carsten Haitzler 6b2eb17c57 e randr - fix plug/unplug of external screen
it seems some logic to stop internal screen fake plug/unplugs from
interfering were hurting external screen plug/unplug. fix makes that
work again.
2019-09-28 18:50:48 +01:00
Carsten Haitzler 0e0141484a release 0.23.1 2019-09-26 16:40:54 +01:00
Carsten Haitzler 6623bd2d1b mixer - try not to create notifications for no change in volume 2019-09-25 18:48:44 +01:00
Carsten Haitzler 19309a3e3a e build fix - make uuid an explicit dep of gadget loader
fix build break thanks to latest 1.23 bet bleeding edge efl.
2019-09-25 18:48:26 +01:00
Carsten Haitzler c97ea9f1c0 e - fix up resize/move by kbd to work again
this used to work years ago ... it seems tihave broken. this fixes it
all up to work again so you can bind a move/resize of a window tothe
kbd and then use arrow keys etc. like you used to....

@fix
2019-09-04 19:18:24 +01:00
Carsten Haitzler af199f6c0f e comp object - fix null comp win access on move begin
don't crash.

@fix
2019-09-04 13:35:43 +01:00
13 changed files with 206 additions and 117 deletions

View File

@ -6,12 +6,12 @@ e_desktop = configure_file(input : 'enlightenment.desktop.in',
configuration: desktop_config
)
if config_h.has('HAVE_WAYLAND') == true
install_data(e_desktop,
install_dir : join_paths(dir_data, 'wayland-sessions'))
endif
if config_h.has('HAVE_WAYLAND_ONLY') == false
install_data(e_desktop,
install_dir : join_paths(dir_data, 'xsessions'))
endif
if config_h.has('HAVE_WAYLAND') == false
install_data(e_desktop,
install_dir : join_paths(dir_data, 'wayland-sessions'))
endif

View File

@ -1,6 +1,6 @@
##### project
project('enlightenment', 'c',
version : '0.23.0',
version : '0.23.1',
license : 'BSD 2 clause',
default_options: [ 'buildtype=release', 'c_std=gnu99', 'warning_level=2' ],
meson_version : '>= 0.47.0')

View File

@ -125,6 +125,18 @@ static E_ACPI_Device_Multiplexed _devices_multiplexed[] =
/* public variables */
E_API int E_EVENT_ACPI = 0;
static Eina_Bool
_acpi_error_cb(void *data EINA_UNUSED)
{
e_util_dialog_show
(_("ACPI Error"),
_("You seem to have an ACPI based system, but<br>"
"<hilight>acpid</hilight> does not seem to be running or<br>"
"contactable. Perhaps enable the <hilight>acpid</hilight><br>"
"service on your system?"));
return EINA_FALSE;
}
/* public functions */
EINTERN int
e_acpi_init(void)
@ -135,11 +147,7 @@ e_acpi_init(void)
if (!ecore_file_exists("/var/run/acpid.socket"))
{
if (ecore_file_exists("/proc/acpi"))
e_util_dialog_show(_("Error"),
_("You seem to have an ACPI based system, but<br>"
"<hilight>acpid</hilight> does not seem to be running or<br>"
"contactable. Perhaps enable the <hilight>acpid</hilight><br>"
"service on your system?"));
ecore_timer_add(5.0, _acpi_error_cb, NULL);
return 1;
}

View File

@ -103,7 +103,8 @@ ACT_FN_GO(window_move, EINA_UNUSED)
ACT_FN_GO_MOUSE(window_move, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return EINA_FALSE;
if (obj->type != E_CLIENT_TYPE) return EINA_FALSE;
e_client_act_move_begin((E_Client *)(void *)obj, ev);
@ -112,7 +113,8 @@ ACT_FN_GO_MOUSE(window_move, EINA_UNUSED)
ACT_FN_GO_SIGNAL(window_move, )
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (obj->type != E_CLIENT_TYPE) return;
if (!((E_Client *)(void *)obj)->lock_user_location)
@ -129,7 +131,8 @@ ACT_FN_GO_SIGNAL(window_move, )
ACT_FN_END(window_move, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (obj->type != E_CLIENT_TYPE) return;
e_client_act_move_end((E_Client *)(void *)obj, NULL);
@ -137,7 +140,8 @@ ACT_FN_END(window_move, EINA_UNUSED)
ACT_FN_END_MOUSE(window_move, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return EINA_FALSE;
if (obj->type != E_CLIENT_TYPE) return EINA_FALSE;
e_client_act_move_end((E_Client *)(void *)obj, ev);
@ -146,7 +150,8 @@ ACT_FN_END_MOUSE(window_move, EINA_UNUSED)
ACT_FN_GO_KEY(window_move, EINA_UNUSED, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (!((E_Client *)(void *)obj)->lock_user_location)
e_client_act_move_keyboard((E_Client *)(void *)obj);
@ -164,7 +169,8 @@ ACT_FN_GO(window_resize, EINA_UNUSED)
ACT_FN_GO_MOUSE(window_resize, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return EINA_FALSE;
if (obj->type != E_CLIENT_TYPE) return EINA_FALSE;
if (!((E_Client *)(void *)obj)->lock_user_size)
@ -174,7 +180,8 @@ ACT_FN_GO_MOUSE(window_resize, EINA_UNUSED)
ACT_FN_GO_SIGNAL(window_resize, )
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (obj->type != E_CLIENT_TYPE) return;
if (!((E_Client *)(void *)obj)->lock_user_size)
@ -194,7 +201,8 @@ ACT_FN_GO_SIGNAL(window_resize, )
ACT_FN_END(window_resize, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (obj->type != E_CLIENT_TYPE) return;
e_client_act_resize_end((E_Client *)(void *)obj, NULL);
@ -202,7 +210,8 @@ ACT_FN_END(window_resize, EINA_UNUSED)
ACT_FN_END_MOUSE(window_resize, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return EINA_FALSE;
if (obj->type != E_CLIENT_TYPE) return EINA_FALSE;
e_client_act_resize_end((E_Client *)(void *)obj, ev);
@ -211,7 +220,8 @@ ACT_FN_END_MOUSE(window_resize, EINA_UNUSED)
ACT_FN_GO_KEY(window_resize, EINA_UNUSED, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (obj->type != E_CLIENT_TYPE)
{
@ -233,7 +243,8 @@ ACT_FN_GO(window_menu, EINA_UNUSED)
ACT_FN_GO_MOUSE(window_menu, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return EINA_FALSE;
if (obj->type != E_CLIENT_TYPE)
{
@ -246,7 +257,8 @@ ACT_FN_GO_MOUSE(window_menu, EINA_UNUSED)
ACT_FN_GO_KEY(window_menu, EINA_UNUSED, EINA_UNUSED)
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (obj->type != E_CLIENT_TYPE)
{
@ -833,7 +845,8 @@ ACT_FN_GO(window_pinned_toggle, EINA_UNUSED)
/***************************************************************************/
ACT_FN_GO(window_move_by, )
{
if (!obj) obj = E_OBJECT(e_client_focused_get());
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
if (obj->type != E_CLIENT_TYPE)
{
@ -912,9 +925,9 @@ ACT_FN_GO(window_quick_tile_to_quadrant, )
{
E_Client *ec;
int x, y, zx, zy, zw, zh;
if ((!obj) || (obj->type != E_CLIENT_TYPE))
obj = E_OBJECT(e_client_focused_get());
if (!obj) return;
ec = (E_Client *)(void *)obj;

View File

@ -820,15 +820,12 @@ _e_client_action_restore_orig(E_Client *ec)
static int
_e_client_key_down_modifier_apply(int modifier, int value)
{
if (modifier & ECORE_EVENT_MODIFIER_CTRL)
return value * 2;
if (modifier & ECORE_EVENT_MODIFIER_CTRL) return value * 5;
else if (modifier & ECORE_EVENT_MODIFIER_ALT)
{
value /= 2;
if (value)
return value;
else
return 1;
value /= 5;
if (value) return value;
else return 1;
}
return value;
@ -897,16 +894,17 @@ _e_client_action_move_timeout(void *data EINA_UNUSED)
static void
_e_client_action_move_timeout_add(void)
{
double timeout = e_config->border_keyboard.timeout;
E_FREE_FUNC(action_timer, ecore_timer_del);
if (EINA_DBL_NONZERO(e_config->border_keyboard.timeout))
action_timer = ecore_timer_loop_add(e_config->border_keyboard.timeout, _e_client_action_move_timeout, NULL);
if (!EINA_DBL_NONZERO(timeout)) timeout = 5.0;
action_timer = ecore_timer_loop_add(timeout, _e_client_action_move_timeout, NULL);
}
static Eina_Bool
_e_client_move_key_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Ecore_Event_Key *ev = event;
int x, y;
int x, y, dx, dy;
if (!comp_grabbed) return ECORE_CALLBACK_RENEW;
if (!action_client)
@ -918,27 +916,28 @@ _e_client_move_key_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *even
x = action_client->x;
y = action_client->y;
if ((strcmp(ev->key, "Up") == 0) || (strcmp(ev->key, "k") == 0))
y -= _e_client_key_down_modifier_apply(ev->modifiers, MAX(e_config->border_keyboard.move.dy, 1));
else if ((strcmp(ev->key, "Down") == 0) || (strcmp(ev->key, "j") == 0))
y += _e_client_key_down_modifier_apply(ev->modifiers, MAX(e_config->border_keyboard.move.dy, 1));
else if ((strcmp(ev->key, "Left") == 0) || (strcmp(ev->key, "h") == 0))
x -= _e_client_key_down_modifier_apply(ev->modifiers, MAX(e_config->border_keyboard.move.dx, 1));
else if ((strcmp(ev->key, "Right") == 0) || (strcmp(ev->key, "l") == 0))
x += _e_client_key_down_modifier_apply(ev->modifiers, MAX(e_config->border_keyboard.move.dx, 1));
else if (strcmp(ev->key, "Return") == 0)
goto stop;
else if (strcmp(ev->key, "Escape") == 0)
dx = e_config->border_keyboard.move.dx;
dx = _e_client_key_down_modifier_apply(ev->modifiers, dx);
dy = e_config->border_keyboard.move.dy;
dy = _e_client_key_down_modifier_apply(ev->modifiers, dy);
switch (e_util_key_geometry_action_get(ev->key, &x, &y, dx, dy))
{
case E_UTIL_ACTION_DONE:
goto stop;
break;
case E_UTIL_ACTION_ABORT:
_e_client_action_restore_orig(action_client);
goto stop;
break;
case E_UTIL_ACTION_DO:
evas_object_move(action_client->frame, x, y);
_e_client_action_move_timeout_add();
break;
case E_UTIL_ACTION_NONE:
default:
break;
}
else if ((strncmp(ev->key, "Control", sizeof("Control") - 1) != 0) &&
(strncmp(ev->key, "Alt", sizeof("Alt") - 1) != 0))
goto stop;
evas_object_move(action_client->frame, x, y);
_e_client_action_move_timeout_add();
return ECORE_CALLBACK_PASS_ON;
@ -1118,9 +1117,10 @@ _e_client_action_resize_timeout(void *data EINA_UNUSED)
static void
_e_client_action_resize_timeout_add(void)
{
double timeout = e_config->border_keyboard.timeout;
E_FREE_FUNC(action_timer, ecore_timer_del);
if (EINA_DBL_NONZERO(e_config->border_keyboard.timeout))
action_timer = ecore_timer_loop_add(e_config->border_keyboard.timeout, _e_client_action_resize_timeout, NULL);
if (!EINA_DBL_NONZERO(timeout)) timeout = 5.0;
action_timer = ecore_timer_loop_add(timeout, _e_client_action_resize_timeout, NULL);
}
static Eina_Bool
@ -1140,48 +1140,41 @@ _e_client_resize_key_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev
h = action_client->h;
dx = e_config->border_keyboard.resize.dx;
if (dx < action_client->icccm.step_w)
dx = action_client->icccm.step_w;
if (dx < action_client->icccm.step_w) dx = action_client->icccm.step_w;
dx = _e_client_key_down_modifier_apply(ev->modifiers, dx);
if (dx < action_client->icccm.step_w)
dx = action_client->icccm.step_w;
if (dx < action_client->icccm.step_w) dx = action_client->icccm.step_w;
dy = e_config->border_keyboard.resize.dy;
if (dy < action_client->icccm.step_h)
dy = action_client->icccm.step_h;
if (dy < action_client->icccm.step_h) dy = action_client->icccm.step_h;
dy = _e_client_key_down_modifier_apply(ev->modifiers, dy);
if (dy < action_client->icccm.step_h)
dy = action_client->icccm.step_h;
if (dy < action_client->icccm.step_h) dy = action_client->icccm.step_h;
if ((strcmp(ev->key, "Up") == 0) || (strcmp(ev->key, "k") == 0))
h -= dy;
else if ((strcmp(ev->key, "Down") == 0) || (strcmp(ev->key, "j") == 0))
h += dy;
else if ((strcmp(ev->key, "Left") == 0) || (strcmp(ev->key, "h") == 0))
w -= dx;
else if ((strcmp(ev->key, "Right") == 0) || (strcmp(ev->key, "l") == 0))
w += dx;
else if (strcmp(ev->key, "Return") == 0)
goto stop;
else if (strcmp(ev->key, "Escape") == 0)
switch (e_util_key_geometry_action_get(ev->key, &w, &h, dx, dy))
{
case E_UTIL_ACTION_DONE:
goto stop;
break;
case E_UTIL_ACTION_ABORT:
_e_client_action_restore_orig(action_client);
goto stop;
}
else if ((strncmp(ev->key, "Control", sizeof("Control") - 1) != 0) &&
(strncmp(ev->key, "Alt", sizeof("Alt") - 1) != 0))
goto stop;
if (e_config->screen_limits == E_CLIENT_OFFSCREEN_LIMIT_ALLOW_NONE)
{
if (action_client->zone)
break;
case E_UTIL_ACTION_DO:
if (e_config->screen_limits == E_CLIENT_OFFSCREEN_LIMIT_ALLOW_NONE)
{
w = MIN(w, action_client->zone->w);
h = MIN(h, action_client->zone->h);
if (action_client->zone)
{
w = MIN(w, action_client->zone->w);
h = MIN(h, action_client->zone->h);
}
}
e_client_resize_limit(action_client, &w, &h);
evas_object_resize(action_client->frame, w, h);
_e_client_action_resize_timeout_add();
break;
case E_UTIL_ACTION_NONE:
default:
break;
}
e_client_resize_limit(action_client, &w, &h);
evas_object_resize(action_client->frame, w, h);
_e_client_action_resize_timeout_add();
return ECORE_CALLBACK_PASS_ON;
@ -2427,7 +2420,6 @@ e_client_idler_before(void)
if ((!eina_hash_population(clients_hash[0])) && (!eina_hash_population(clients_hash[1]))) return;
EINA_LIST_FOREACH(e_comp->clients, l, ec)
{
Eina_Stringshare *title;
@ -4870,17 +4862,15 @@ e_client_act_move_keyboard(E_Client *ec)
if (!_e_client_move_begin(ec))
return;
_e_client_action_init(ec);
_e_client_action_move_timeout_add();
if (!_e_client_hook_call(E_CLIENT_HOOK_MOVE_UPDATE, ec)) return;
evas_object_freeze_events_set(ec->frame, 1);
if (!action_handler_key)
action_handler_key = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _e_client_move_key_down, NULL);
if (!action_handler_mouse)
action_handler_mouse = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, _e_client_move_mouse_down, NULL);
_e_client_action_move_timeout_add();
}
E_API void
@ -4896,16 +4886,14 @@ e_client_act_resize_keyboard(E_Client *ec)
ec->keyboard_resizing = 0;
return;
}
_e_client_action_init(ec);
_e_client_action_resize_timeout_add();
evas_object_freeze_events_set(ec->frame, 1);
if (!action_handler_key)
action_handler_key = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _e_client_resize_key_down, NULL);
if (!action_handler_mouse)
action_handler_mouse = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, _e_client_resize_mouse_down, NULL);
_e_client_action_resize_timeout_add();
}
E_API void
@ -5727,11 +5715,10 @@ e_client_transients_restack(E_Client *ec)
if (!ec->transients) return;
list = eina_list_clone(ec->transients);
E_LIST_REVERSE_FREE(list, child)
EINA_LIST_FREE(list, child)
{
/* Don't stack iconic transients. If the user wants these shown,
* that's another option.
*/
// Don't stack iconic transients. If the user wants these shown,
// that's another option.
if (child->iconic) continue;
if (below)
{

View File

@ -292,10 +292,18 @@ _e_comp_object_layers_add(E_Comp_Object *cw, E_Comp_Object *above, E_Comp_Object
if (!cw->ec) return;
*/
if (above)
e_comp->layers[above->layer].clients = eina_inlist_append_relative(e_comp->layers[above->layer].clients, EINA_INLIST_GET(cw->ec), EINA_INLIST_GET(above->ec));
{
cw->layer = above->layer;
e_comp->layers[above->layer].clients = eina_inlist_append_relative(e_comp->layers[above->layer].clients, EINA_INLIST_GET(cw->ec), EINA_INLIST_GET(above->ec));
e_comp->layers[above->layer].clients_count++;
}
else if (below)
e_comp->layers[below->layer].clients = eina_inlist_prepend_relative(e_comp->layers[below->layer].clients, EINA_INLIST_GET(cw->ec), EINA_INLIST_GET(below->ec));
if ((!above) && (!below))
{
cw->layer = below->layer;
e_comp->layers[below->layer].clients = eina_inlist_prepend_relative(e_comp->layers[below->layer].clients, EINA_INLIST_GET(cw->ec), EINA_INLIST_GET(below->ec));
e_comp->layers[below->layer].clients_count++;
}
else
{
if (prepend)
e_comp->layers[cw->layer].clients = eina_inlist_prepend(e_comp->layers[cw->layer].clients, EINA_INLIST_GET(cw->ec));
@ -303,8 +311,8 @@ _e_comp_object_layers_add(E_Comp_Object *cw, E_Comp_Object *above, E_Comp_Object
e_comp->layers[cw->layer].clients = eina_inlist_prepend_relative(e_comp->layers[cw->layer].clients, EINA_INLIST_GET(cw->ec), EINA_INLIST_GET(layer_cw->ec));
else //this is either the layer object or a tough actin tinactin^W^W^Wfast stacking client
e_comp->layers[cw->layer].clients = eina_inlist_append(e_comp->layers[cw->layer].clients, EINA_INLIST_GET(cw->ec));
e_comp->layers[cw->layer].clients_count++;
}
e_comp->layers[cw->layer].clients_count++;
#ifndef E_RELEASE_BUILD
if (layer_cw)
{
@ -2631,6 +2639,7 @@ _e_comp_object_move_end(void *d EINA_UNUSED, E_Client *ec)
Evas_Object *rect;
Eina_Array_Iterator it;
if (!cw) return;
if (!cw->input_objs) return;
EINA_ARRAY_ITER_NEXT(cw->input_objs, i, rect, it)
@ -2645,6 +2654,7 @@ _e_comp_object_move_begin(void *d EINA_UNUSED, E_Client *ec)
Evas_Object *rect;
Eina_Array_Iterator it;
if (!cw) return;
if (!cw->input_objs) return;
EINA_ARRAY_ITER_NEXT(cw->input_objs, i, rect, it)

View File

@ -720,6 +720,7 @@ _cb_screen_change_delay(void *data EINA_UNUSED)
int lid_screens = 0;
int close_lid_screens = 0;
int external_screens = 0;
int prev_external_screens = 0;
E_Randr2 *rtemp;
printf("RRR: reconfigure screens due to event...\n");
@ -738,19 +739,41 @@ _cb_screen_change_delay(void *data EINA_UNUSED)
}
EINA_LIST_FOREACH(rtemp->screens, l, s)
{
printf("RRR: scr: %s lid=%i conn=%i\n", s->id, s->info.is_lid, s->info.connected);
// if (!s->id) continue;
if (s->info.is_lid)
{
printf("RRR: is lid, lid++\n");
lid_screens++;
if (s->info.lid_closed) close_lid_screens++;
if (s->info.lid_closed)
{
printf("RRR: is lid, is closed, closed++\n");
close_lid_screens++;
}
}
else
{
if ((s->info.connected) && (s->config.enabled))
external_screens++;
if (s->info.connected)
{
printf("RRR: is not lid, is connected, ext++\n");
external_screens++;
}
else
{
printf("RRR: is not lid, is not connected\n");
}
}
}
printf("RRR: lids=%i closed=%i ext=%i\n", lid_screens, close_lid_screens, external_screens);
EINA_LIST_FOREACH(e_randr2->screens, l, s)
{
printf("RRR: prev_scr: %s lid=%i conn=%i\n", s->id, s->info.is_lid, s->info.connected);
// if (!s->id) continue;
if (!s->info.is_lid)
{
if (s->info.connected) prev_external_screens++;
}
}
printf("RRR: lids=%i closed=%i ext=%i prev_ext=%i\n", lid_screens, close_lid_screens, external_screens, prev_external_screens);
_info_free(rtemp);
}
printf("RRR: change = %i\n", change);
@ -759,7 +782,7 @@ _cb_screen_change_delay(void *data EINA_UNUSED)
if (change)
{
if ((lid_screens > 0) && (close_lid_screens == lid_screens) &&
(external_screens == 0))
(external_screens == 0) && (external_screens == prev_external_screens))
{
printf("RRR: skip change with all lids closed and no ext\n");
change = EINA_FALSE;
@ -774,7 +797,7 @@ _cb_screen_change_delay(void *data EINA_UNUSED)
// force dpms...
}
if ((lid_screens > 0) && (close_lid_screens < lid_screens) &&
(external_screens == 0))
(external_screens == 0) && (external_screens == prev_external_screens))
{
printf("RRR: skip change with lid screens open and no ext\n");
change = EINA_FALSE;

View File

@ -291,6 +291,8 @@ _e_screensaver_suspend_cb(void *data EINA_UNUSED)
static Eina_Bool
_e_screensaver_handler_powersave_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
{
_e_screensaver_timeout = -1;
e_screensaver_update();
if ((e_config->screensaver_suspend) && (_e_screensaver_on))
{
if (_e_screensaver_suspend_timer)

View File

@ -1506,3 +1506,37 @@ e_util_exe_safe_run(const char *cmd, void *data)
#endif
return ecore_exe_pipe_run(cmd, flags, data);
}
static Eina_Bool
str_matches_one(const char *instr, const char **strset)
{
int i;
if ((!instr) || (!strset)) return EINA_FALSE;
for (i = 0; strset[i]; i++)
{
if (!strcmp(strset[i], instr)) return EINA_TRUE;
}
return EINA_FALSE;
}
E_API E_Util_Action
e_util_key_geometry_action_get(const char *key, int *x, int *y, int dx, int dy)
{
const char *k_up[] = { "Up", "KP_Up", "k", "K", "w", "W", NULL };
const char *k_down[] = { "Down", "KP_Down", "j", "J", "s", "S", NULL };
const char *k_left[] = { "Left", "KP_Left", "h", "H", "a", "A", NULL };
const char *k_right[] = { "Right", "KP_Right", "l", "L", "d", "D", NULL };
const char *k_done[] = { "Return", "KP_Enter", "space", NULL };
const char *k_abort[] = { "Escape", "BackSpace", "Delete", "x", "X", NULL };
if (str_matches_one(key, k_up)) *y -= dy;
else if (str_matches_one(key, k_down)) *y += dy;
else if (str_matches_one(key, k_left)) *x -= dx;
else if (str_matches_one(key, k_right)) *x += dx;
else if (str_matches_one(key, k_done)) return E_UTIL_ACTION_DONE;
else if (str_matches_one(key, k_abort)) return E_UTIL_ACTION_ABORT;
else return E_UTIL_ACTION_NONE;
return E_UTIL_ACTION_DO;
}

View File

@ -70,6 +70,16 @@ E_API Ecore_Exe *e_util_open(const char *exe, void *data);
E_API Ecore_Exe *e_util_exe_safe_run(const char *cmd, void *data);
typedef enum
{
E_UTIL_ACTION_NONE,
E_UTIL_ACTION_DONE,
E_UTIL_ACTION_ABORT,
E_UTIL_ACTION_DO
} E_Util_Action;
E_API E_Util_Action e_util_key_geometry_action_get(const char *key, int *x, int *y, int dx, int dy);
static inline Eina_Bool
isedje(const Evas_Object *obj)
{

View File

@ -577,7 +577,8 @@ if config_h.has('HAVE_WAYLAND') == true
name_prefix: '',
include_directories: include_directories('../..'),
dependencies: [
dep_dl,
dep_dl,
dependency('uuid'),
dependency('elementary'),
dependency('ecore-wl2'),
dependency('wayland-client'),

View File

@ -351,10 +351,8 @@ _sink_event(int type, void *info)
if (sink == _sink_default)
{
l = emix_sinks_get();
if (l)
_sink_default = l->data;
else
_sink_default = NULL;
if (l) _sink_default = l->data;
else _sink_default = NULL;
if (emix_config_save_get()) e_config_save_queue();
_backend_changed();
}
@ -363,15 +361,17 @@ _sink_event(int type, void *info)
{
if (_sink_default == sink)
{
static int prev_vol = -1;
int vol;
_backend_changed();
if (sink->mute || !sink->volume.channel_count)
vol = 0;
else
vol = sink->volume.volumes[0];
_notify(vol);
if (sink->mute || !sink->volume.channel_count) vol = 0;
else vol = sink->volume.volumes[0];
if (vol != prev_vol)
{
_notify(vol);
prev_vol = vol;
}
}
}
else

View File

@ -34,6 +34,7 @@ packagekit_icon_update(E_PackageKit_Module_Context *ctxt,
case PK_INFO_ENUM_BUGFIX:
case PK_INFO_ENUM_IMPORTANT:
case PK_INFO_ENUM_SECURITY:
case PK_INFO_ENUM_AVAILABLE:
count++;
break;
default: