Compare commits

...

71 Commits

Author SHA1 Message Date
Carsten Haitzler 527f62f034 0.25 stable - fix uninit var usage - bad backporting of fixes
@fix
2023-03-20 17:00:48 +00:00
Carsten Haitzler cae78cbb16 move to 0.25.4 for micro release 2022-09-15 15:19:57 +01:00
Carsten Haitzler 99e79be062 enlightenment_system - harden - no sysactions.conf - deny all actions 2022-09-15 15:19:22 +01:00
Carsten Haitzler e87530514e enlightenment_sys - fix security hole CVE-2022-37706
https://github.com/MaherAzzouzi/CVE-2022-37706-LPE-exploit

fixes that.
@fix
2022-09-15 15:06:19 +01:00
Carsten Haitzler 576d29a809 win - shapes - set pass events if we have shaped wins but no rects
could be an EMPTY set of input rects but shaped still... so pass
events on the comp obj.

fixes recordmydesktop

@fix
2022-09-15 15:05:41 +01:00
Carsten Haitzler 0aeeefb405 mesgbus - fix nukll name dbus string send
This fixes #11
2022-09-15 14:59:45 +01:00
Carsten Haitzler 374ed74049 win - first map - fix energyxt unmap bug by wiping ignore unmap
For some reason I have yet to divine we don't get an initial unmap
event due to the reparent of the energyxt dialog windows and the
"ignore that first unmap" flag does not get cleared because it doesn't
happen. later when the dialog is withdrawn {9unmapped) this is ignored
then when you close the dialog... thus keeping it around as far as e
is concerned.

so to fix this - add a small timeout to clean this flag after a
show/map.

@fix
2022-09-15 14:59:00 +01:00
Carsten Haitzler 671789b5a8 e comp - fix noisy debug printf due to previous fix
removes noise from 4c6dd08e25

@fix
2022-09-15 14:58:22 +01:00
Carsten Haitzler 8af3b69050 fix enlightenment help and version optiosn to exit after print
@fix
2022-09-15 14:57:56 +01:00
Carsten Haitzler d307aeb110 gtk frame porp change - if deleted for an existing csd app then adjust
assume it went to 0 size if removed and already a csd frame window
which is what chomium does going fullscreen - i didnt see this as i
used chromium with system titlebars not its own.

@fix
2022-09-15 14:57:48 +01:00
Carsten Haitzler 6cc05c5f3e e comp wl - fix warning for uninit var
actually code path wouldn't care, but this silences a warning

@fix
2022-09-15 14:57:42 +01:00
Carsten Haitzler 1c0e17dba3 popup - simplify buffer alloc for popup body and silence warning
@fix
2022-09-15 14:57:32 +01:00
Carsten Haitzler 1d5c87845f open - fix warning with possible uninitted var
@fix
2022-09-15 14:57:21 +01:00
Carsten Haitzler 08b567f5ce e config - fix config fallback handling - it was broken
loaded the wrong filename pattern due to a change i made ages to it
from file.N.cfg to file.cfg.N.

@fix
2022-09-15 14:57:09 +01:00
Carsten Haitzler 68417de8ae client evas objects - fix - dont use precise for shaped input
shaped input doesnt affect or make custom copies of pixel data, thus
precise inside can't work (it can only work if the pixel data is local
- thus textur efrom pixmap is not going to produce valid data thus...
you get the drift). this fixes some odd focus/event things with some
windows that use shaped input only

@fix
2022-09-15 14:56:58 +01:00
Carsten Haitzler 2590043d15 gadcon - fix disabled items... this is a radio and switches a/b/c ...
just because an item is not the selected one does not mean it should
be disabled. that is not how radios work. you choose 1 of n menu
items... only items you should NOT select (are not available for
selection) should be disabled.

@fix
2022-09-15 14:56:28 +01:00
Alastair Poole c22f2faecf procstats: Handle e_client fullscreen requests.
Add an event handler for E_CLIENT_FULLSCREEN. Remove the client,
destroying the popup and icon region.

This resolves the issue where a client fullscreen request would
leave a rogue icon region and popup if switching to full screen
with some applications.

@fix T8996
2022-09-15 14:56:20 +01:00
Carsten Haitzler 77ae5de41a config - remove duplicate bindings for the same acpi event
this is bad - same event does 3 things. dim, undim and show brightness
controls...

@fix
2022-09-15 14:56:14 +01:00
Carsten Haitzler b7d052704c e config - remove upgrade blocks for luncher + sysinfo
these are not even around so... dont enable them if going from a very
old cfg

@fix
2022-09-15 14:56:06 +01:00
Carsten Haitzler 7e896c71d7 touchpad input synaptics - fix tap to click props to work
if the driver if synaptics tap to click didnt work. this fixes that.
it didn't get the property values right in the "bitmask" enabling
buttons.

@fix
2022-09-15 14:55:37 +01:00
Carsten Haitzler df896fc6b2 focus action - raise/unshade/uniconify on focus dir/next/prev action
it's not right that windows stay shaded, iconified or stacked below
when you use a binding to switch focus like "focus prev" to cycle just
with a plain key. this fixes that

@fix
2022-09-15 14:55:21 +01:00
Carsten Haitzler ddc8b481e4 ptr - fix cursor getting stuck in resize after blanking
i now saw this... i don't know why now... and consistently. fixed.

@fix
2022-09-15 14:55:12 +01:00
Carsten Haitzler d2e8f98a19 pointer - null out deleted strings
avoids them being accessed incorrectly later
@fix
2022-09-15 14:55:04 +01:00
Carsten Haitzler 32ac825851 fix more unfullscreen clicker/toggle when window is small...
another codepath for the fullscreen flicker bug via the job handler

@fix
2022-09-15 14:54:57 +01:00
Carsten Haitzler bc2470cbd8 fix fullscreen flicker/toggle when window is small and we get mouse out
we get a spurious mouse out if your window is small then told to go
fullscreen which then causes in ponter focus a unfocus event which
causes e to restore window to its non-fulscreen mode which then may
cause a mouse in again if mouse is positioned right which causes a "go
fullscreen now again" and so on... fix this and ignore that mouse out
right after going fullscreen.

@fix
2022-09-15 14:54:51 +01:00
Carsten Haitzler 34c8ce2fa1 qrt bug workaround - qt does not remove WM_STATE when withdrawing
as per icccm - client should remove WM_STATE when withdrawing... and
qt relies on WM_STATE to know if it re-show a window - the property
it itself refused to remove...
2022-09-15 14:54:38 +01:00
Carsten Haitzler e8e01ac168 winlist - fix 0 item lenth rows - have at least 1 item
this fixes winlist large mode sometimes losing windows in the view.

@fix
2022-09-15 14:54:30 +01:00
Alastair Poole fdb2ca44c3 procstats: fix popup state on maximize/unmaximize 2022-09-15 14:54:18 +01:00
Carsten Haitzler f4c58caf30 comp - fix event shape to account for txt/texblock and img properly
@fix
2022-09-15 14:54:13 +01:00
Carsten Haitzler 4c2633ae17 comp - fix shapoe event to skip clippers 2022-09-15 14:54:00 +01:00
Carsten Haitzler 8c0698c3dd overlay resize regions - properly sety shape rects to account for them
e didn't set shape rects for input overflow areas for the resize
handles in theme to work on top of other clients and client areas.
this should make that all work now and make the resize handle area
bigger than it actually looks.

@fix
2022-09-15 14:52:48 +01:00
Carsten Haitzler f4a1dac61b notification - get rid of useless appendix code...
themes have supported notification for as logn as e17 was released
so remove useless "appendix" of code that handles if it isnt.
2022-09-15 14:52:38 +01:00
Carsten Haitzler 49c95a3567 0.25.3 2022-02-10 09:56:36 +00:00
Carsten Haitzler 3fc4a1c1c0 notification - fix shadow around extra notifications when all shown
if you show notifications on all screens the extra ones not on the
current screen get a shadow - this is wrong. this fixes that

@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 5c7bd88632 gesture - add an option to turn it all on or off
so - some people have issues if we open devices. why... i don't know,
but add an option to toggle this and be conservative and have it off
by default

@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 6d3a24be36 backlight - add option for ddc to work or not
just because libddcutil is installed doesnt mean someone always wants
backlight on monitors controlled, so allow an option.
2022-02-10 09:52:41 +00:00
Carsten Haitzler 0269ee1d95 ibar - emit left/right a;ign if gadcon is left/right vertical
@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 7355d8d2a9 theme - ibar/ibox label overlay - properly align with text min size
@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 6aff4fc3aa move to 0.25.2 for micro release 2022-02-07 19:05:31 +00:00
Carsten Haitzler 18b1b27820 pkgkit - count pkgs total in gadgets
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler dd94b435a3 deskmirror - donbt show iconified windows
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler d593cf51ff build - fix cc.links for bsd case to use args not link args
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler 66b6d770d8 focus - fix some lingering mis-focus issues
finally fix T8980 (i hope)
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler e571381227 modules - add procstats to whitelist 2022-02-07 19:04:07 +00:00
Carsten Haitzler 9477828550 pager - don't keep building up more popups on popups on switches
re-use the existing popup and stop stacking more and more.

@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler 6a72eb3cee efm - recent - fix up mis-sorting on re-load and make icons better
was missing thumbnails - now do them. fix re-sorting of items weirdly
on re-load later.

@fix
2022-02-07 19:04:07 +00:00
Marcel Hollerbach 4814a63d4c e_client: fix more focus weirdness
parent should be raised, even though it is not the modal.
2022-02-07 19:04:07 +00:00
Carsten Haitzler 9dd6a7778c efm - do same mime lookup method as efm in recents menu
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler 5a81d09519 desklock settinghs - fix kbd layout list to fill vert
@fix
2022-02-07 19:04:07 +00:00
maxerba e38658b8e9 Updating french and italian translations 2022-02-07 19:04:05 +00:00
Carsten Haitzler 61b73a4ed6 shot - reset cnp flag once cnp'd
otherwise we segv assuming we are doing cnp still and access a null
cnp_file.

@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 200fea6e38 focus out - ignore all ungrabs as we unfocus a window that should be
this fixes a boundary case on mouse ungrabs

@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 7c0d3f2e2f xkb config - fix segv on close advanced mode dialog
didnt remove the lists with del callbacks that accessed the cfdata
struct to set lisrts to null on del before cfdata was freed...
callback hell. yay.

@fix
2022-02-07 19:03:09 +00:00
Christopher Michael fdd31a87ee e_about: Update copyright year 2022-02-07 19:03:09 +00:00
Carsten Haitzler 48a8a757e5 bz5 - dont ping devices on unpowered adapter
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler bbbf550df3 fileman - fix favorites to scale
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 0fa389fc52 bluez5 - dont need the force conenct option it seems - cant find a need
if connected AND trusted it should conenct again next time you power
them on etc. ... so .. let's remove extra option cruft we seemingly
don't need - less confusion for users

@fix
2022-02-07 19:03:09 +00:00
Marcel Hollerbach 0e64bbfc56 focus: leave frame focus setting here
that might cause bugs, however, everything else might end up in a
endless recursion.
2022-02-07 19:03:09 +00:00
Carsten Haitzler 75cf099ee5 bluez mod - on unload deregister gadcon class
fix leak of this class on unload.

@fix
2022-02-07 19:03:09 +00:00
Marcel Hollerbach 35b8f86906 focus: do not revert to another client when client is unfocused
This was a nice idea to fix most focus bugs at once. However, due to the
runtime of e many things can get "randomly" focused, for exmaple: volume
control on the frame, internal dialogs, config value screens when
grabbing for keys, widgets when they get created in a gadget. The list
is quite long. However, fixing all those little bugs is hard and partly
impossible as the behaviour is correct in the context of a toolkit, not
in the context of a compositor.

Long term we should split window-focus and canvas-focus from each other,
then bugs like these would not be a problem anymore.
2022-02-07 19:03:09 +00:00
maxerba 9881953815 Updating french and portuguese translations 2022-02-07 19:03:09 +00:00
Carsten Haitzler a034e94882 e focus - fix previous commit segv on no windows left
if window deleted is the focused on... oops - BOOM. not handled.
handle it. also revert x focus to root so bindings work.

fixes previous 2d86d75139

@fix
2022-02-07 19:03:09 +00:00
Marcel Hollerbach cabb9aff01 add forgotten header define 2022-02-07 19:03:09 +00:00
Marcel Hollerbach 2e99d11a1b e_client: revert focus instead of setting it to NULL
When closing a client a few different things can happen:
1. Client hides, this will destroy the e_client object, which will
   reverts focus to another client.
2. Client hook del, this will recover focus to the root window if no
   e_client is focused.
3. Client unfocus event, setted the focused to NULL and sets the focus field to 0.

when first 1 happens then 2 or 3 everything is fine. However, it seems
that sometimes first 3 happend, then 2, then 1. Which results in focus
beeing first NULL, then recovered to the root window, resulting in the
wrong things happening.
2022-02-07 19:03:09 +00:00
Carsten Haitzler 91877ed2d3 e_icon - switch from edj/std icon to custom img file properly
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 0842e8d33a systray - add more debugging to find clients that act oddly
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler b54511ca77 release - 0.25.1 2022-01-03 00:52:26 +00:00
Carsten Haitzler 2ee244376e e - border list - fix list to filter volume out
the volume style is not a border but the gadget - a mistake made long
ago when this was added. cant change now due to theme compat to filter
out in code

@fix
2022-01-03 00:47:29 +00:00
Carsten Haitzler 1077b09bb7 gesture - vm (vbox) detect hack to work around xorg no display bug
so... you go through wizard - only in vbox it seems (or maybe other
vm's - don't know - only tried vbox - this doesnt happen on real
systems). at the end e restarts... and it's blank. e is actually
rendering. you can screengrab (eg import -window root out.png) and see
the screen drawn just fine. xrandr is all set up right - everything is
kosher... but nothing will display except the curosr. xorg is just not
displaying rendered content. somehow e's gesture code and use of
logind/libinput to get inpiut devices for gestures tickles this xorg
bug. i don't quite know why as xorg doesnt seem to be complaining.
once you restart the xorg process everything works fine from there on.
it's some bug inside xorg that just refuses to display output.
manually changing resolution with xrandr will reset things and have
things render... until e restarts. a fukll xorg re-run is needed to
fix it... there just is nothing i can see that e is doing wrong or to
fix in e... so this is a workaround the xorg side by just not using
the gesture support if on a vm. they won't have touchpads anyway and
emulate mice so ... no real loss. this won't affect peolpe on real
systems and it may not always work as a workaround as it relies on
systemd-detect-virt or hostnamectl.

@fix
2022-01-03 00:47:24 +00:00
Carsten Haitzler 7bd186b84b windows - netxcloud app - fix constant show/hide cycles
e is not ignoring the first unmap event on this reparent ... this
fixes that and the nextcloud app stops making e sit and spin at full
cpu and flickering tasks etc.

@fix
2022-01-03 00:47:17 +00:00
Carsten Haitzler 6364cd3b59 release - 0.25 2021-12-26 11:45:13 +00:00
55 changed files with 1123 additions and 724 deletions

View File

@ -1,5 +1,5 @@
group "E_Config" struct { group "E_Config" struct {
value "config_version" int: 1000033; value "config_version" int: 1000035;
value "config_type" uint: 0; // this profile seems to just be super minimalist value "config_type" uint: 0; // this profile seems to just be super minimalist
value "desktop_default_name" string: "%i-%i"; value "desktop_default_name" string: "%i-%i";
value "desktop_default_window_profile" string: ""; value "desktop_default_window_profile" string: "";
@ -164,6 +164,7 @@ group "E_Config" struct {
value "theme_default_border_style" string: "default"; value "theme_default_border_style" string: "default";
value "desk_auto_switch" int: 0; value "desk_auto_switch" int: 0;
value "thumb_nice" int: 0; value "thumb_nice" int: 0;
value "gesture_open_input_devices" int: 0;
value "screen_limits" int: 0; value "screen_limits" int: 0;
value "menu_favorites_show" int: 1; value "menu_favorites_show" int: 1;
value "menu_apps_show" int: 1; value "menu_apps_show" int: 1;
@ -207,6 +208,7 @@ group "E_Config" struct {
value "backlight.timer" double: 30.0; value "backlight.timer" double: 30.0;
value "backlight.battery_timer" double: 20.0; value "backlight.battery_timer" double: 20.0;
value "backlight.idle_dim" uchar: 1; value "backlight.idle_dim" uchar: 1;
value "backlight.ddc" uchar: 0;
value "device_desktop" int: 0; value "device_desktop" int: 0;
value "device_auto_mount" int: 0; value "device_auto_mount" int: 0;
value "device_auto_open" int: 0; value "device_auto_open" int: 0;

View File

@ -1,5 +1,5 @@
group "E_Config" struct { group "E_Config" struct {
value "config_version" int: 1000033; value "config_version" int: 1000035;
value "config_type" uint: 3; value "config_type" uint: 3;
value "desktop_default_name" string: "%i-%i"; value "desktop_default_name" string: "%i-%i";
value "desktop_default_window_profile" string: "standard"; value "desktop_default_window_profile" string: "standard";
@ -164,6 +164,7 @@ group "E_Config" struct {
value "theme_default_border_style" string: "default"; value "theme_default_border_style" string: "default";
value "desk_auto_switch" int: 0; value "desk_auto_switch" int: 0;
value "thumb_nice" int: 0; value "thumb_nice" int: 0;
value "gesture_open_input_devices" int: 0;
value "screen_limits" int: 0; value "screen_limits" int: 0;
value "menu_favorites_show" int: 1; value "menu_favorites_show" int: 1;
value "menu_apps_show" int: 1; value "menu_apps_show" int: 1;
@ -200,6 +201,7 @@ group "E_Config" struct {
value "backlight.timer" double: 30.0; value "backlight.timer" double: 30.0;
value "backlight.battery_timer" double: 20.0; value "backlight.battery_timer" double: 20.0;
value "backlight.idle_dim" uchar: 1; value "backlight.idle_dim" uchar: 1;
value "backlight.ddc" uchar: 1;
value "deskenv.load_xrdb" uchar: 1; value "deskenv.load_xrdb" uchar: 1;
value "deskenv.load_xmodmap" uchar: 1; value "deskenv.load_xmodmap" uchar: 1;
value "deskenv.load_gnome" uchar: 0; value "deskenv.load_gnome" uchar: 0;

View File

@ -15,18 +15,6 @@ group "E_Config_Bindings" struct {
value "action" string: "backlight_adjust"; value "action" string: "backlight_adjust";
value "params" string: "10"; value "params" string: "10";
} }
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 0;
value "action" string: "dim_screen";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 1;
value "action" string: "undim_screen";
}
group "E_Config_Binding_Acpi" struct { group "E_Config_Binding_Acpi" struct {
value "context" int: 0; value "context" int: 0;
value "type" int: 3; value "type" int: 3;

View File

@ -1,5 +1,5 @@
group "E_Config" struct { group "E_Config" struct {
value "config_version" int: 1000033; value "config_version" int: 1000035;
value "config_type" uint: 3; value "config_type" uint: 3;
value "desktop_default_name" string: "%i-%i"; value "desktop_default_name" string: "%i-%i";
value "desktop_default_window_profile" string: "standard"; value "desktop_default_window_profile" string: "standard";
@ -164,6 +164,7 @@ group "E_Config" struct {
value "theme_default_border_style" string: "default"; value "theme_default_border_style" string: "default";
value "desk_auto_switch" int: 0; value "desk_auto_switch" int: 0;
value "thumb_nice" int: 0; value "thumb_nice" int: 0;
value "gesture_open_input_devices" int: 0;
value "screen_limits" int: 0; value "screen_limits" int: 0;
value "menu_favorites_show" int: 1; value "menu_favorites_show" int: 1;
value "menu_apps_show" int: 1; value "menu_apps_show" int: 1;
@ -200,6 +201,7 @@ group "E_Config" struct {
value "backlight.timer" double: 30.0; value "backlight.timer" double: 30.0;
value "backlight.battery_timer" double: 20.0; value "backlight.battery_timer" double: 20.0;
value "backlight.idle_dim" uchar: 1; value "backlight.idle_dim" uchar: 1;
value "backlight.ddc" uchar: 1;
value "deskenv.load_xrdb" uchar: 1; value "deskenv.load_xrdb" uchar: 1;
value "deskenv.load_xmodmap" uchar: 1; value "deskenv.load_xmodmap" uchar: 1;
value "deskenv.load_gnome" uchar: 0; value "deskenv.load_gnome" uchar: 0;

View File

@ -15,18 +15,6 @@ group "E_Config_Bindings" struct {
value "action" string: "backlight_adjust"; value "action" string: "backlight_adjust";
value "params" string: "10"; value "params" string: "10";
} }
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 0;
value "action" string: "dim_screen";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 1;
value "action" string: "undim_screen";
}
group "E_Config_Binding_Acpi" struct { group "E_Config_Binding_Acpi" struct {
value "context" int: 0; value "context" int: 0;
value "type" int: 3; value "type" int: 3;

View File

@ -5,14 +5,16 @@ Name[ca]=Mosaic (Standard Enlightenment)
Name[de]=Kacheln (Vorgabe Enlightenment) Name[de]=Kacheln (Vorgabe Enlightenment)
Name[fi]=Limittävä (Tavallinen Enlightenment) Name[fi]=Limittävä (Tavallinen Enlightenment)
Name[fr]=Pavage (Enlightenment standard) Name[fr]=Pavage (Enlightenment standard)
Name[it]=Tiling (a piastrelle) Name[it]=Griglia (Enlightenment standard)
Name[ms]=Penjubinan (Enlightenment Piawai) Name[ms]=Penjubinan (Enlightenment Piawai)
Name[pt]=Mosaico (Enlightenment padrão)
Name[ru]=Мозаичный режим (Стандартный Enlightenment) Name[ru]=Мозаичный режим (Стандартный Enlightenment)
Name[tr]=Döşeme (Standard Enlightenment) Name[tr]=Döşeme (Standard Enlightenment)
Comment=Tiling window management configuration for devices with keyboards and mice<br>like your average PC Desktop, Laptop or Netbook<br>with Enlightenment's traditional keyboard bindings<br>and mouse controls.<br>Default tiling bindings are: Win-key + Space, arrows, and left mouse button.<br>See the module settings for more information. Comment=Tiling window management configuration for devices with keyboards and mice<br>like your average PC Desktop, Laptop or Netbook<br>with Enlightenment's traditional keyboard bindings<br>and mouse controls.<br>Default tiling bindings are: Win-key + Space, arrows, and left mouse button.<br>See the module settings for more information.
Comment[ca]=Mosaic per la configuració de la gestió de finestres per dispositius amb teclats i ratolins <br>com ara PC d'escriptori, portàtil o netbook<br>amb associacions de tecles típiques d'Enlightenment<br>Tecles d'accés ràpid per defecte són: Tecla Win + Espai, fletxes i botó esquerre del ratolí <br>Veure la configuració del mòdul per obtenir més informació. Comment[ca]=Mosaic per la configuració de la gestió de finestres per dispositius amb teclats i ratolins <br>com ara PC d'escriptori, portàtil o netbook<br>amb associacions de tecles típiques d'Enlightenment<br>Tecles d'accés ràpid per defecte són: Tecla Win + Espai, fletxes i botó esquerre del ratolí <br>Veure la configuració del mòdul per obtenir més informació.
Comment[fr]=Gestion de la juxtaposition des fenêtres pour les machines avec clavier<br>et souris comme les PC de bureau et les portables,<br>offrant raccourcis et contrôles traditionnels.<br>Les raccourcis de pavage par défaut sont :<br>Win+Barre d'espace ou flèches, et bouton gauche de la souris.<br>Voir la configuration du module pour plus d'informations. Comment[fr]=Gestion de la juxtaposition des fenêtres pour les machines avec clavier<br>et souris comme les PC de bureau et les portables,<br>offrant raccourcis et contrôles traditionnels.<br>Les raccourcis de pavage par défaut sont :<br>Win+Barre d'espace ou flèches, et bouton gauche de la souris.<br>Voir la configuration du module pour plus d'informations.
Comment[it]=Configurazione con finestre in griglia per dispositivi con tastiere e mouse<br>come i normali PC Desktop, Laptop o Netbook<br>con le tradizionali scorciatoie di tastiera e controlli<br>del mouse di Enlightenment.<br>Le associazioni di tasti predefinite proprie di questa modalità sono:<br>Tasto-windows + spazio, frecce, e tasto sinistro del mouse.<br>Vedere le impostazioni del modulo Tiling per maggiori informazioni. Comment[it]=Configurazione con finestre in griglia per dispositivi con tastiere e mouse<br>come i normali PC Desktop, Laptop o Netbook<br>con le tradizionali scorciatoie di tastiera e controlli<br>del mouse di Enlightenment.<br>Le associazioni di tasti predefinite proprie di questa modalità sono:<br>Tasto-windows + spazio, frecce, e tasto sinistro del mouse.<br>Vedere le impostazioni del modulo Tiling per maggiori informazioni.
Comment[pt]=Configuração de gestão de janelas em mosaico para dispositivos com teclados e ratos<br>como os computadores de secretária ou portáteis com as tradicionais<br>combinações de teclas e controlos de rato do Enlightenment.<br>As combinações padrão em mosaico são:<br>Tecla Win-key + Espaço, setas, e botão esquerdo do rato.<br>Veja as definições do módulo para mais informações.
Comment[ms]=Konfigurasi pengurusan tetingkap berjubin untuk peranti dengan papan kekunci dan tetikus<br>seperti Komputer Desktop, Komputer Riba atau Netbook anda<br>dengan pengikatan papan kekunci tradisional Enlightenment<br>dan kawalan tetikus.<br>Pengikatan penjubinan lalai adalah: Win-key + Space, anak panah, dan butang tetikus kiri.<br>Sila rujuk tetapan modul untuk maklumat lanjut. Comment[ms]=Konfigurasi pengurusan tetingkap berjubin untuk peranti dengan papan kekunci dan tetikus<br>seperti Komputer Desktop, Komputer Riba atau Netbook anda<br>dengan pengikatan papan kekunci tradisional Enlightenment<br>dan kawalan tetikus.<br>Pengikatan penjubinan lalai adalah: Win-key + Space, anak panah, dan butang tetikus kiri.<br>Sila rujuk tetapan modul untuk maklumat lanjut.
Comment[ru]=Конфигурация с мозаичным режимом управления окнами<br>пригодная для устройств с клавиатурой и мышью,<br>таких как обычный компьютер или ноутбук,<br>с традиционными для Enlightenment'а сочетаниями<br>клавиш и управлением мышью.<br>Комбинации клавиш для мозаичного режима по умолчанию:<br>Кнопка Win + пробел, стрелки и левая кнопка мыши. Comment[ru]=Конфигурация с мозаичным режимом управления окнами<br>пригодная для устройств с клавиатурой и мышью,<br>таких как обычный компьютер или ноутбук,<br>с традиционными для Enlightenment'а сочетаниями<br>клавиш и управлением мышью.<br>Комбинации клавиш для мозаичного режима по умолчанию:<br>Кнопка Win + пробел, стрелки и левая кнопка мыши.
Comment[tr]=Enlightenment'in klavye ve fare kontrol bağlayıcıları ile kullanılan, ortalama <br>PC masaüstü, dizüstü ve netbook gibi klavye ve fare aygıtları bulunan cihazlar <br>için pencere döşeme yönetimi yapılandırması. Öntanımlı döşeme bağlayıcıları:<br>Win Tuşu + Boşluk, ok tuşları ve sol fare tuşu.<br>Daha fazla bilgi için modül ayarlarına bakınız. Comment[tr]=Enlightenment'in klavye ve fare kontrol bağlayıcıları ile kullanılan, ortalama <br>PC masaüstü, dizüstü ve netbook gibi klavye ve fare aygıtları bulunan cihazlar <br>için pencere döşeme yönetimi yapılandırması. Öntanımlı döşeme bağlayıcıları:<br>Win Tuşu + Boşluk, ok tuşları ve sol fare tuşu.<br>Daha fazla bilgi için modül ayarlarına bakınız.

View File

@ -1,6 +1,6 @@
##### project ##### project
project('enlightenment', 'c', project('enlightenment', 'c',
version : '0.24.99', version : '0.25.4',
license : 'BSD 2 clause', license : 'BSD 2 clause',
default_options: [ 'buildtype=release', 'c_std=gnu99', 'warning_level=2' ], default_options: [ 'buildtype=release', 'c_std=gnu99', 'warning_level=2' ],
meson_version : '>= 0.47.0') meson_version : '>= 0.47.0')
@ -30,7 +30,7 @@ else
config_h.set('E_RELEASE_BUILD' , '1') config_h.set('E_RELEASE_BUILD' , '1')
endif endif
efl_version = '>= 1.25.99' efl_version = '>= 1.26.0'
add_global_arguments('-DHAVE_CONFIG_H=1', language: 'c') add_global_arguments('-DHAVE_CONFIG_H=1', language: 'c')
dir_prefix = get_option('prefix') dir_prefix = get_option('prefix')
@ -105,7 +105,7 @@ suid_ldflags = []
dep_crypt = [] dep_crypt = []
if freebsd == true or host_machine.system().startswith('pcbsd') if freebsd == true or host_machine.system().startswith('pcbsd')
dep_crypt = cc.find_library('crypt', required: true) dep_crypt = cc.find_library('crypt', required: true)
if cc.links('', args: '-fPIE', link_args: '-pie') == true if cc.links('', args: ['-fPIE', '-pie']) == true
suid_cflags = '-fPIE' suid_cflags = '-fPIE'
suid_ldflags = '-pie' suid_ldflags = '-pie'
endif endif

288
po/fr.po
View File

@ -12,14 +12,14 @@
# rustyBSD <rustyBSD@gmx.fr>, 2012. # rustyBSD <rustyBSD@gmx.fr>, 2012.
# Raoul Hecky <raoul.hecky@gmail.com>, 2012. # Raoul Hecky <raoul.hecky@gmail.com>, 2012.
# Eliovir <eliovir@gmail.com>, 2013. # Eliovir <eliovir@gmail.com>, 2013.
# similar <similar@orange.fr>, 2019, 2020, 2021. # similar <similar@orange.fr>, 2019, 2020, 2021, 2022.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: enlightenment\n" "Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2021-11-26 14:22+0100\n" "POT-Creation-Date: 2022-01-20 19:40+0100\n"
"PO-Revision-Date: 2021-12-08 11:51+0100\n" "PO-Revision-Date: 2022-01-20 19:56+0100\n"
"Last-Translator: Philippe Jean Guillaumie <similar@orange.fr>\n" "Last-Translator: Philippe Jean Guillaumie <similar@orange.fr>\n"
"Language-Team: French\n" "Language-Team: French\n"
"Language: fr\n" "Language: fr\n"
@ -39,7 +39,7 @@ msgstr "À propos dEnlightenment"
#: src/bin/e_int_client_menu.c:244 src/bin/e_int_client_prop.c:81 #: src/bin/e_int_client_menu.c:244 src/bin/e_int_client_prop.c:81
#: src/bin/e_startup.c:110 src/bin/e_theme_about.c:22 #: src/bin/e_startup.c:110 src/bin/e_theme_about.c:22
#: src/modules/conf_bindings/e_int_config_edgebindings.c:872 #: src/modules/conf_bindings/e_int_config_edgebindings.c:872
#: src/modules/conf_bindings/e_int_config_swipebindings.c:908 #: src/modules/conf_bindings/e_int_config_swipebindings.c:919
#: src/modules/conf/e_conf.c:159 src/modules/everything/evry_plug_windows.c:370 #: src/modules/conf/e_conf.c:159 src/modules/everything/evry_plug_windows.c:370
#: src/modules/fileman/e_fwin.c:2657 src/modules/vkbd/e_kbd_cfg.c:188 #: src/modules/fileman/e_fwin.c:2657 src/modules/vkbd/e_kbd_cfg.c:188
msgid "Close" msgid "Close"
@ -55,12 +55,12 @@ msgstr "Enlightenment"
#: src/bin/e_about.c:26 #: src/bin/e_about.c:26
msgid "" msgid ""
"<title>Copyright &copy; 2000-2021, by the Enlightenment Development Team</" "<title>Copyright &copy; 2000-2022, by the Enlightenment Development Team</"
"><ps/><ps/>We hope you enjoy using this software as much as we enjoyed " "><ps/><ps/>We hope you enjoy using this software as much as we enjoyed "
"writing it.<ps/><ps/>To contact us please visit:<ps/><hilight>http://www." "writing it.<ps/><ps/>To contact us please visit:<ps/><hilight>http://www."
"enlightenment.org</><ps/><ps/>" "enlightenment.org</><ps/><ps/>"
msgstr "" msgstr ""
"<title>Copyright &copy; 2000-2021, par l'équipe de développement " "<title>Copyright &copy; 2000-2022, par l'équipe de développement "
"d'Enlightenment</><ps/><ps/>Nous espérons que vous aurez autant de plaisir à " "d'Enlightenment</><ps/><ps/>Nous espérons que vous aurez autant de plaisir à "
"utiliser ce logiciel que nous en avons eu à l'écrire.<ps/><ps/>Pour nous " "utiliser ce logiciel que nous en avons eu à l'écrire.<ps/><ps/>Pour nous "
"contacter, visitez :<ps/><hilight>http://www.enlightenment.org</><ps/><ps/>" "contacter, visitez :<ps/><hilight>http://www.enlightenment.org</><ps/><ps/>"
@ -107,8 +107,8 @@ msgstr "Tuer"
#: src/bin/e_actions.c:369 src/bin/e_actions.c:2272 src/bin/e_actions.c:2347 #: src/bin/e_actions.c:369 src/bin/e_actions.c:2272 src/bin/e_actions.c:2347
#: src/bin/e_actions.c:2407 src/bin/e_actions.c:2464 src/bin/e_actions.c:2526 #: src/bin/e_actions.c:2407 src/bin/e_actions.c:2464 src/bin/e_actions.c:2526
#: src/bin/e_actions.c:2628 src/bin/e_confirm_dialog.c:53 src/bin/e_fm.c:10706 #: src/bin/e_actions.c:2628 src/bin/e_confirm_dialog.c:53 src/bin/e_fm.c:10706
#: src/bin/e_fm.c:11059 src/modules/bluez5/e_mod_popup.c:548 #: src/bin/e_fm.c:11059 src/modules/bluez5/e_mod_popup.c:521
#: src/modules/bluez5/e_mod_popup.c:549 #: src/modules/bluez5/e_mod_popup.c:522
#: src/modules/quickaccess/e_mod_quickaccess.c:1308 #: src/modules/quickaccess/e_mod_quickaccess.c:1308
msgid "No" msgid "No"
msgstr "Non" msgstr "Non"
@ -128,7 +128,7 @@ msgstr "Voulez-vous vraiment quitter Enlightenment ?"
#: src/bin/e_actions.c:2270 src/bin/e_actions.c:2345 src/bin/e_actions.c:2405 #: src/bin/e_actions.c:2270 src/bin/e_actions.c:2345 src/bin/e_actions.c:2405
#: src/bin/e_actions.c:2462 src/bin/e_actions.c:2524 src/bin/e_actions.c:2626 #: src/bin/e_actions.c:2462 src/bin/e_actions.c:2524 src/bin/e_actions.c:2626
#: src/bin/e_confirm_dialog.c:52 src/bin/e_fm.c:10709 #: src/bin/e_confirm_dialog.c:52 src/bin/e_fm.c:10709
#: src/modules/bluez5/e_mod_popup.c:548 src/modules/bluez5/e_mod_popup.c:549 #: src/modules/bluez5/e_mod_popup.c:521 src/modules/bluez5/e_mod_popup.c:522
#: src/modules/quickaccess/e_mod_quickaccess.c:1308 #: src/modules/quickaccess/e_mod_quickaccess.c:1308
msgid "Yes" msgid "Yes"
msgstr "Oui" msgstr "Oui"
@ -910,11 +910,11 @@ msgstr "Agencement de clavier précédent"
msgid "Set As Background" msgid "Set As Background"
msgstr "Utiliser comme fond d'écran" msgstr "Utiliser comme fond d'écran"
#: src/bin/e_client.c:4915 #: src/bin/e_client.c:4923
msgid "Client Error!" msgid "Client Error!"
msgstr "Erreur du client !" msgstr "Erreur du client !"
#: src/bin/e_client.c:4915 #: src/bin/e_client.c:4923
msgid "Something has attempted to set a border when it shouldn't! Report this!" msgid "Something has attempted to set a border when it shouldn't! Report this!"
msgstr "" msgstr ""
"La tentative de définir une bordure est non conforme. Signalez ce bogue !" "La tentative de définir une bordure est non conforme. Signalez ce bogue !"
@ -935,9 +935,9 @@ msgstr "Choisir"
#: src/bin/e_desktop_editor.c:973 src/bin/e_entry_dialog.c:128 #: src/bin/e_desktop_editor.c:973 src/bin/e_entry_dialog.c:128
#: src/bin/e_fm.c:10213 src/bin/e_fm_prop.c:770 #: src/bin/e_fm.c:10213 src/bin/e_fm_prop.c:770
#: src/bin/e_import_config_dialog.c:361 src/bin/e_import_dialog.c:197 #: src/bin/e_import_config_dialog.c:361 src/bin/e_import_dialog.c:197
#: src/modules/bluez5/e_mod_popup.c:660 #: src/modules/bluez5/e_mod_popup.c:616
#: src/modules/conf_bindings/e_int_config_signalbindings.c:624 #: src/modules/conf_bindings/e_int_config_signalbindings.c:624
#: src/modules/conf_bindings/e_int_config_swipebindings.c:667 #: src/modules/conf_bindings/e_int_config_swipebindings.c:678
#: src/modules/conf_intl/e_int_config_imc_import.c:123 #: src/modules/conf_intl/e_int_config_imc_import.c:123
#: src/modules/conf_theme/e_int_config_theme_import.c:122 #: src/modules/conf_theme/e_int_config_theme_import.c:122
#: src/modules/connman/agent.c:254 #: src/modules/connman/agent.c:254
@ -971,7 +971,7 @@ msgstr "Définir l'opacité de la fenêtre actuelle"
msgid "Toggle focused client's redirect state" msgid "Toggle focused client's redirect state"
msgstr "(Dés)Activer l'état de redirection du client focalisé" msgstr "(Dés)Activer l'état de redirection du client focalisé"
#: src/bin/e_comp.c:1416 src/modules/bluez5/e_mod_popup.c:486 #: src/bin/e_comp.c:1416 src/modules/bluez5/e_mod_popup.c:459
msgid "Visible" msgid "Visible"
msgstr "Visible" msgstr "Visible"
@ -1022,11 +1022,11 @@ msgstr ""
"OpenGL 2.0 (ou OpenGL ES 2.0)<ps/>pour tirer profit de la composition avec " "OpenGL 2.0 (ou OpenGL ES 2.0)<ps/>pour tirer profit de la composition avec "
"OpenGL." "OpenGL."
#: src/bin/e_comp_x.c:5854 #: src/bin/e_comp_x.c:5855
msgid "Lock Failed" msgid "Lock Failed"
msgstr "Échec du verrouillage" msgstr "Échec du verrouillage"
#: src/bin/e_comp_x.c:5855 #: src/bin/e_comp_x.c:5856
msgid "" msgid ""
"Locking the desktop failed because some application<ps/>has grabbed either " "Locking the desktop failed because some application<ps/>has grabbed either "
"the keyboard or the mouse or both<ps/>and their grab is unable to be broken." "the keyboard or the mouse or both<ps/>and their grab is unable to be broken."
@ -1035,12 +1035,12 @@ msgstr ""
"soit le clavier ou la souris, soit les deux,<ps/>et cette réservation n'a pu " "soit le clavier ou la souris, soit les deux,<ps/>et cette réservation n'a pu "
"être annulée." "être annulée."
#: src/bin/e_comp_x.c:5873 #: src/bin/e_comp_x.c:5874
msgid "Another compositor is already running on your display server." msgid "Another compositor is already running on your display server."
msgstr "" msgstr ""
"Un autre compositeur est déjà fonctionnel sur votre serveur d'affichage." "Un autre compositeur est déjà fonctionnel sur votre serveur d'affichage."
#: src/bin/e_comp_x.c:5898 #: src/bin/e_comp_x.c:5899
msgid "" msgid ""
"Your display server does not support the compositor overlay window.\n" "Your display server does not support the compositor overlay window.\n"
"This is needed for Enlightenment to function." "This is needed for Enlightenment to function."
@ -1048,12 +1048,12 @@ msgstr ""
"Votre serveur d'affichage ne sait pas gérer le Composite Overlay Window.\n" "Votre serveur d'affichage ne sait pas gérer le Composite Overlay Window.\n"
"Cette fonction est essentielle au bon fonctionnement de E." "Cette fonction est essentielle au bon fonctionnement de E."
#: src/bin/e_comp_x.c:6032 #: src/bin/e_comp_x.c:6033
#, c-format #, c-format
msgid "Enlightenment cannot initialize X Connection...\n" msgid "Enlightenment cannot initialize X Connection...\n"
msgstr "Enlightenment ne parvient pas à initialiser une connexion à X...\n" msgstr "Enlightenment ne parvient pas à initialiser une connexion à X...\n"
#: src/bin/e_comp_x.c:6047 #: src/bin/e_comp_x.c:6048
msgid "" msgid ""
"Your display server does not support XComposite, or Ecore-X was built " "Your display server does not support XComposite, or Ecore-X was built "
"without XComposite support. Note that for composite support you will also " "without XComposite support. Note that for composite support you will also "
@ -1063,7 +1063,7 @@ msgstr ""
"sans le support de XComposite. Notez que vous avez également besoin de " "sans le support de XComposite. Notez que vous avez également besoin de "
"XRender et XFixes dans X11 et Ecore pour la prise en charge du composite." "XRender et XFixes dans X11 et Ecore pour la prise en charge du composite."
#: src/bin/e_comp_x.c:6056 #: src/bin/e_comp_x.c:6057
msgid "" msgid ""
"Your display server does not support XDamage or Ecore was built without " "Your display server does not support XDamage or Ecore was built without "
"XDamage support." "XDamage support."
@ -1071,7 +1071,7 @@ msgstr ""
"Votre serveur d'affichage ne supporte pas XDamage ou Ecore est compilé sans " "Votre serveur d'affichage ne supporte pas XDamage ou Ecore est compilé sans "
"le support de XDamage." "le support de XDamage."
#: src/bin/e_comp_x.c:6162 #: src/bin/e_comp_x.c:6163
msgid "Enlightenment cannot initialize the XSettings system.\n" msgid "Enlightenment cannot initialize the XSettings system.\n"
msgstr "Enlightenment ne parvient pas à initialiser le système XSettings.\n" msgstr "Enlightenment ne parvient pas à initialiser le système XSettings.\n"
@ -1098,7 +1098,7 @@ msgstr ""
#: src/bin/e_module.c:480 src/bin/e_module.c:707 src/bin/e_sys.c:982 #: src/bin/e_module.c:480 src/bin/e_module.c:707 src/bin/e_sys.c:982
#: src/bin/e_update.c:70 src/bin/e_utils.c:401 #: src/bin/e_update.c:70 src/bin/e_utils.c:401
#: src/modules/conf_bindings/e_int_config_signalbindings.c:623 #: src/modules/conf_bindings/e_int_config_signalbindings.c:623
#: src/modules/conf_bindings/e_int_config_swipebindings.c:666 #: src/modules/conf_bindings/e_int_config_swipebindings.c:677
#: src/modules/conf_intl/e_int_config_imc_import.c:119 #: src/modules/conf_intl/e_int_config_imc_import.c:119
#: src/modules/conf_theme/e_int_config_theme_import.c:118 #: src/modules/conf_theme/e_int_config_theme_import.c:118
#: src/modules/cpufreq/e_mod_main.c:551 src/modules/cpufreq/e_mod_main.c:619 #: src/modules/cpufreq/e_mod_main.c:551 src/modules/cpufreq/e_mod_main.c:619
@ -1192,7 +1192,7 @@ msgstr "Échec du déchiffrement."
msgid "The error is unknown to Enlightenment." msgid "The error is unknown to Enlightenment."
msgstr "Enlightenment ne reconnaît pas cette erreur." msgstr "Enlightenment ne reconnaît pas cette erreur."
#: src/bin/e_config.c:1247 #: src/bin/e_config.c:1250
msgid "" msgid ""
"Settings data needed upgrading. Your old settings have<ps/>been wiped and a " "Settings data needed upgrading. Your old settings have<ps/>been wiped and a "
"new set of defaults initialized. This<ps/>will happen regularly during " "new set of defaults initialized. This<ps/>will happen regularly during "
@ -1210,7 +1210,7 @@ msgstr ""
"configuration ne fournit pas.<ps/>Vous pouvez maintenant tout reconfigurer " "configuration ne fournit pas.<ps/>Vous pouvez maintenant tout reconfigurer "
"selon votre goût.<ps/>Désolé pour la gêne occasionnée.<ps/>" "selon votre goût.<ps/>Désolé pour la gêne occasionnée.<ps/>"
#: src/bin/e_config.c:1264 #: src/bin/e_config.c:1267
msgid "" msgid ""
"Your settings are NEWER than Enlightenment. This is very<ps/>strange. This " "Your settings are NEWER than Enlightenment. This is very<ps/>strange. This "
"should not happen unless you downgraded<ps/>Enlightenment or copied the " "should not happen unless you downgraded<ps/>Enlightenment or copied the "
@ -1226,7 +1226,7 @@ msgstr ""
"de<ps/>votre configuration ont été restaurées.<ps/>Désolé pour le " "de<ps/>votre configuration ont été restaurées.<ps/>Désolé pour le "
"désagrément.<ps/>" "désagrément.<ps/>"
#: src/bin/e_config.c:1380 #: src/bin/e_config.c:1383
msgid "" msgid ""
"Your bindings settings version does not match the current settings version." "Your bindings settings version does not match the current settings version."
"<ps/>As a result, all bindings have been reloaded from defaults.<ps/>Sorry " "<ps/>As a result, all bindings have been reloaded from defaults.<ps/>Sorry "
@ -1236,7 +1236,7 @@ msgstr ""
"attendue.<ps/>En conséquence, tous vos paramètres de raccourcis ont été " "attendue.<ps/>En conséquence, tous vos paramètres de raccourcis ont été "
"ramenés aux valeurs par défaut.<ps/>Désolé pour le désagrément.<ps/>" "ramenés aux valeurs par défaut.<ps/>Désolé pour le désagrément.<ps/>"
#: src/bin/e_config.c:2706 #: src/bin/e_config.c:2718
msgid "Settings Upgraded" msgid "Settings Upgraded"
msgstr "Configuration mise à niveau" msgstr "Configuration mise à niveau"
@ -1684,7 +1684,7 @@ msgstr "Copier"
#: src/modules/conf_bindings/e_int_config_keybindings.c:240 #: src/modules/conf_bindings/e_int_config_keybindings.c:240
#: src/modules/conf_bindings/e_int_config_mousebindings.c:290 #: src/modules/conf_bindings/e_int_config_mousebindings.c:290
#: src/modules/conf_bindings/e_int_config_signalbindings.c:789 #: src/modules/conf_bindings/e_int_config_signalbindings.c:789
#: src/modules/conf_bindings/e_int_config_swipebindings.c:934 #: src/modules/conf_bindings/e_int_config_swipebindings.c:945
#: src/modules/conf_dialogs/e_int_config_profiles.c:136 #: src/modules/conf_dialogs/e_int_config_profiles.c:136
#: src/modules/conf_dialogs/e_int_config_profiles.c:341 #: src/modules/conf_dialogs/e_int_config_profiles.c:341
#: src/modules/conf_paths/e_int_config_env.c:343 #: src/modules/conf_paths/e_int_config_env.c:343
@ -3183,7 +3183,7 @@ msgstr "Utilitaire"
#: src/bin/e_widget_filepreview.c:696 src/bin/e_widget_filepreview.c:697 #: src/bin/e_widget_filepreview.c:696 src/bin/e_widget_filepreview.c:697
#: src/bin/e_widget_filepreview.c:698 src/bin/e_widget_filepreview.c:728 #: src/bin/e_widget_filepreview.c:698 src/bin/e_widget_filepreview.c:728
#: src/bin/e_widget_filepreview.c:739 src/modules/battery/e_mod_main.c:265 #: src/bin/e_widget_filepreview.c:739 src/modules/battery/e_mod_main.c:265
#: src/modules/bluez5/e_mod_popup.c:537 src/modules/bluez5/e_mod_popup.c:538 #: src/modules/bluez5/e_mod_popup.c:510 src/modules/bluez5/e_mod_popup.c:511
#: src/modules/bluez5/e_mod_util.c:261 #: src/modules/bluez5/e_mod_util.c:261
#: src/modules/conf_bindings/e_int_config_acpibindings.c:429 #: src/modules/conf_bindings/e_int_config_acpibindings.c:429
#: src/modules/conf_bindings/e_int_config_edgebindings.c:1235 #: src/modules/conf_bindings/e_int_config_edgebindings.c:1235
@ -3289,7 +3289,7 @@ msgstr "Descendre"
#: src/modules/conf_bindings/e_int_config_keybindings.c:237 #: src/modules/conf_bindings/e_int_config_keybindings.c:237
#: src/modules/conf_bindings/e_int_config_mousebindings.c:288 #: src/modules/conf_bindings/e_int_config_mousebindings.c:288
#: src/modules/conf_bindings/e_int_config_signalbindings.c:786 #: src/modules/conf_bindings/e_int_config_signalbindings.c:786
#: src/modules/conf_bindings/e_int_config_swipebindings.c:927 #: src/modules/conf_bindings/e_int_config_swipebindings.c:938
#: src/modules/conf_dialogs/e_int_config_profiles.c:134 #: src/modules/conf_dialogs/e_int_config_profiles.c:134
#: src/modules/conf_paths/e_int_config_env.c:337 #: src/modules/conf_paths/e_int_config_env.c:337
#: src/modules/conf_shelves/e_int_config_shelf.c:137 #: src/modules/conf_shelves/e_int_config_shelf.c:137
@ -3853,7 +3853,7 @@ msgstr ""
"Enlightenment ne parvient pas à initialiser son système de périphériques " "Enlightenment ne parvient pas à initialiser son système de périphériques "
"d'entrée.\n" "d'entrée.\n"
#: src/bin/e_main.c:954 src/bin/e_main.c:1093 #: src/bin/e_main.c:954 src/bin/e_main.c:1096
msgid "Enlightenment cannot set up its module system.\n" msgid "Enlightenment cannot set up its module system.\n"
msgstr "Enlightenment ne parvient pas à initialiser son système de modules.\n" msgstr "Enlightenment ne parvient pas à initialiser son système de modules.\n"
@ -3912,16 +3912,16 @@ msgstr ""
"Enlightenment ne parvient pas à initialiser son système de classement de " "Enlightenment ne parvient pas à initialiser son système de classement de "
"fichiers.\n" "fichiers.\n"
#: src/bin/e_main.c:1101 src/modules/wizard/e_wizard.c:262 #: src/bin/e_main.c:1104 src/modules/wizard/e_wizard.c:262
msgid "Welcome to Enlightenment" msgid "Welcome to Enlightenment"
msgstr "Bienvenue dans Enlightenment" msgstr "Bienvenue dans Enlightenment"
#: src/bin/e_main.c:1249 #: src/bin/e_main.c:1252
#, c-format #, c-format
msgid "Version: %s\n" msgid "Version: %s\n"
msgstr "Version : %s\n" msgstr "Version : %s\n"
#: src/bin/e_main.c:1258 #: src/bin/e_main.c:1261
#, c-format #, c-format
msgid "" msgid ""
"Options:\n" "Options:\n"
@ -3976,7 +3976,7 @@ msgstr ""
"pour vous)<ps/>\n" "pour vous)<ps/>\n"
"-version<ps/>\n" "-version<ps/>\n"
#: src/bin/e_main.c:1312 #: src/bin/e_main.c:1315
msgid "" msgid ""
"You are executing enlightenment directly. This is\n" "You are executing enlightenment directly. This is\n"
"bad. Please do not execute the \"enlightenment\"\n" "bad. Please do not execute the \"enlightenment\"\n"
@ -3992,16 +3992,16 @@ msgstr ""
"des chemins, et de la gestion de tout autre service\n" "des chemins, et de la gestion de tout autre service\n"
"nécessaire avant le lancement d'Enlightenment.\n" "nécessaire avant le lancement d'Enlightenment.\n"
#: src/bin/e_main.c:1575 #: src/bin/e_main.c:1578
msgid "Enlightenment cannot create a compositor.\n" msgid "Enlightenment cannot create a compositor.\n"
msgstr "Enlightenment est incapable de créer un compositeur.\n" msgstr "Enlightenment est incapable de créer un compositeur.\n"
#: src/bin/e_main.c:1588 #: src/bin/e_main.c:1591
msgid "Enlightenment cannot set up its dnd system.\n" msgid "Enlightenment cannot set up its dnd system.\n"
msgstr "" msgstr ""
"Enlightenment ne parvient pas à initialiser son système de glisser-déposer.\n" "Enlightenment ne parvient pas à initialiser son système de glisser-déposer.\n"
#: src/bin/e_main.c:1749 #: src/bin/e_main.c:1752
#, c-format #, c-format
msgid "" msgid ""
"Enlightenment crashed early on start and has<ps/>been restarted. There was " "Enlightenment crashed early on start and has<ps/>been restarted. There was "
@ -4012,11 +4012,11 @@ msgstr ""
"module %s qui est à l'origine de<ps/>l'erreur a été désactivé. Il ne sera " "module %s qui est à l'origine de<ps/>l'erreur a été désactivé. Il ne sera "
"pas rechargé." "pas rechargé."
#: src/bin/e_main.c:1754 src/bin/e_main.c:1770 #: src/bin/e_main.c:1757 src/bin/e_main.c:1773
msgid "Enlightenment crashed early on start and has been restarted" msgid "Enlightenment crashed early on start and has been restarted"
msgstr "Enlightenment a planté en phase d'initialisation et a été relancé" msgstr "Enlightenment a planté en phase d'initialisation et a été relancé"
#: src/bin/e_main.c:1755 #: src/bin/e_main.c:1758
#, c-format #, c-format
msgid "" msgid ""
"Enlightenment crashed early on start and has been restarted.<ps/>There was " "Enlightenment crashed early on start and has been restarted.<ps/>There was "
@ -4027,7 +4027,7 @@ msgstr ""
"module nommé %s est à l'origine de l'erreur.<ps/><ps/> Ce module a été " "module nommé %s est à l'origine de l'erreur.<ps/><ps/> Ce module a été "
"désactivé et ne sera pas rechargé." "désactivé et ne sera pas rechargé."
#: src/bin/e_main.c:1763 #: src/bin/e_main.c:1766
msgid "" msgid ""
"Enlightenment crashed early on start and has<ps/>been restarted. All modules " "Enlightenment crashed early on start and has<ps/>been restarted. All modules "
"have been disabled<ps/>and will not be loaded to help remove any problem<ps/" "have been disabled<ps/>and will not be loaded to help remove any problem<ps/"
@ -4040,7 +4040,7 @@ msgstr ""
"dialogue de configuration des modules vous permettra<ps/>de recharger vos " "dialogue de configuration des modules vous permettra<ps/>de recharger vos "
"modules.\n" "modules.\n"
#: src/bin/e_main.c:1771 #: src/bin/e_main.c:1774
msgid "" msgid ""
"Enlightenment crashed early on start and has been restarted.<ps/>All modules " "Enlightenment crashed early on start and has been restarted.<ps/>All modules "
"have been disabled and will not be loaded to help<ps/>remove any problem " "have been disabled and will not be loaded to help<ps/>remove any problem "
@ -4741,7 +4741,7 @@ msgid "%3.1f%%"
msgstr "%3.1f%%" msgstr "%3.1f%%"
#: src/bin/e_widget_filepreview.c:413 #: src/bin/e_widget_filepreview.c:413
#: src/modules/conf_bindings/e_int_config_swipebindings.c:695 #: src/modules/conf_bindings/e_int_config_swipebindings.c:706
msgid "Length:" msgid "Length:"
msgstr "Taille :" msgstr "Taille :"
@ -5032,48 +5032,48 @@ msgstr ""
"rfkill pour le déblocage.<br>Vérifiez les utilisateurs et groupes pour ce " "rfkill pour le déblocage.<br>Vérifiez les utilisateurs et groupes pour ce "
"fichier." "fichier."
#: src/modules/bluez5/e_mod_popup.c:421 #: src/modules/bluez5/e_mod_popup.c:394
msgid "Adapters" msgid "Adapters"
msgstr "Adaptateurs" msgstr "Adaptateurs"
#: src/modules/bluez5/e_mod_popup.c:422 #: src/modules/bluez5/e_mod_popup.c:395
msgid "Devices" msgid "Devices"
msgstr "Périphériques" msgstr "Périphériques"
#: src/modules/bluez5/e_mod_popup.c:457 #: src/modules/bluez5/e_mod_popup.c:430
msgid "Unknown Address" msgid "Unknown Address"
msgstr "Adresse inconnue" msgstr "Adresse inconnue"
#: src/modules/bluez5/e_mod_popup.c:480 #: src/modules/bluez5/e_mod_popup.c:453
msgid "Power" msgid "Power"
msgstr "Alimentation" msgstr "Alimentation"
#: src/modules/bluez5/e_mod_popup.c:480 #: src/modules/bluez5/e_mod_popup.c:453
msgid "Enable power for this adapter" msgid "Enable power for this adapter"
msgstr "Activer l'alimentation pour cet adaptateur" msgstr "Activer l'alimentation pour cet adaptateur"
#: src/modules/bluez5/e_mod_popup.c:486 #: src/modules/bluez5/e_mod_popup.c:459
msgid "Make this adapter visible to other devices" msgid "Make this adapter visible to other devices"
msgstr "Rendre cet adaptateur visible aux autres appareils" msgstr "Rendre cet adaptateur visible aux autres appareils"
#: src/modules/bluez5/e_mod_popup.c:492 #: src/modules/bluez5/e_mod_popup.c:465
msgid "Scan" msgid "Scan"
msgstr "Recherche" msgstr "Recherche"
#: src/modules/bluez5/e_mod_popup.c:492 #: src/modules/bluez5/e_mod_popup.c:465
msgid "Scan for other devices" msgid "Scan for other devices"
msgstr "Rechercher d'autres appareils" msgstr "Rechercher d'autres appareils"
#: src/modules/bluez5/e_mod_popup.c:498 #: src/modules/bluez5/e_mod_popup.c:471
msgid "Pairable" msgid "Pairable"
msgstr "Appairable" msgstr "Appairable"
#: src/modules/bluez5/e_mod_popup.c:498 #: src/modules/bluez5/e_mod_popup.c:471
msgid "Allow this adapter to have other devices request to pair with it" msgid "Allow this adapter to have other devices request to pair with it"
msgstr "" msgstr ""
"Accepter les requêtes d'appairage d'autres appareils pour cet adaptateur" "Accepter les requêtes d'appairage d'autres appareils pour cet adaptateur"
#: src/modules/bluez5/e_mod_popup.c:531 #: src/modules/bluez5/e_mod_popup.c:504
#, c-format #, c-format
msgid "" msgid ""
"Address: %s (%s)<br>Services: %s%s%s%s%s%s%s%s%s<br>Trusted: %s<br>Blocked: " "Address: %s (%s)<br>Services: %s%s%s%s%s%s%s%s%s<br>Trusted: %s<br>Blocked: "
@ -5082,88 +5082,80 @@ msgstr ""
"Adresse : %s (%s)<br>Services : %s%s%s%s%s%s%s%s%s<br>De confiance : " "Adresse : %s (%s)<br>Services : %s%s%s%s%s%s%s%s%s<br>De confiance : "
"%s<br>Bloqué : %s<br>" "%s<br>Bloqué : %s<br>"
#: src/modules/bluez5/e_mod_popup.c:539 #: src/modules/bluez5/e_mod_popup.c:512
msgid "Limited-Discoverable " msgid "Limited-Discoverable "
msgstr "Découverte limitée " msgstr "Découverte limitée "
#: src/modules/bluez5/e_mod_popup.c:540 #: src/modules/bluez5/e_mod_popup.c:513
msgid "Positioning " msgid "Positioning "
msgstr "Localisation " msgstr "Localisation "
#: src/modules/bluez5/e_mod_popup.c:541 #: src/modules/bluez5/e_mod_popup.c:514
msgid "Networking " msgid "Networking "
msgstr "Réseau " msgstr "Réseau "
#: src/modules/bluez5/e_mod_popup.c:542 #: src/modules/bluez5/e_mod_popup.c:515
msgid "Rendering " msgid "Rendering "
msgstr "Rendu " msgstr "Rendu "
#: src/modules/bluez5/e_mod_popup.c:543 #: src/modules/bluez5/e_mod_popup.c:516
msgid "Capture " msgid "Capture "
msgstr "Capture " msgstr "Capture "
#: src/modules/bluez5/e_mod_popup.c:544 #: src/modules/bluez5/e_mod_popup.c:517
msgid "OBEX " msgid "OBEX "
msgstr "OBEX " msgstr "OBEX "
#: src/modules/bluez5/e_mod_popup.c:545 #: src/modules/bluez5/e_mod_popup.c:518
msgid "Audio " msgid "Audio "
msgstr "Audio " msgstr "Audio "
#: src/modules/bluez5/e_mod_popup.c:546 #: src/modules/bluez5/e_mod_popup.c:519
msgid "Telephony " msgid "Telephony "
msgstr "Téléphonie " msgstr "Téléphonie "
#: src/modules/bluez5/e_mod_popup.c:547 #: src/modules/bluez5/e_mod_popup.c:520
msgid "Information " msgid "Information "
msgstr "Information " msgstr "Information "
#: src/modules/bluez5/e_mod_popup.c:572 #: src/modules/bluez5/e_mod_popup.c:545
msgid "Stop this from being an unlock device" msgid "Stop this from being an unlock device"
msgstr "Oublier le déverrouillage du périphérique" msgstr "Oublier le déverrouillage du périphérique"
#: src/modules/bluez5/e_mod_popup.c:579 #: src/modules/bluez5/e_mod_popup.c:552
msgid "Make this auto unlock when detected (and lock when not)" msgid "Make this auto unlock when detected (and lock when not)"
msgstr "Déverrouillage auto. à la détection (sinon verrouillage)" msgstr "Déverrouillage auto. à la détection (sinon verrouillage)"
#: src/modules/bluez5/e_mod_popup.c:589 #: src/modules/bluez5/e_mod_popup.c:562
msgid "Stop this device from being forcefully connected"
msgstr "Oublier la connexion forcée du périphérique"
#: src/modules/bluez5/e_mod_popup.c:596
msgid "Force this device to be connected when detected"
msgstr "Forcer la connexion du périphérique à la détection"
#: src/modules/bluez5/e_mod_popup.c:606
msgid "Disconnect this device" msgid "Disconnect this device"
msgstr "Déconnecter cet appareil" msgstr "Déconnecter cet appareil"
#: src/modules/bluez5/e_mod_popup.c:613 #: src/modules/bluez5/e_mod_popup.c:569
msgid "Connect this device" msgid "Connect this device"
msgstr "Connecter cet appareil" msgstr "Connecter cet appareil"
#: src/modules/bluez5/e_mod_popup.c:623 #: src/modules/bluez5/e_mod_popup.c:579
msgid "Disrust this device" msgid "Disrust this device"
msgstr "Ne pas faire confiance à cet appareil" msgstr "Ne pas faire confiance à cet appareil"
#: src/modules/bluez5/e_mod_popup.c:630 #: src/modules/bluez5/e_mod_popup.c:586
msgid "Trust this device" msgid "Trust this device"
msgstr "Faire confiance à cet appareil" msgstr "Faire confiance à cet appareil"
#: src/modules/bluez5/e_mod_popup.c:642 src/modules/bluez5/e_mod_popup.c:703 #: src/modules/bluez5/e_mod_popup.c:598 src/modules/bluez5/e_mod_popup.c:659
#: src/modules/bluez5/e_mod_popup.c:725 #: src/modules/bluez5/e_mod_popup.c:681
msgid "Pair with this device" msgid "Pair with this device"
msgstr "Associer cet appareil" msgstr "Associer cet appareil"
#: src/modules/bluez5/e_mod_popup.c:652 #: src/modules/bluez5/e_mod_popup.c:608
msgid "Unpair with this device" msgid "Unpair with this device"
msgstr "Dissocier cet appareil" msgstr "Dissocier cet appareil"
#: src/modules/bluez5/e_mod_popup.c:711 src/modules/bluez5/e_mod_popup.c:732 #: src/modules/bluez5/e_mod_popup.c:667 src/modules/bluez5/e_mod_popup.c:688
msgid "Reject pairing" msgid "Reject pairing"
msgstr "Refuser l'association" msgstr "Refuser l'association"
#: src/modules/bluez5/e_mod_popup.c:764 #: src/modules/bluez5/e_mod_popup.c:720
msgid "Options for device like connect, pair etc." msgid "Options for device like connect, pair etc."
msgstr "Options de l'appareil telles que la connexion, l'association, etc." msgstr "Options de l'appareil telles que la connexion, l'association, etc."
@ -5384,7 +5376,7 @@ msgstr "Raccourcis ACPI"
#: src/modules/conf_bindings/e_int_config_keybindings.c:257 #: src/modules/conf_bindings/e_int_config_keybindings.c:257
#: src/modules/conf_bindings/e_int_config_mousebindings.c:308 #: src/modules/conf_bindings/e_int_config_mousebindings.c:308
#: src/modules/conf_bindings/e_int_config_signalbindings.c:802 #: src/modules/conf_bindings/e_int_config_signalbindings.c:802
#: src/modules/conf_bindings/e_int_config_swipebindings.c:949 #: src/modules/conf_bindings/e_int_config_swipebindings.c:960
msgid "Action" msgid "Action"
msgstr "Action" msgstr "Action"
@ -5393,7 +5385,7 @@ msgstr "Action"
#: src/modules/conf_bindings/e_int_config_keybindings.c:264 #: src/modules/conf_bindings/e_int_config_keybindings.c:264
#: src/modules/conf_bindings/e_int_config_mousebindings.c:315 #: src/modules/conf_bindings/e_int_config_mousebindings.c:315
#: src/modules/conf_bindings/e_int_config_signalbindings.c:809 #: src/modules/conf_bindings/e_int_config_signalbindings.c:809
#: src/modules/conf_bindings/e_int_config_swipebindings.c:956 #: src/modules/conf_bindings/e_int_config_swipebindings.c:967
msgid "Action Params" msgid "Action Params"
msgstr "Paramètres de l'action" msgstr "Paramètres de l'action"
@ -5604,7 +5596,7 @@ msgstr "Modifier"
#: src/modules/conf_bindings/e_int_config_keybindings.c:248 #: src/modules/conf_bindings/e_int_config_keybindings.c:248
#: src/modules/conf_bindings/e_int_config_mousebindings.c:298 #: src/modules/conf_bindings/e_int_config_mousebindings.c:298
#: src/modules/conf_bindings/e_int_config_signalbindings.c:793 #: src/modules/conf_bindings/e_int_config_signalbindings.c:793
#: src/modules/conf_bindings/e_int_config_swipebindings.c:938 #: src/modules/conf_bindings/e_int_config_swipebindings.c:949
msgid "Delete All" msgid "Delete All"
msgstr "Tout supprimer" msgstr "Tout supprimer"
@ -5612,7 +5604,7 @@ msgstr "Tout supprimer"
#: src/modules/conf_bindings/e_int_config_keybindings.c:252 #: src/modules/conf_bindings/e_int_config_keybindings.c:252
#: src/modules/conf_bindings/e_int_config_mousebindings.c:302 #: src/modules/conf_bindings/e_int_config_mousebindings.c:302
#: src/modules/conf_bindings/e_int_config_signalbindings.c:797 #: src/modules/conf_bindings/e_int_config_signalbindings.c:797
#: src/modules/conf_bindings/e_int_config_swipebindings.c:942 #: src/modules/conf_bindings/e_int_config_swipebindings.c:953
msgid "Restore Default Bindings" msgid "Restore Default Bindings"
msgstr "Restaurer les raccourcis par défaut" msgstr "Restaurer les raccourcis par défaut"
@ -5893,23 +5885,23 @@ msgstr "Raccourcis des signaux"
msgid "Signal Bindings Settings" msgid "Signal Bindings Settings"
msgstr "Paramètres des raccourcis de signaux" msgstr "Paramètres des raccourcis de signaux"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:664 #: src/modules/conf_bindings/e_int_config_swipebindings.c:675
msgid "Add Swipe Binding" msgid "Add Swipe Binding"
msgstr "Ajouter un raccourci de balayage" msgstr "Ajouter un raccourci de balayage"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:675 #: src/modules/conf_bindings/e_int_config_swipebindings.c:686
msgid "Direction:" msgid "Direction:"
msgstr "Direction :" msgstr "Direction :"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:685 #: src/modules/conf_bindings/e_int_config_swipebindings.c:696
msgid "Error:" msgid "Error:"
msgstr "Erreur :" msgstr "Erreur :"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:705 #: src/modules/conf_bindings/e_int_config_swipebindings.c:716
msgid "Fingers:" msgid "Fingers:"
msgstr "Doigts :" msgstr "Doigts :"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:753 #: src/modules/conf_bindings/e_int_config_swipebindings.c:764
#, c-format #, c-format
msgid "" msgid ""
"Using %d Fingers<br> <b>Direction</b> %f <b>Length</b> %f <b>Error</b> %f" "Using %d Fingers<br> <b>Direction</b> %f <b>Length</b> %f <b>Error</b> %f"
@ -5917,21 +5909,21 @@ msgstr ""
"Utilisation de %d doigts<br> <b>Direction</b> %f <b>Longueur</b> %f " "Utilisation de %d doigts<br> <b>Direction</b> %f <b>Longueur</b> %f "
"<b>Erreur</b> %f" "<b>Erreur</b> %f"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:769 #: src/modules/conf_bindings/e_int_config_swipebindings.c:780
msgid "Swipe recognition" msgid "Swipe recognition"
msgstr "Reconnaissance des mouvements de balayage" msgstr "Reconnaissance des mouvements de balayage"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:770 #: src/modules/conf_bindings/e_int_config_swipebindings.c:781
msgid "Do your swipe gesture.<br><br>Press <hilight>Escape</hilight> to abort" msgid "Do your swipe gesture.<br><br>Press <hilight>Escape</hilight> to abort"
msgstr "" msgstr ""
"Faites votre mouvement de balayage. <br><br>Appuyez sur <hilight>Échap</" "Faites votre mouvement de balayage. <br><br>Appuyez sur <hilight>Échap</"
"hilight> pour annuler." "hilight> pour annuler."
#: src/modules/conf_bindings/e_int_config_swipebindings.c:906 #: src/modules/conf_bindings/e_int_config_swipebindings.c:917
msgid "Swipe Bindings Help" msgid "Swipe Bindings Help"
msgstr "Aide" msgstr "Aide"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:907 #: src/modules/conf_bindings/e_int_config_swipebindings.c:918
msgid "" msgid ""
"Enlightenment is using libinput to detect swipe gesture. In case there are " "Enlightenment is using libinput to detect swipe gesture. In case there are "
"problems:<br> 1. Test gestures while executing \"libinput debug-events\" in " "problems:<br> 1. Test gestures while executing \"libinput debug-events\" in "
@ -5941,28 +5933,32 @@ msgid ""
"user is part of the libinput group.<br>" "user is part of the libinput group.<br>"
msgstr "" msgstr ""
"Enlightenment utilise libinput pour détecter les mouvements de balayage. En " "Enlightenment utilise libinput pour détecter les mouvements de balayage. En "
"cas de problème :<br> 1. Tester les mouvements avec « libinput debug-events " "cas de problème :<br> 1. Testez les mouvements avec « libinput debug-events "
"» dans un terminal. La sortie de la console indique la précision de votre " "» dans un terminal. La sortie de la console indique la précision de votre "
"matériel.<br>2. Guettez les erreurs dans la console, certains appareils " "matériel.<br>2. Guettez les erreurs dans la console, certains appareils "
"renvoient des résultats erronés avec libinput.<br>3. Si votre session " "renvoient des résultats erronés avec libinput.<br>3. Si votre session "
"actuelle se déroule dans Xorg, assurez-vous que votre utilisateur fait " "actuelle se déroule dans Xorg, assurez-vous que votre utilisateur fait "
"partie du groupe libinput.<br>" "partie du groupe libinput.<br>"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:921 #: src/modules/conf_bindings/e_int_config_swipebindings.c:932
#: src/modules/conf_bindings/e_mod_main.c:38 #: src/modules/conf_bindings/e_mod_main.c:38
msgid "Swipe Bindings" msgid "Swipe Bindings"
msgstr "Raccourcis de balayage" msgstr "Raccourcis de balayage"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:930 #: src/modules/conf_bindings/e_int_config_swipebindings.c:941
msgid "Add by props" msgid "Add by props"
msgstr "Ajout par props" msgstr "Ajout par props"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:944 #: src/modules/conf_bindings/e_int_config_swipebindings.c:955
#: src/modules/tiling/e_mod_config.c:219 #: src/modules/tiling/e_mod_config.c:219
msgid "Help" msgid "Help"
msgstr "Aide" msgstr "Aide"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:1031 #: src/modules/conf_bindings/e_int_config_swipebindings.c:977
msgid "Open input devices"
msgstr "Ouvrir les périphériques d'entrée "
#: src/modules/conf_bindings/e_int_config_swipebindings.c:1045
msgid "Swipe Bindings Settings" msgid "Swipe Bindings Settings"
msgstr "Paramètres des raccourcis de balayage" msgstr "Paramètres des raccourcis de balayage"
@ -6227,50 +6223,54 @@ msgstr "Animation"
msgid "Flip" msgid "Flip"
msgstr "Basculement" msgstr "Basculement"
#: src/modules/conf_display/e_int_config_dpms.c:46 #: src/modules/conf_display/e_int_config_dpms.c:47
msgid "Backlight Settings" msgid "Backlight Settings"
msgstr "Paramètres du rétroéclairage" msgstr "Paramètres du rétroéclairage"
#: src/modules/conf_display/e_int_config_dpms.c:143 #: src/modules/conf_display/e_int_config_dpms.c:147
msgid "Normal Backlight" msgid "Normal Backlight"
msgstr "Rétroéclairage normal" msgstr "Rétroéclairage normal"
#: src/modules/conf_display/e_int_config_dpms.c:145 #: src/modules/conf_display/e_int_config_dpms.c:149
#: src/modules/conf_display/e_int_config_dpms.c:151 #: src/modules/conf_display/e_int_config_dpms.c:155
#: src/modules/cpufreq/e_mod_config.c:106 #: src/modules/cpufreq/e_mod_config.c:106
#: src/modules/cpufreq/e_mod_config.c:112 #: src/modules/cpufreq/e_mod_config.c:112
#, c-format #, c-format
msgid "%3.0f" msgid "%3.0f"
msgstr "%3.0f" msgstr "%3.0f"
#: src/modules/conf_display/e_int_config_dpms.c:149 #: src/modules/conf_display/e_int_config_dpms.c:153
msgid "Dim Backlight" msgid "Dim Backlight"
msgstr "Rétroéclairage diminué" msgstr "Rétroéclairage diminué"
#: src/modules/conf_display/e_int_config_dpms.c:155 #: src/modules/conf_display/e_int_config_dpms.c:159
msgid "Desktop Monitor Support (DDC)"
msgstr "Prise en charge DDC du moniteur"
#: src/modules/conf_display/e_int_config_dpms.c:162
msgid "Idle Fade Time" msgid "Idle Fade Time"
msgstr "Délai d'inactivité avant diminution" msgstr "Délai d'inactivité avant diminution"
#: src/modules/conf_display/e_int_config_dpms.c:157 #: src/modules/conf_display/e_int_config_dpms.c:164
#: src/modules/conf_display/e_int_config_dpms.c:166 #: src/modules/conf_display/e_int_config_dpms.c:173
#, c-format #, c-format
msgid "%1.0f second(s)" msgid "%1.0f second(s)"
msgstr "%1.0f seconde(s)" msgstr "%1.0f seconde(s)"
#: src/modules/conf_display/e_int_config_dpms.c:162 #: src/modules/conf_display/e_int_config_dpms.c:169
msgid "Fade Time on Battery" msgid "Fade Time on Battery"
msgstr "Délai avant atténuation sur batterie" msgstr "Délai avant atténuation sur batterie"
#: src/modules/conf_display/e_int_config_dpms.c:172 #: src/modules/conf_display/e_int_config_dpms.c:179
msgid "Fade Time" msgid "Fade Time"
msgstr "Durée de la transition" msgstr "Durée de la transition"
#: src/modules/conf_display/e_int_config_dpms.c:174 #: src/modules/conf_display/e_int_config_dpms.c:181
#, c-format #, c-format
msgid "%1.1f second(s)" msgid "%1.1f second(s)"
msgstr "%1.1f seconde(s)" msgstr "%1.1f seconde(s)"
#: src/modules/conf_display/e_int_config_dpms.c:180 #: src/modules/conf_display/e_int_config_dpms.c:187
msgid "Dimming" msgid "Dimming"
msgstr "Atténuation" msgstr "Atténuation"
@ -6928,7 +6928,7 @@ msgstr "Demander"
#: src/modules/conf_randr/e_int_config_randr2.c:803 #: src/modules/conf_randr/e_int_config_randr2.c:803
#, c-format #, c-format
msgid "Hotplug Policy (%s)" msgid "Hotplug Policy (%s)"
msgstr "Gestion du branchement à chaud (%s)" msgstr "Gestion du branchement à chaud [%s]"
#: src/modules/conf_randr/e_int_config_randr2.c:881 #: src/modules/conf_randr/e_int_config_randr2.c:881
#: src/modules/mixer/emixer.c:1954 #: src/modules/mixer/emixer.c:1954
@ -6977,7 +6977,7 @@ msgstr "Restaurer la configuration au démarrage"
#: src/modules/conf_randr/e_int_config_randr2.c:1191 #: src/modules/conf_randr/e_int_config_randr2.c:1191
msgid "Monitor hotplug" msgid "Monitor hotplug"
msgstr "Connexion moniteur à chaud" msgstr "Branchement à chaud"
#: src/modules/conf_randr/e_int_config_randr2.c:1200 #: src/modules/conf_randr/e_int_config_randr2.c:1200
msgid "Lid Events" msgid "Lid Events"
@ -9164,7 +9164,7 @@ msgstr ""
msgid "Are you sure you want to delete this bar source?" msgid "Are you sure you want to delete this bar source?"
msgstr "Voulez-vous vraiment supprimer cette source ?" msgstr "Voulez-vous vraiment supprimer cette source ?"
#: src/modules/ibar/e_mod_main.c:370 src/modules/ibar/e_mod_main.c:2891 #: src/modules/ibar/e_mod_main.c:370 src/modules/ibar/e_mod_main.c:2902
msgid "IBar" msgid "IBar"
msgstr "IBar" msgstr "IBar"
@ -9185,7 +9185,7 @@ msgstr "Retirer de la barre"
msgid "Icon %s" msgid "Icon %s"
msgstr "Icône %s" msgstr "Icône %s"
#: src/modules/ibar/e_mod_main.c:2891 #: src/modules/ibar/e_mod_main.c:2902
msgid "Focus IBar" msgid "Focus IBar"
msgstr "Focaliser l'IBar" msgstr "Focaliser l'IBar"
@ -10051,103 +10051,103 @@ msgstr "Delai"
msgid "%1.1f sec" msgid "%1.1f sec"
msgstr "%1.1f s" msgstr "%1.1f s"
#: src/modules/shot/e_mod_edit.c:1960 #: src/modules/shot/e_mod_edit.c:1962
msgid "Tools" msgid "Tools"
msgstr "Outils" msgstr "Outils"
#: src/modules/shot/e_mod_edit.c:1972 #: src/modules/shot/e_mod_edit.c:1974
msgid "Select crop area" msgid "Select crop area"
msgstr "Choisir la zone à recadrer" msgstr "Choisir la zone à recadrer"
#: src/modules/shot/e_mod_edit.c:1973 #: src/modules/shot/e_mod_edit.c:1975
msgid "Modify objects" msgid "Modify objects"
msgstr "Modifier des objets" msgstr "Modifier des objets"
#: src/modules/shot/e_mod_edit.c:1974 #: src/modules/shot/e_mod_edit.c:1976
msgid "Delete objects" msgid "Delete objects"
msgstr "Supprimer des objets" msgstr "Supprimer des objets"
#: src/modules/shot/e_mod_edit.c:1983 #: src/modules/shot/e_mod_edit.c:1985
msgid "Single arrow line" msgid "Single arrow line"
msgstr "Ligne à flèche directionnelle" msgstr "Ligne à flèche directionnelle"
#: src/modules/shot/e_mod_edit.c:1984 #: src/modules/shot/e_mod_edit.c:1986
msgid "Double arrow line" msgid "Double arrow line"
msgstr "Ligne à flèche bidirectionnelle" msgstr "Ligne à flèche bidirectionnelle"
#: src/modules/shot/e_mod_edit.c:1985 #: src/modules/shot/e_mod_edit.c:1987
msgid "Plain line" msgid "Plain line"
msgstr "Ligne simple" msgstr "Ligne simple"
#: src/modules/shot/e_mod_edit.c:1986 #: src/modules/shot/e_mod_edit.c:1988
msgid "Solid box" msgid "Solid box"
msgstr "Rectangle plein" msgstr "Rectangle plein"
#: src/modules/shot/e_mod_edit.c:1988 #: src/modules/shot/e_mod_edit.c:1990
msgid "Malloc" msgid "Malloc"
msgstr "Malloc" msgstr "Malloc"
#: src/modules/shot/e_mod_edit.c:1989 #: src/modules/shot/e_mod_edit.c:1991
msgid "Malloc (evil)" msgid "Malloc (evil)"
msgstr "Malloc (en pétard)" msgstr "Malloc (en pétard)"
#: src/modules/shot/e_mod_edit.c:1990 #: src/modules/shot/e_mod_edit.c:1992
msgid "Pointing finger" msgid "Pointing finger"
msgstr "Doigt pointé" msgstr "Doigt pointé"
#: src/modules/shot/e_mod_edit.c:1991 #: src/modules/shot/e_mod_edit.c:1993
msgid "Enlightenment logo" msgid "Enlightenment logo"
msgstr "Logo Enlightenment" msgstr "Logo Enlightenment"
#: src/modules/shot/e_mod_edit.c:1993 #: src/modules/shot/e_mod_edit.c:1995
msgid "Foot" msgid "Foot"
msgstr "Pied" msgstr "Pied"
#: src/modules/shot/e_mod_edit.c:1994 #: src/modules/shot/e_mod_edit.c:1996
msgid "Silly walk" msgid "Silly walk"
msgstr "Démarche ridicule" msgstr "Démarche ridicule"
#: src/modules/shot/e_mod_edit.c:1995 #: src/modules/shot/e_mod_edit.c:1997
msgid "Box outline" msgid "Box outline"
msgstr "Contour rectangulaire" msgstr "Contour rectangulaire"
#: src/modules/shot/e_mod_edit.c:1996 #: src/modules/shot/e_mod_edit.c:1998
msgid "Circle outline" msgid "Circle outline"
msgstr "Contour circulaire" msgstr "Contour circulaire"
#: src/modules/shot/e_mod_edit.c:1998 #: src/modules/shot/e_mod_edit.c:2000
msgid "Plain text" msgid "Plain text"
msgstr "Texte simple" msgstr "Texte simple"
#: src/modules/shot/e_mod_edit.c:1999 #: src/modules/shot/e_mod_edit.c:2001
msgid "Text box" msgid "Text box"
msgstr "Encadrement" msgstr "Encadrement"
#: src/modules/shot/e_mod_edit.c:2000 #: src/modules/shot/e_mod_edit.c:2002
msgid "Text thought bubble" msgid "Text thought bubble"
msgstr "Bulle pensée" msgstr "Bulle pensée"
#: src/modules/shot/e_mod_edit.c:2001 #: src/modules/shot/e_mod_edit.c:2003
msgid "Text thought bubble 2" msgid "Text thought bubble 2"
msgstr "Bulle pensée 2" msgstr "Bulle pensée 2"
#: src/modules/shot/e_mod_edit.c:2003 #: src/modules/shot/e_mod_edit.c:2005
msgid "Speech bubble" msgid "Speech bubble"
msgstr "Bulle parlée" msgstr "Bulle parlée"
#: src/modules/shot/e_mod_edit.c:2004 #: src/modules/shot/e_mod_edit.c:2006
msgid "Speech bubble 2" msgid "Speech bubble 2"
msgstr "Bulle parlée 2" msgstr "Bulle parlée 2"
#: src/modules/shot/e_mod_edit.c:2005 #: src/modules/shot/e_mod_edit.c:2007
msgid "Kaboom splat" msgid "Kaboom splat"
msgstr "Splash" msgstr "Splash"
#: src/modules/shot/e_mod_edit.c:2006 #: src/modules/shot/e_mod_edit.c:2008
msgid "Pow explode" msgid "Pow explode"
msgstr "Explosion" msgstr "Explosion"
#: src/modules/shot/e_mod_edit.c:2014 #: src/modules/shot/e_mod_edit.c:2016
msgid "Color" msgid "Color"
msgstr "Couleur" msgstr "Couleur"
@ -10906,3 +10906,9 @@ msgstr "Impossible d'établir une connexion avec une socket X11."
#: src/modules/xwayland/e_mod_main.c:347 #: src/modules/xwayland/e_mod_main.c:347
msgid "Cannot launch XWayland from X11 display." msgid "Cannot launch XWayland from X11 display."
msgstr "Impossible de lancer XWayland depuis l'affichage X11." msgstr "Impossible de lancer XWayland depuis l'affichage X11."
#~ msgid "Stop this device from being forcefully connected"
#~ msgstr "Oublier la connexion forcée du périphérique"
#~ msgid "Force this device to be connected when detected"
#~ msgstr "Forcer la connexion du périphérique à la détection"

392
po/it.po

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ e_about_new(void)
snprintf snprintf
(buf, sizeof(buf), "%s%s", (buf, sizeof(buf), "%s%s",
_( _(
"<title>Copyright &copy; 2000-2021, by the Enlightenment " "<title>Copyright &copy; 2000-2022, by the Enlightenment "
"Development Team</><ps/>" "Development Team</><ps/>"
"<ps/>" "<ps/>"
"We hope you enjoy using this software as much as we enjoyed " "We hope you enjoy using this software as much as we enjoyed "

View File

@ -3285,15 +3285,18 @@ ACT_FN_GO(window_focus, EINA_UNUSED)
} }
if (dir == -1) /* next */ if (dir == -1) /* next */
{ {
if (ec_next) e_client_focus_set_with_pointer(ec_next); if (ec_next) goto do_focus;
else if (ec_first) e_client_focus_set_with_pointer(ec_first); else if (ec_first) ec_next = ec_first;
else return;
} }
else if (dir == -2) else if (dir == -2)
{ {
if (ec_prev) e_client_focus_set_with_pointer(ec_prev); if (ec_prev) ec_next = ec_prev;
else if (ec_last) e_client_focus_set_with_pointer(ec_last); else if (ec_last) ec_next = ec_last;
else return;
} }
return; else return;
goto do_focus;
} }
cx = ec_orig->x + (ec_orig->w / 2); cx = ec_orig->x + (ec_orig->w / 2);
@ -3368,8 +3371,18 @@ ACT_FN_GO(window_focus, EINA_UNUSED)
ec_next = ec; ec_next = ec;
distance = d; distance = d;
} }
do_focus:
if (!ec_next) return;
if (ec_next) e_client_focus_set_with_pointer(ec_next); ec = ec_next;
if (ec->iconic) e_client_uniconify(ec);
if (ec->shaded) e_client_unshade(ec, ec->shade_dir);
if (!ec->lock_user_stacking)
{
evas_object_raise(ec->frame);
e_client_raise_latest_set(ec);
}
e_client_focus_set_with_pointer(ec);
} }
/* local subsystem globals */ /* local subsystem globals */

View File

@ -254,7 +254,8 @@ _backlight_devices_device_set(Backlight_Device *bd, double val)
// fprintf(stderr, "BL: ddc bklight %1.3f @ %1.3f\n", bd->val, ecore_time_get()); // fprintf(stderr, "BL: ddc bklight %1.3f @ %1.3f\n", bd->val, ecore_time_get());
if (bd->ddc_max) fval = bd->val * (double)bd->ddc_max; if (bd->ddc_max) fval = bd->val * (double)bd->ddc_max;
else fval = bd->val * 100.0; else fval = bd->val * 100.0;
e_system_send("ddc-val-set", "%s %i %i", bd->dev + 4, 0x10, (int)(fval)); // backlight val in e_system_ddc.c if (e_config->backlight.ddc)
e_system_send("ddc-val-set", "%s %i %i", bd->dev + 4, 0x10, (int)(fval)); // backlight val in e_system_ddc.c
ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL); ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
} }
else else

View File

@ -400,8 +400,8 @@ _e_client_mouse_action_end(E_Client *ec)
E_FREE_FUNC(ec->cur_mouse_action, e_object_unref); E_FREE_FUNC(ec->cur_mouse_action, e_object_unref);
} }
static void E_API void
_e_client_revert_focus(E_Client *ec) e_client_revert_focus(E_Client *ec)
{ {
E_Client *pec; E_Client *pec;
E_Desk *desk; E_Desk *desk;
@ -433,12 +433,17 @@ _e_client_revert_focus(E_Client *ec)
} }
} }
} }
else if ((ec->parent) && else if ((ec->parent) && (ec->parent->desk == desk))
(ec->parent->desk == desk) && (ec->parent->modal == ec))
{ {
evas_object_focus_set(ec->parent->frame, 1); E_Client *goal_ec = NULL;
if (ec->parent->modal != ec && ec->parent->modal) {
goal_ec = ec->parent->modal;
} else {
goal_ec = ec->parent;
}
evas_object_focus_set(goal_ec->frame, 1);
if (e_config->raise_on_revert_focus) if (e_config->raise_on_revert_focus)
evas_object_raise(ec->parent->frame); evas_object_raise(goal_ec->frame);
} }
else if (e_config->focus_revert_on_hide_or_close) else if (e_config->focus_revert_on_hide_or_close)
{ {
@ -459,6 +464,14 @@ _e_client_revert_focus(E_Client *ec)
static void static void
_e_client_free(E_Client *ec) _e_client_free(E_Client *ec)
{ {
if (focused == ec)
{
focused = NULL;
#ifndef HAVE_WAYLAND_ONLY
if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
ecore_x_window_focus(e_comp->root);
#endif
}
if (ec->desk) if (ec->desk)
ec->desk->fullscreen_clients = eina_list_remove(ec->desk->fullscreen_clients, ec); ec->desk->fullscreen_clients = eina_list_remove(ec->desk->fullscreen_clients, ec);
if (ec->restore_zone_id) if (ec->restore_zone_id)
@ -573,6 +586,8 @@ _e_client_free(E_Client *ec)
if (ec->stack.prev) ec->stack.prev->stack.next = ec->stack.next; if (ec->stack.prev) ec->stack.prev->stack.next = ec->stack.next;
if (ec->stack.next) ec->stack.next->stack.prev = ec->stack.prev; if (ec->stack.next) ec->stack.next->stack.prev = ec->stack.prev;
E_FREE_FUNC(ec->ignore_first_unmap_clear_timer, ecore_timer_del);
ec->e.state.profile.wait_desk = NULL; ec->e.state.profile.wait_desk = NULL;
evas_object_del(ec->frame); evas_object_del(ec->frame);
E_OBJECT(ec)->references--; E_OBJECT(ec)->references--;
@ -644,7 +659,7 @@ _e_client_del(E_Client *ec)
evas_object_hide(ec->internal_elm_win); evas_object_hide(ec->internal_elm_win);
if (ec->focused) if (ec->focused)
_e_client_revert_focus(ec); e_client_revert_focus(ec);
if (ec->frame) evas_object_focus_set(ec->frame, 0); if (ec->frame) evas_object_focus_set(ec->frame, 0);
E_FREE_FUNC(ec->ping_poller, ecore_poller_del); E_FREE_FUNC(ec->ping_poller, ecore_poller_del);
@ -1560,7 +1575,7 @@ _e_client_cb_evas_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
if (!ec->hidden) if (!ec->hidden)
{ {
if (ec->focused) if (ec->focused)
_e_client_revert_focus(ec); e_client_revert_focus(ec);
} }
ec->want_focus = ec->take_focus = 0; ec->want_focus = ec->take_focus = 0;
@ -4520,6 +4535,7 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
evas_object_layer_set(ec->frame, E_LAYER_CLIENT_FULLSCREEN); evas_object_layer_set(ec->frame, E_LAYER_CLIENT_FULLSCREEN);
ec->fullscreen = 1; ec->fullscreen = 1;
ec->fullscreen_time = ecore_time_get();
ec->unfullscreen_forced = 0; ec->unfullscreen_forced = 0;
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
if ((eina_list_count(e_comp->zones) > 1) || if ((eina_list_count(e_comp->zones) > 1) ||
@ -4642,7 +4658,7 @@ e_client_iconify(E_Client *ec)
{ {
if (!ec->new_client) if (!ec->new_client)
{ {
_e_client_revert_focus(ec); e_client_revert_focus(ec);
evas_object_hide(ec->frame); evas_object_hide(ec->frame);
} }
e_client_urgent_set(ec, ec->icccm.urgent); e_client_urgent_set(ec, ec->icccm.urgent);

View File

@ -302,6 +302,7 @@ struct E_Client
unsigned char ignore_first_unmap; unsigned char ignore_first_unmap;
E_Pointer_Mode resize_mode; E_Pointer_Mode resize_mode;
Ecore_Timer *ignore_first_unmap_clear_timer;
struct struct
{ {
@ -693,6 +694,8 @@ struct E_Client
int x, y; int x, y;
} drag; } drag;
double fullscreen_time;
Ecore_Timer *raise_timer; Ecore_Timer *raise_timer;
E_Client_Move_Intercept_Cb move_intercept_cb; E_Client_Move_Intercept_Cb move_intercept_cb;
E_Remember *remember; E_Remember *remember;
@ -815,6 +818,7 @@ E_API Eina_Bool e_client_focus_track_enabled(void);
E_API void e_client_focus_track_freeze(void); E_API void e_client_focus_track_freeze(void);
E_API void e_client_focus_track_thaw(void); E_API void e_client_focus_track_thaw(void);
E_API void e_client_refocus(void); E_API void e_client_refocus(void);
E_API void e_client_revert_focus(E_Client *ec);
E_API void e_client_focus_set_with_pointer(E_Client *ec); E_API void e_client_focus_set_with_pointer(E_Client *ec);
E_API void e_client_activate(E_Client *ec, Eina_Bool just_do_it); E_API void e_client_activate(E_Client *ec, Eina_Bool just_do_it);
E_API E_Client *e_client_focused_get(void); E_API E_Client *e_client_focused_get(void);

View File

@ -756,6 +756,68 @@ _e_comp_shapes_update_object_checker_function_thingy(Evas_Object *o)
return EINA_FALSE; return EINA_FALSE;
} }
static Eina_Bool
_tiler_obj_visible(Evas_Object *o)
{
Evas_Object *o2;
if (!evas_object_visible_get(o)) return EINA_FALSE;
o2 = evas_object_clip_get(o);
if (!o2) return EINA_TRUE;
return _tiler_obj_visible(o2);
}
static void
_tiler_add_input_sub(Evas_Object *par, Eina_Tiler *tb)
{
Eina_List *objs = evas_object_smart_members_get(par);
Evas_Coord x, y, w, h;
Evas_Object *o;
const char *type;
void *sd;
EINA_LIST_FREE(objs, o)
{
if (evas_object_clipees_has(o)) continue;
if ((_tiler_obj_visible(o)) &&
(!evas_object_pass_events_get(o)))
{
type = evas_object_type_get(o);
if (type)
{
if (!strcmp(type, "rectangle"))
{
if (!evas_object_clipees_has(o))
{
evas_object_geometry_get(o, &x, &y, &w, &h);
eina_tiler_rect_add(tb, &(Eina_Rectangle){x, y, w, h});
}
}
else if ((!strcmp(type, "image")) ||
(!strcmp(type, "text")) ||
(!strcmp(type, "textblock"))
)
{
const char *name = evas_object_name_get(o);
evas_object_geometry_get(o, &x, &y, &w, &h);
if ((name) && (!strcmp(name, "cw->obj")))
eina_tiler_rect_del(tb, &(Eina_Rectangle){x, y, w, h});
else
eina_tiler_rect_add(tb, &(Eina_Rectangle){x, y, w, h});
}
else if ((!strcmp(type, "edje")) ||
(!strcmp(type, "e_zoomap")))
{
sd = evas_object_smart_data_get(o);
if (sd) _tiler_add_input_sub(o, tb);
}
}
}
}
}
static void static void
_e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb, Eina_List **rl) _e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb, Eina_List **rl)
{ {
@ -823,6 +885,7 @@ _e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb
eina_tiler_rect_del(tb, &(Eina_Rectangle){x, y, w, h}); eina_tiler_rect_del(tb, &(Eina_Rectangle){x, y, w, h});
SHAPE_INF("DEL: %d,%d@%dx%d", x, y, w, h); SHAPE_INF("DEL: %d,%d@%dx%d", x, y, w, h);
} }
_tiler_add_input_sub(ec->frame, tb);
return; return;
} }
@ -849,6 +912,8 @@ _e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb
eina_tiler_rect_del(tb, &(Eina_Rectangle){ec->client.x, ec->client.y, ec->client.w, ec->client.h}); eina_tiler_rect_del(tb, &(Eina_Rectangle){ec->client.x, ec->client.y, ec->client.w, ec->client.h});
SHAPE_INF("DEL: %d,%d@%dx%d", ec->client.x, ec->client.y, ec->client.w, ec->client.h); SHAPE_INF("DEL: %d,%d@%dx%d", ec->client.x, ec->client.y, ec->client.w, ec->client.h);
} }
_tiler_add_input_sub(ec->frame, tb);
} }
static void static void

View File

@ -749,7 +749,7 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw)
else else
edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj); edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj);
} }
if (cw->input_objs) if ((cw->input_objs) || ((cw->ec) && (cw->ec->shaped)))
evas_object_pass_events_set(cw->obj, 1); evas_object_pass_events_set(cw->obj, 1);
else else
evas_object_pass_events_set(cw->obj, 0); evas_object_pass_events_set(cw->obj, 0);
@ -972,7 +972,7 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj)
} }
if (e_object_is_del(E_OBJECT(ec))) return; if (e_object_is_del(E_OBJECT(ec))) return;
/* shaped clients get precise mouse events to handle transparent pixels */ /* shaped clients get precise mouse events to handle transparent pixels */
evas_object_precise_is_inside_set(cw->obj, ec->shaped || ec->shaped_input); evas_object_precise_is_inside_set(cw->obj, ec->shaped);
//INF("%p PX(%dx%d) EC(%dx%d) CW(%dx%d)", ec, pw, ph, ec->w, ec->h, cw->w, cw->h); //INF("%p PX(%dx%d) EC(%dx%d) CW(%dx%d)", ec, pw, ph, ec->w, ec->h, cw->w, cw->h);
//e_comp_object_frame_wh_adjust(cw->smart_obj, pw, ph, &pw, &ph); //e_comp_object_frame_wh_adjust(cw->smart_obj, pw, ph, &pw, &ph);
@ -1877,8 +1877,9 @@ _e_comp_intercept_focus(void *data, Evas_Object *obj, Eina_Bool focus)
} }
else else
{ {
if (e_client_focused_get() == ec) if (e_client_focused_get() == ec) {
e_client_focused_set(NULL); e_client_focused_set(NULL);
}
} }
evas_object_focus_set(obj, focus); evas_object_focus_set(obj, focus);
} }
@ -2352,8 +2353,9 @@ _e_comp_smart_hide(Evas_Object *obj)
edje_object_play_set(cw->frame_object, 0); edje_object_play_set(cw->frame_object, 0);
} }
/* ensure focus-out */ /* ensure focus-out */
if (cw->ec->focused) if (cw->ec->focused) {
evas_object_focus_set(cw->ec->frame, 0); e_client_revert_focus(cw->ec);
}
e_comp_render_queue(); //force nocomp recheck e_comp_render_queue(); //force nocomp recheck
e_comp_shape_queue(); e_comp_shape_queue();
} }

View File

@ -962,7 +962,7 @@ _e_comp_wl_clipboard_create(void)
E_API void E_API void
e_comp_wl_data_device_send_enter(E_Client *ec) e_comp_wl_data_device_send_enter(E_Client *ec)
{ {
struct wl_resource *data_device_res, *offer_res; struct wl_resource *data_device_res = NULL, *offer_res = NULL;
uint32_t serial; uint32_t serial;
int x, y; int x, y;

View File

@ -2601,34 +2601,60 @@ _e_comp_x_powersave(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
static void static void
_e_comp_x_mouse_in_job(void *d EINA_UNUSED) _e_comp_x_mouse_in_job(void *d EINA_UNUSED)
{ {
E_Client *ecf = e_client_focused_get();
// if we're fullscreen and see a mout out within a short time of having
// set this client ot fullscreen - it's a "false flag" that is a bi-product
// of things moving around while becoming fullscreen, so ignore it
if ((ecf) && (ecf != mouse_client))
{
if ((ecf->fullscreen) &&
(ecore_time_get() - ecf->fullscreen_time) < 0.2) // 0.2sec enough
goto done;
}
if (mouse_client) if (mouse_client)
e_client_mouse_in(mouse_client, e_comp_canvas_x_root_adjust(mouse_in_coords.x), e_comp_canvas_y_root_adjust(mouse_in_coords.y)); e_client_mouse_in(mouse_client, e_comp_canvas_x_root_adjust(mouse_in_coords.x), e_comp_canvas_y_root_adjust(mouse_in_coords.y));
done:
mouse_in_job = NULL; mouse_in_job = NULL;
} }
static E_Client *
_e_comp_x_e_client_obj_get(Evas_Object *o)
{
Evas_Object *par;
if (evas_object_data_get(o, "comp_object"))
return e_comp_object_client_get(o);
par = evas_object_smart_parent_get(o);
if (!par) return NULL;
return _e_comp_x_e_client_obj_get(par);
}
static Eina_Bool static Eina_Bool
_e_comp_x_mouse_in_fix_check_timer_cb(void *data EINA_UNUSED) _e_comp_x_mouse_in_fix_check_timer_cb(void *data EINA_UNUSED)
{ {
E_Client *ec = NULL, *cec; E_Client *ec = NULL, *cec;
Eina_List *l, *in_list;
Evas_Object *o;
int x, y; int x, y;
mouse_in_fix_check_timer = NULL; mouse_in_fix_check_timer = NULL;
if (e_grabinput_key_win_get() || e_grabinput_mouse_win_get()) if (e_grabinput_key_win_get() || e_grabinput_mouse_win_get())
return EINA_FALSE; return EINA_FALSE;
ecore_evas_pointer_xy_get(e_comp->ee, &x, &y); ecore_evas_pointer_xy_get(e_comp->ee, &x, &y);
E_CLIENT_REVERSE_FOREACH(cec)
in_list = evas_tree_objects_at_xy_get(e_comp->evas, NULL, x, y);
EINA_LIST_FOREACH(in_list, l, o)
{ {
/* If a border was specified which should be excluded from the list ec = _e_comp_x_e_client_obj_get(o);
* (because it will be closed shortly for example), skip */ if (ec)
if ((!e_client_util_desk_visible(cec, e_desk_current_get(e_zone_current_get())))) continue; {
if (!evas_object_visible_get(cec->frame)) continue; if ((!e_client_util_desk_visible
if (!E_INSIDE(x, y, cec->x, cec->y, cec->w, cec->h)) (ec, e_desk_current_get(e_zone_current_get())))) continue;
continue; break;
/* If the layer is higher, the position of the window is higher }
* (always on top vs always below) */
if (!ec || (cec->layer > ec->layer))
ec = cec;
} }
eina_list_free(in_list);
if (ec) if (ec)
{ {
mouse_client = ec; mouse_client = ec;
@ -2690,6 +2716,12 @@ _e_comp_x_mouse_out(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
ec = _e_comp_x_client_find_by_window(ev->win); ec = _e_comp_x_client_find_by_window(ev->win);
if (!ec) return ECORE_CALLBACK_RENEW; if (!ec) return ECORE_CALLBACK_RENEW;
// if we're fullscreen and see a mout out within a short time of having
// set this client ot fullscreen - it's a "false flag" that is a bi-product
// of things moving around while becoming fullscreen, so ignore it
if ((ec->fullscreen) &&
(ecore_time_get() - ec->fullscreen_time) < 0.2) // 0.2sec enough
return ECORE_CALLBACK_RENEW;
if (_e_comp_x_client_data_get(ec)->deleted) return ECORE_CALLBACK_RENEW; if (_e_comp_x_client_data_get(ec)->deleted) return ECORE_CALLBACK_RENEW;
if (mouse_client == ec) if (mouse_client == ec)
{ {
@ -2854,6 +2886,8 @@ _e_comp_x_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
else if (ev->detail == ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL) else if (ev->detail == ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL)
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
else if (ev->detail == ECORE_X_EVENT_DETAIL_POINTER)
return ECORE_CALLBACK_PASS_ON;
} }
else if (ev->mode == ECORE_X_EVENT_MODE_GRAB) else if (ev->mode == ECORE_X_EVENT_MODE_GRAB)
{ {
@ -2872,10 +2906,12 @@ _e_comp_x_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_
{ {
/* for firefox/thunderbird (xul) menu walking */ /* for firefox/thunderbird (xul) menu walking */
/* NB: why did i disable this before? */ /* NB: why did i disable this before? */
return ECORE_CALLBACK_PASS_ON;
/* why only filter these out for an ungrab? skip all ungrabs...
if (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR) if (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR)
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
else if (ev->detail == ECORE_X_EVENT_DETAIL_POINTER) else if (ev->detail == ECORE_X_EVENT_DETAIL_POINTER)
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON; */
} }
else if (ev->mode == ECORE_X_EVENT_MODE_WHILE_GRABBED) else if (ev->mode == ECORE_X_EVENT_MODE_WHILE_GRABBED)
{ {
@ -2883,8 +2919,10 @@ _e_comp_x_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
else if (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR) else if (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR)
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
else if (ev->detail == ECORE_X_EVENT_DETAIL_NON_LINEAR)
return ECORE_CALLBACK_PASS_ON;
} }
evas_object_focus_set(ec->frame, 0); e_client_revert_focus(ec);
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
} }
@ -3461,6 +3499,41 @@ _e_comp_x_hook_client_post_new_client(void *d EINA_UNUSED, E_Client *ec)
} }
} }
static void
_e_comp_x_frame_extents_adjust(E_Client *ec, int exl, int exr, int ext, int exb)
{
unsigned int extentscurrent;
unsigned int extentsall = exl | exr | ext | exb;
int insl = 0, insr = 0, inst = 0, insb = 0;
e_comp_object_frame_geometry_get(ec->frame, &insl, &insr, &inst, &insb);
extentscurrent = insl | insr | inst | insb;
extentsall = !!extentsall;
extentscurrent = !!extentscurrent;
if ((!e_comp_object_frame_exists(ec->frame)) &&
(( extentsall && extentscurrent) ||
(!extentsall && extentscurrent) ||
( extentsall && !extentscurrent)))
{
e_comp_object_frame_geometry_set(ec->frame, -exl, -exr, -ext, -exb);
if (ec->override &&
(ec->x == ec->comp_data->initial_attributes.x) &&
(ec->y == ec->comp_data->initial_attributes.y))
e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &ec->x, &ec->y);
}
}
static Eina_Bool
_cb_e_comp_x_ignore_first_unmap_clear_timer(void *data)
{
E_Client *ec = data;
ec->ignore_first_unmap_clear_timer = NULL;
if (ec->ignore_first_unmap > 0) ec->ignore_first_unmap--;
return EINA_FALSE;
}
static void static void
_e_comp_x_hook_client_pre_frame_assign(void *d EINA_UNUSED, E_Client *ec) _e_comp_x_hook_client_pre_frame_assign(void *d EINA_UNUSED, E_Client *ec)
{ {
@ -3512,6 +3585,10 @@ _e_comp_x_hook_client_pre_frame_assign(void *d EINA_UNUSED, E_Client *ec)
} }
if (!ec->internal) if (!ec->internal)
ecore_x_window_save_set_add(win); ecore_x_window_save_set_add(win);
ec->ignore_first_unmap++;
E_FREE_FUNC(ec->ignore_first_unmap_clear_timer, ecore_timer_del);
ec->ignore_first_unmap_clear_timer = ecore_timer_add
(0.2, _cb_e_comp_x_ignore_first_unmap_clear_timer, ec);
ecore_x_window_reparent(win, pwin, 0, 0); ecore_x_window_reparent(win, pwin, 0, 0);
e_pixmap_alias(ep, E_PIXMAP_TYPE_X, pwin); e_pixmap_alias(ep, E_PIXMAP_TYPE_X, pwin);
@ -4838,34 +4915,18 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec)
*/ */
if (count >= 4) if (count >= 4)
{ {
unsigned int extentscurrent; // printf("GTK-FRM: get %i %i %i %i\n",
unsigned int extentsall = // extents[0], extents[1], extents[2], extents[3]);
extents[0] | extents[1] | extents[2] | extents[3]; _e_comp_x_frame_extents_adjust
int insl = 0, insr = 0, inst = 0, insb = 0; (ec, extents[0], extents[1], extents[2], extents[3]);
e_comp_object_frame_geometry_get(ec->frame, &insl, &insr,
&inst, &insb);
extentscurrent = insl | insr | inst | insb;
extentsall = !!extentsall;
extentscurrent = !!extentscurrent;
if ((!e_comp_object_frame_exists(ec->frame)) &&
(( extentsall && extentscurrent) ||
(!extentsall && extentscurrent) ||
( extentsall && !extentscurrent)))
{
e_comp_object_frame_geometry_set(ec->frame,
-extents[0],
-extents[1],
-extents[2],
-extents[3]);
if (ec->override &&
(ec->x == ec->comp_data->initial_attributes.x) &&
(ec->y == ec->comp_data->initial_attributes.y))
e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &ec->x, &ec->y);
}
} }
free(extents); free(extents);
} }
else
{
// printf("GTK-FRM: get fail\n");
_e_comp_x_frame_extents_adjust(ec, 0, 0, 0, 0);
}
cd->fetch_gtk_frame_extents = 0; cd->fetch_gtk_frame_extents = 0;
} }
ec->changes.prop = 0; ec->changes.prop = 0;
@ -5193,6 +5254,11 @@ _e_comp_x_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
else else
#endif #endif
{ {
// work around broken clients that withdraw windows and don't
// remove WM_STATE themselves... like qt6 + telegram and media
// window popups.
ecore_x_window_prop_property_del(e_client_util_win_get(ec),
ECORE_X_ATOM_WM_STATE);
if (e_pixmap_free(ec->pixmap)) if (e_pixmap_free(ec->pixmap))
e_pixmap_client_set(ec->pixmap, NULL); e_pixmap_client_set(ec->pixmap, NULL);
ec->pixmap = NULL; ec->pixmap = NULL;
@ -5754,6 +5820,9 @@ _e_comp_x_manage_windows(void)
evas_object_geometry_set(ec->frame, ec->client.x, ec->client.y, ec->client.w, ec->client.h); evas_object_geometry_set(ec->frame, ec->client.x, ec->client.y, ec->client.w, ec->client.h);
} }
ec->ignore_first_unmap = 1; ec->ignore_first_unmap = 1;
E_FREE_FUNC(ec->ignore_first_unmap_clear_timer, ecore_timer_del);
ec->ignore_first_unmap_clear_timer = ecore_timer_add
(0.2, _cb_e_comp_x_ignore_first_unmap_clear_timer, ec);
if (ec->override || (!ec->icccm.fetch.hints)) if (ec->override || (!ec->icccm.fetch.hints))
evas_object_show(ec->frame); evas_object_show(ec->frame);
_e_comp_x_client_stack(ec); _e_comp_x_client_stack(ec);

View File

@ -200,28 +200,35 @@ _handle_dev_prop(int dev_slot, const char *dev, const char *prop, Device_Flags d
{ {
// 7 val, 8 bit bit 0 = off, >0 mouse button reported // 7 val, 8 bit bit 0 = off, >0 mouse button reported
// TR, BR, TL, BL, F1, F2, F3 // TR, BR, TL, BL, F1, F2, F3
// 0, 0, 0, 0, 1, 2, 3 <- tap to click // 1, 1, 1, 0, 1, 3, 2 <- tap to click
unsigned char *val = ecore_x_input_device_property_get unsigned char *val = ecore_x_input_device_property_get
(dev_slot, prop, &num, &fmt, &size); (dev_slot, prop, &num, &fmt, &size);
const char tapval[7] = { 1, 1, 1, 0, 1, 3, 2 };
const char notapval[7] = { 0, 0, 0, 0, 0, 0, 0 };
Eina_Bool have_tapval = EINA_FALSE;
Eina_Bool have_notapval = EINA_FALSE;
int i;
if (num >= 7)
{
have_tapval = EINA_TRUE;
for (i = 0; i < 7; i++) if (val[i] != tapval[i]) have_tapval = EINA_FALSE;
have_notapval = EINA_TRUE;
for (i = 0; i < 7; i++) if (val[i] != notapval[i]) have_notapval = EINA_FALSE;
}
if ((val) && (size == 8) && (num >= 7) && if ((val) && (size == 8) && (num >= 7) &&
(((e_config->touch_tap_to_click) && (((e_config->touch_tap_to_click) && (!have_tapval)) ||
((val[4] != 1) || (val[5] != 2) || (val[6] != 3))) || ((!e_config->touch_tap_to_click) && (!have_notapval))))
((!e_config->touch_tap_to_click) &&
((val[4] != 0) || (val[5] != 0) || (val[6] != 0)))))
{ {
if (e_config->touch_tap_to_click) if (e_config->touch_tap_to_click)
{ {
val[4] = 1; for (i = 0; i < 7; i++) val[i] = tapval[i];
val[5] = 2;
val[6] = 3;
} }
else else
{ {
val[4] = 0; for (i = 0; i < 7; i++) val[i] = notapval[i];
val[5] = 0;
val[6] = 0;
} }
printf("DEV: change [%s] [%s] -> %i %i %i\n", dev, prop, val[4], val[5], val[6]); printf("DEV: change [%s] [%s] -> %i %i %i %i %i %i %i\n", dev, prop, val[0], val[1], val[2], val[3], val[4], val[5], val[6]);
ecore_x_input_device_property_set ecore_x_input_device_property_set
(dev_slot, prop, val, num, fmt, size); (dev_slot, prop, val, num, fmt, size);
} }

View File

@ -122,6 +122,24 @@ _e_config_profile_name_get(Eet_File *ef)
s = eina_stringshare_add_length(data, data_len); s = eina_stringshare_add_length(data, data_len);
free(data); free(data);
} }
if (s)
{
char buf[PATH_MAX];
char buf2[PATH_MAX];
e_user_dir_snprintf(buf, sizeof(buf), "config/%s", s);
if (!ecore_file_is_dir(buf))
{
snprintf(buf2, sizeof(buf2), "config/%s", s);
e_prefix_data_concat_static(buf, buf2);
if (!ecore_file_is_dir(buf))
{
printf("CF: warning - profile [%s] dir does not exist in user or system dirs\n", s);
eina_stringshare_del(s);
s = NULL;
}
}
}
return s; return s;
} }
@ -879,6 +897,8 @@ _e_config_edd_init(Eina_Bool old)
E_CONFIG_VAL(D, T, thumb_nice, INT); E_CONFIG_VAL(D, T, thumb_nice, INT);
E_CONFIG_VAL(D, T, gesture_open_input_devices, UCHAR);
E_CONFIG_VAL(D, T, menu_icons_hide, UCHAR); E_CONFIG_VAL(D, T, menu_icons_hide, UCHAR);
E_CONFIG_VAL(D, T, menu_favorites_show, INT); E_CONFIG_VAL(D, T, menu_favorites_show, INT);
E_CONFIG_VAL(D, T, menu_apps_show, INT); E_CONFIG_VAL(D, T, menu_apps_show, INT);
@ -942,6 +962,7 @@ _e_config_edd_init(Eina_Bool old)
E_CONFIG_VAL(D, T, backlight.battery_timer, DOUBLE); E_CONFIG_VAL(D, T, backlight.battery_timer, DOUBLE);
E_CONFIG_VAL(D, T, backlight.sysdev, STR); E_CONFIG_VAL(D, T, backlight.sysdev, STR);
E_CONFIG_VAL(D, T, backlight.idle_dim, UCHAR); E_CONFIG_VAL(D, T, backlight.idle_dim, UCHAR);
E_CONFIG_VAL(D, T, backlight.ddc, UCHAR);
E_CONFIG_VAL(D, T, deskenv.load_xrdb, UCHAR); E_CONFIG_VAL(D, T, deskenv.load_xrdb, UCHAR);
E_CONFIG_VAL(D, T, deskenv.load_xmodmap, UCHAR); E_CONFIG_VAL(D, T, deskenv.load_xmodmap, UCHAR);
@ -1042,19 +1063,24 @@ e_config_init(void)
for (i = 1; i <= _e_config_revisions; i++) for (i = 1; i <= _e_config_revisions; i++)
{ {
e_user_dir_snprintf(buf, sizeof(buf), "config/profile.%i.cfg", i); e_user_dir_snprintf(buf, sizeof(buf), "config/profile.cfg.%i", i);
ef = eet_open(buf, EET_FILE_MODE_READ); ef = eet_open(buf, EET_FILE_MODE_READ);
if (ef) if (ef)
{ {
printf("CF: warning - falling back to %s\n", buf);
_e_config_profile = _e_config_profile_name_get(ef); _e_config_profile = _e_config_profile_name_get(ef);
eet_close(ef); eet_close(ef);
ef = NULL; ef = NULL;
if (_e_config_profile) break; if (_e_config_profile) break;
printf("CF: warning - fallback to %s can't read profile\n", buf);
} }
else if (ecore_file_exists(buf))
printf("CF: warning - fallback to %s failing to open\n", buf);
} }
if (!_e_config_profile) if (!_e_config_profile)
{ {
/* use system if no user profile config */ /* use system if no user profile config */
printf("CF: fallback to system profile config file\n");
e_prefix_data_concat_static(buf, "data/config/profile.cfg"); e_prefix_data_concat_static(buf, "data/config/profile.cfg");
ef = eet_open(buf, EET_FILE_MODE_READ); ef = eet_open(buf, EET_FILE_MODE_READ);
} }
@ -1064,6 +1090,8 @@ e_config_init(void)
_e_config_profile = _e_config_profile_name_get(ef); _e_config_profile = _e_config_profile_name_get(ef);
eet_close(ef); eet_close(ef);
ef = NULL; ef = NULL;
if (!_e_config_profile)
printf("CF: warning - can't read profile\n");
} }
if (!_e_config_profile) if (!_e_config_profile)
{ {
@ -1624,52 +1652,10 @@ e_config_load(void)
e_config_save_queue(); e_config_save_queue();
} }
CONFIG_VERSION_CHECK(22) CONFIG_VERSION_CHECK(22)
{ { // added luncher - not around anymore
Eina_List *l;
E_Config_Module *em, *module;
Eina_Bool ibar_en = EINA_FALSE, luncher_en = EINA_FALSE;
CONFIG_VERSION_UPDATE_INFO(22);
EINA_LIST_FOREACH(e_config->modules, l, em)
{
if (!em->enabled) continue;
if (eina_streq(em->name, "ibar"))
ibar_en = EINA_TRUE;
else if (eina_streq(em->name, "luncher"))
luncher_en = EINA_TRUE;
}
if (ibar_en && !luncher_en)
{
module = E_NEW(E_Config_Module, 1);
module->name = eina_stringshare_add("luncher");
module->enabled = 1;
e_config->modules = eina_list_append(e_config->modules, module);
}
e_config_save_queue();
} }
CONFIG_VERSION_CHECK(23) CONFIG_VERSION_CHECK(23)
{ { // added sysinfo - not around anymore
Eina_List *l;
E_Config_Module *em, *module;
Eina_Bool sysinfo_en = EINA_FALSE;
CONFIG_VERSION_UPDATE_INFO(23);
EINA_LIST_FOREACH(e_config->modules, l, em)
{
if (!em->enabled) continue;
if (eina_streq(em->name, "sysinfo"))
sysinfo_en = EINA_TRUE;
}
if (!sysinfo_en)
{
module = E_NEW(E_Config_Module, 1);
module->name = eina_stringshare_add("sysinfo");
module->enabled = 1;
e_config->modules = eina_list_append(e_config->modules, module);
}
e_config_save_queue();
} }
CONFIG_VERSION_CHECK(24) CONFIG_VERSION_CHECK(24)
{ {
@ -1808,6 +1794,12 @@ e_config_load(void)
e_config->scale.set_xapp_dpi = 1; e_config->scale.set_xapp_dpi = 1;
e_config_save_queue(); e_config_save_queue();
} }
CONFIG_VERSION_CHECK(35)
{
CONFIG_VERSION_UPDATE_INFO(35);
e_config->backlight.ddc = 1;
e_config_save_queue();
}
} }
elm_config_profile_set(_e_config_profile); elm_config_profile_set(_e_config_profile);
if (!e_config->remember_internal_fm_windows) if (!e_config->remember_internal_fm_windows)
@ -1912,6 +1904,8 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->desk_auto_switch, 0, 1); E_CONFIG_LIMIT(e_config->desk_auto_switch, 0, 1);
E_CONFIG_LIMIT(e_config->screen_limits, 0, 2); E_CONFIG_LIMIT(e_config->screen_limits, 0, 2);
E_CONFIG_LIMIT(e_config->thumb_nice, -20, 20);
E_CONFIG_LIMIT(e_config->gesture_open_input_devices, 0, 1);
E_CONFIG_LIMIT(e_config->dpms_enable, 0, 1); E_CONFIG_LIMIT(e_config->dpms_enable, 0, 1);
E_CONFIG_LIMIT(e_config->dpms_standby_enable, 0, 1); E_CONFIG_LIMIT(e_config->dpms_standby_enable, 0, 1);
@ -1992,6 +1986,7 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->backlight.normal, 0.05, 1.0); E_CONFIG_LIMIT(e_config->backlight.normal, 0.05, 1.0);
E_CONFIG_LIMIT(e_config->backlight.dim, 0.05, 1.0); E_CONFIG_LIMIT(e_config->backlight.dim, 0.05, 1.0);
E_CONFIG_LIMIT(e_config->backlight.idle_dim, 0, 1); E_CONFIG_LIMIT(e_config->backlight.idle_dim, 0, 1);
E_CONFIG_LIMIT(e_config->backlight.ddc, 0, 1);
E_CONFIG_LIMIT(e_config->keyboard.repeat_delay, -1, 1000); // 1 second E_CONFIG_LIMIT(e_config->keyboard.repeat_delay, -1, 1000); // 1 second
E_CONFIG_LIMIT(e_config->keyboard.repeat_rate, -1, 1000); // 1 second E_CONFIG_LIMIT(e_config->keyboard.repeat_rate, -1, 1000); // 1 second
@ -2205,16 +2200,21 @@ e_config_domain_load(const char *domain, E_Config_DD *edd)
for (i = 1; i <= _e_config_revisions; i++) for (i = 1; i <= _e_config_revisions; i++)
{ {
e_user_dir_snprintf(buf, sizeof(buf), "config/%s/%s.%i.cfg", e_user_dir_snprintf(buf, sizeof(buf), "config/%s/%s.cfg.%i",
_e_config_profile, domain, i); _e_config_profile, domain, i);
ef = eet_open(buf, EET_FILE_MODE_READ); ef = eet_open(buf, EET_FILE_MODE_READ);
if (ef) if (ef)
{ {
printf("CF: warning - falling back to %s\n", buf);
data = eet_data_read(ef, edd, "config"); data = eet_data_read(ef, edd, "config");
eet_close(ef); eet_close(ef);
if (data) return data; if (data) return data;
printf("CF: warning - fallback to %s can't read config\n", buf);
} }
else if (ecore_file_exists(buf))
printf("CF: warning - fallback to %s failing to open\n", buf);
} }
printf("CF: fallback to system config config file for [%s]\n", domain);
return e_config_domain_system_load(domain, edd); return e_config_domain_system_load(domain, edd);
} }
@ -2234,6 +2234,7 @@ e_config_domain_system_load(const char *domain, E_Config_DD *edd)
eet_close(ef); eet_close(ef);
return data; return data;
} }
printf("CF: system config load for %s failed\n", buf);
return data; return data;
} }

View File

@ -47,7 +47,7 @@ typedef enum
/* increment this whenever a new set of config values are added but the users /* increment this whenever a new set of config values are added but the users
* config doesn't need to be wiped - simply new values need to be put in * config doesn't need to be wiped - simply new values need to be put in
*/ */
#define E_CONFIG_FILE_GENERATION 34 #define E_CONFIG_FILE_GENERATION 35
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH * 1000000) + E_CONFIG_FILE_GENERATION) #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH * 1000000) + E_CONFIG_FILE_GENERATION)
#define E_CONFIG_BINDINGS_VERSION 0 // DO NOT INCREMENT UNLESS YOU WANT TO WIPE ALL BINDINGS!!!!! #define E_CONFIG_BINDINGS_VERSION 0 // DO NOT INCREMENT UNLESS YOU WANT TO WIPE ALL BINDINGS!!!!!
@ -291,6 +291,8 @@ struct _E_Config
int thumb_nice; int thumb_nice;
unsigned char gesture_open_input_devices; // GUI
int ping_clients_interval; // GUI int ping_clients_interval; // GUI
int thumbscroll_enable; // GUI int thumbscroll_enable; // GUI
@ -371,6 +373,7 @@ struct _E_Config
double battery_timer; // GUI double battery_timer; // GUI
const char *sysdev; // GUI const char *sysdev; // GUI
unsigned char idle_dim; // GUI unsigned char idle_dim; // GUI
unsigned char ddc; // GUI
} backlight; } backlight;
struct struct

View File

@ -454,8 +454,9 @@ e_desk_last_focused_focus(E_Desk *desk)
evas_object_raise(ecs->frame); evas_object_raise(ecs->frame);
return ecs; return ecs;
} }
if (e_client_focused_get()) if (e_client_focused_get()) {
evas_object_focus_set(e_client_focused_get()->frame, 0); evas_object_focus_set(e_client_focused_get()->frame, 0);
}
return NULL; return NULL;
} }

View File

@ -79,6 +79,7 @@ _e_deskmirror_visible_get(E_Smart_Data *sd, Mirror *m)
*/ */
if (m->sd->handlers && m->ec->iconic) if (m->sd->handlers && m->ec->iconic)
visible = evas_object_visible_get(m->ec->frame); visible = evas_object_visible_get(m->ec->frame);
if (m->ec->iconic) visible = EINA_FALSE;
if (visible) if (visible)
{ {
visible = (sd->desk == m->ec->desk) || (m->ec->sticky && (!m->ec->hidden)); visible = (sd->desk == m->ec->desk) || (m->ec->sticky && (!m->ec->hidden));
@ -592,7 +593,7 @@ _e_deskmirror_mirror_setup(Mirror *m)
evas_object_pass_events_set(m->mirror, !m->ec); evas_object_pass_events_set(m->mirror, !m->ec);
} }
if (m->ec) evas_object_data_set(m->mirror, "E_Client", m->ec); if (m->ec) evas_object_data_set(m->mirror, "E_Client", m->ec);
evas_object_precise_is_inside_set(m->mirror, m->ec && (m->ec->shaped || m->ec->shaped_input)); evas_object_precise_is_inside_set(m->mirror, m->ec && (m->ec->shaped));
e_layout_pack(m->sd->layout, m->mirror); e_layout_pack(m->sd->layout, m->mirror);
_e_deskmirror_mirror_reconfigure(m); _e_deskmirror_mirror_reconfigure(m);
if (m->sd->handlers) // no handlers = we're setting up = there's no possible listeners if (m->sd->handlers) // no handlers = we're setting up = there's no possible listeners

View File

@ -104,6 +104,7 @@ _e_exec_recent_exists_filter(void)
{ {
_e_exec_recent->files = _e_exec_recent->files =
eina_list_remove_list(_e_exec_recent->files, l); eina_list_remove_list(_e_exec_recent->files, l);
eina_stringshare_del(fl->file);
free(fl); free(fl);
} }
} }
@ -160,7 +161,7 @@ _e_exec_recent_load(void)
} }
fl->file = eina_stringshare_add(buf); fl->file = eina_stringshare_add(buf);
fl->timestamp = (double)timi / 100.0; fl->timestamp = (double)timi / 100.0;
_e_exec_recent->files = eina_list_prepend(_e_exec_recent->files, fl); _e_exec_recent->files = eina_list_append(_e_exec_recent->files, fl);
} }
fclose(f); fclose(f);
} }

View File

@ -35,8 +35,9 @@ e_focus_event_mouse_out(E_Client *ec)
{ {
if (!ec->lock_focus_in) if (!ec->lock_focus_in)
{ {
if (ec->focused) if (ec->focused) {
evas_object_focus_set(ec->frame, 0); e_client_revert_focus(ec);
}
} }
} }
E_FREE_FUNC(ec->raise_timer, ecore_timer_del); E_FREE_FUNC(ec->raise_timer, ecore_timer_del);

View File

@ -1821,7 +1821,6 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget
else if ((!gcc->style) && else if ((!gcc->style) &&
(!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_PLAIN))) (!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_PLAIN)))
e_menu_item_toggle_set(mi, 1); e_menu_item_toggle_set(mi, 1);
e_menu_item_disabled_set(mi, mi->toggle);
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_plain, gcc); e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_plain, gcc);
mi = e_menu_item_new(mo); mi = e_menu_item_new(mo);
@ -1834,7 +1833,6 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget
else if ((!gcc->style) && else if ((!gcc->style) &&
(!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_INSET))) (!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_INSET)))
e_menu_item_toggle_set(mi, 1); e_menu_item_toggle_set(mi, 1);
e_menu_item_disabled_set(mi, mi->toggle);
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_inset, gcc); e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_inset, gcc);
mi = e_menu_item_new(menu_gadget); mi = e_menu_item_new(menu_gadget);

View File

@ -22,6 +22,7 @@ typedef struct {
static int gesture_capable_devices = 0; static int gesture_capable_devices = 0;
static E_Bindings_Swipe_Live_Update live_update; static E_Bindings_Swipe_Live_Update live_update;
static void* live_update_data; static void* live_update_data;
static Eina_List *handlers = NULL;
static Swipe_Stats* static Swipe_Stats*
_find_swipe_gesture_recognizition(Elput_Device *dev) _find_swipe_gesture_recognizition(Elput_Device *dev)
@ -208,10 +209,41 @@ _shutdown_for_x11(void)
elput_shutdown(); elput_shutdown();
} }
static int
_detect_vm(void)
{
static int on_vm = -1;
int ret;
if (on_vm >= 0) return on_vm;
ret = system("systemd-detect-virt");
if (ret == 0) on_vm = 1;
else if (ret == 1) on_vm = 0;
else
{
ret = system("hostnamectl status | grep 'Chassis: vm'");
if (ret == 0) on_vm = 1;
else if (ret == 1) on_vm = 0;
// fallback to assuming not on vm
else on_vm = 0;
}
return on_vm;
}
E_API int E_API int
e_gesture_init(void) e_gesture_init(void)
{ {
// we have some bizarre bug on vbox -> this causes xorg to stop displaying
// the screen output even though it's rendered and you can grab it through
// screenshots, xrandr reports a perfectly well configured display.
// somehow using elput to get input devices from logind causes xorg
// internally to not handle e's first restart after wizard - as if
// the xserver goes into some bixarre internal state - it doesn't report
// any errors though. this works around that by just avoiding the gesture
// support on vm's - they wont have touchpads anyway as they will emulate
// a normal mouse mostly... :)
if (_detect_vm()) return 1;
if (e_comp->comp_type == E_PIXMAP_TYPE_X) if (e_comp->comp_type == E_PIXMAP_TYPE_X)
{ {
_init_for_x11(); _init_for_x11();
@ -219,10 +251,10 @@ e_gesture_init(void)
active_gestures = eina_hash_pointer_new(_stats_free); active_gestures = eina_hash_pointer_new(_stats_free);
ecore_event_handler_add(ELPUT_EVENT_SWIPE_BEGIN, _swipe_cb, NULL); E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SWIPE_BEGIN, _swipe_cb, NULL);
ecore_event_handler_add(ELPUT_EVENT_SWIPE_UPDATE, _swipe_cb, NULL); E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SWIPE_UPDATE, _swipe_cb, NULL);
ecore_event_handler_add(ELPUT_EVENT_SWIPE_END, _swipe_cb, NULL); E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SWIPE_END, _swipe_cb, NULL);
ecore_event_handler_add(ELPUT_EVENT_SEAT_CAPS, _debug, NULL); E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SEAT_CAPS, _debug, NULL);
return 1; return 1;
} }
@ -230,6 +262,21 @@ e_gesture_init(void)
E_API int E_API int
e_gesture_shutdown(void) e_gesture_shutdown(void)
{ {
Ecore_Event_Handler *hand;
if (_detect_vm()) return 1;
if (active_gestures)
{
eina_hash_free(active_gestures);
active_gestures = NULL;
}
EINA_LIST_FREE(handlers, hand)
{
ecore_event_handler_del(hand);
}
if (e_comp->comp_type == E_PIXMAP_TYPE_X) if (e_comp->comp_type == E_PIXMAP_TYPE_X)
{ {
_shutdown_for_x11(); _shutdown_for_x11();

View File

@ -174,6 +174,7 @@ e_icon_file_set(Evas_Object *obj, const char *file)
if ((sd->url) && (!strcmp(sd->url, file))) return; if ((sd->url) && (!strcmp(sd->url, file))) return;
/* smart code here */ /* smart code here */
sd->edje = EINA_FALSE;
_e_icon_obj_prepare(obj, sd); _e_icon_obj_prepare(obj, sd);
/* FIXME: 64x64 - unhappy about this. use icon size */ /* FIXME: 64x64 - unhappy about this. use icon size */
sd->loading = 0; sd->loading = 0;

View File

@ -1059,10 +1059,13 @@ main(int argc, char **argv)
e_comp_canvas_keys_grab(); e_comp_canvas_keys_grab();
TS("E_Comp_Canvas Keys Grab Done"); TS("E_Comp_Canvas Keys Grab Done");
#ifdef HAVE_ELPUT #ifdef HAVE_ELPUT
TS("E_Gesture Init"); if (e_config->gesture_open_input_devices)
e_gesture_init(); {
TS("E_Gesture Init Done"); TS("E_Gesture Init");
_e_main_shutdown_push(e_gesture_shutdown); e_gesture_init();
TS("E_Gesture Init Done");
_e_main_shutdown_push(e_gesture_shutdown);
}
#endif #endif
TS("Run Startup Apps"); TS("Run Startup Apps");
@ -1247,7 +1250,7 @@ _e_main_parse_arguments(int argc, char **argv)
(!strcmp(argv[i], "--version"))) (!strcmp(argv[i], "--version")))
{ {
printf(_("Version: %s\n"), PACKAGE_VERSION); printf(_("Version: %s\n"), PACKAGE_VERSION);
_e_main_shutdown(0); _e_main_shutdown(11);
} }
else if ((!strcmp(argv[i], "-h")) || else if ((!strcmp(argv[i], "-h")) ||
(!strcmp(argv[i], "-help")) || (!strcmp(argv[i], "-help")) ||
@ -1280,7 +1283,7 @@ _e_main_parse_arguments(int argc, char **argv)
"\t-version\n" "\t-version\n"
) )
); );
_e_main_shutdown(0); _e_main_shutdown(11);
} }
} }

View File

@ -786,6 +786,7 @@ _e_module_whitelist_check(void)
"policy_mobile", "policy_mobile",
"geolocation", "geolocation",
"xwayland", "xwayland",
"procstats",
NULL // end marker NULL // end marker
}; };

View File

@ -16,10 +16,13 @@ static Eina_Bool init = EINA_FALSE;
static inline void static inline void
_e_pointer_theme_buf(E_Pointer *ptr, char cursor[1024]) _e_pointer_theme_buf(E_Pointer *ptr, char cursor[1024])
{ {
const char *type = ptr->type;
if (!type) type = "default";
if (ptr->color) if (ptr->color)
snprintf(cursor, 1024, "e/pointer/enlightenment/%s/color", ptr->type); snprintf(cursor, 1024, "e/pointer/enlightenment/%s/color", type);
else else
snprintf(cursor, 1024, "e/pointer/enlightenment/%s/mono", ptr->type); snprintf(cursor, 1024, "e/pointer/enlightenment/%s/mono", type);
} }
static inline void static inline void
@ -922,7 +925,9 @@ e_pointer_reset(E_Pointer *ptr)
E_FREE_LIST(ptr->stack, _e_pointer_stack_free); E_FREE_LIST(ptr->stack, _e_pointer_stack_free);
eina_stringshare_del(ptr->type); eina_stringshare_del(ptr->type);
ptr->type = NULL;
eina_stringshare_del(ptr->deferred_type); eina_stringshare_del(ptr->deferred_type);
ptr->deferred_type = NULL;
/* reset pointer to default */ /* reset pointer to default */
e_pointer_type_push(ptr, ptr, "default"); e_pointer_type_push(ptr, ptr, "default");

View File

@ -358,6 +358,19 @@ main(int argc,
/* local subsystem functions */ /* local subsystem functions */
#ifdef HAVE_EEZE_MOUNT #ifdef HAVE_EEZE_MOUNT
static Eina_Bool
check_is_num_to_comma(const char *s)
{
const char *p;
for (p = s; *p && (*p != ','); p++)
{
if (!((*p >= '0') && (*p <= '9'))) return EINA_FALSE;
}
return EINA_TRUE;
}
static Eina_Bool static Eina_Bool
mountopts_check(const char *opts) mountopts_check(const char *opts)
{ {
@ -400,6 +413,8 @@ mountopts_check(const char *opts)
{ {
p += 4; p += 4;
errno = 0; errno = 0;
if (!check_is_num_to_comma(p)) return EINA_FALSE;
muid = strtoul(p, &end, 10); muid = strtoul(p, &end, 10);
if (muid == ULONG_MAX) return EINA_FALSE; if (muid == ULONG_MAX) return EINA_FALSE;
if (errno) return EINA_FALSE; if (errno) return EINA_FALSE;
@ -414,13 +429,53 @@ mountopts_check(const char *opts)
return EINA_TRUE; return EINA_TRUE;
} }
static Eina_Bool
check_is_alpha_num(char c)
{
if (((c >= '0') && (c <= '9')) ||
((c >= 'a') && (c <= 'z')) ||
((c >= 'A') && (c <= 'Z'))) return EINA_TRUE;
return EINA_FALSE;
}
static Eina_Bool static Eina_Bool
check_uuid(const char *uuid) check_uuid(const char *uuid)
{ {
const char *p; const char *p;
for (p = uuid; p[0]; p++) for (p = uuid; p[0]; p++)
if ((!isalnum(*p)) && (*p != '-')) return EINA_FALSE; {
if ((!check_is_alpha_num(*p)) && (*p != '-')) return EINA_FALSE;
}
return EINA_TRUE;
}
static Eina_Bool
check_sane_path(const char *path)
{
const char *forbidden_ch = "`~!#$%^&*()[]{}|\\;'\"<>?";
const char *p;
if (strstr(path, "..")) return EINA_FALSE; // just don't allow .. anywhere
for (p = forbidden_ch; *p; p++) // no invalid chars like above
{
if (strchr(path, *p)) return EINA_FALSE;
}
for (p = path; *p; p++) // nothing in lower ascii ctrl chars or high ascii
{
if ((*p <= ' ') || (*p >= 0x7f)) return EINA_FALSE;
}
return EINA_TRUE;
}
static Eina_Bool
check_sane_dev(const char *dev)
{
struct stat st;
if (strncmp(dev, "/dev/", 5)) return EINA_FALSE; // not a /dev file
if (!check_sane_path(dev)) return EINA_FALSE;
if (stat(dev, &st)) return EINA_FALSE; // must actually exist
return EINA_TRUE; return EINA_TRUE;
} }
@ -428,9 +483,9 @@ static Eina_Bool
mount_args_check(int argc, char **argv, const char *action) mount_args_check(int argc, char **argv, const char *action)
{ {
Eina_Bool opts = EINA_FALSE; Eina_Bool opts = EINA_FALSE;
struct stat st;
const char *node; const char *node;
char buf[PATH_MAX]; char buf[PATH_MAX];
struct stat st;
if (!strcmp(action, "mount")) if (!strcmp(action, "mount"))
{ {
@ -451,9 +506,9 @@ mount_args_check(int argc, char **argv, const char *action)
} }
else else
{ {
if (strncmp(argv[4], "/dev/", 5)) return EINA_FALSE; if (!check_sane_dev(argv[4])) return EINA_FALSE;
if (stat(argv[4], &st)) return EINA_FALSE;
} }
if (!check_sane_path(argv[5])) return EINA_FALSE;
node = strrchr(argv[5], '/'); node = strrchr(argv[5], '/');
if (!node) return EINA_FALSE; if (!node) return EINA_FALSE;
@ -468,8 +523,7 @@ mount_args_check(int argc, char **argv, const char *action)
/path/to/umount /dev/$devnode /path/to/umount /dev/$devnode
*/ */
if (argc != 3) return EINA_FALSE; if (argc != 3) return EINA_FALSE;
if (strncmp(argv[2], "/dev/", 5)) return EINA_FALSE; if (!check_sane_dev(argv[2])) return EINA_FALSE;
if (stat(argv[2], &st)) return EINA_FALSE;
node = strrchr(argv[2], '/'); node = strrchr(argv[2], '/');
if (!node) return EINA_FALSE; if (!node) return EINA_FALSE;
if (!node[1]) return EINA_FALSE; if (!node[1]) return EINA_FALSE;
@ -488,8 +542,7 @@ mount_args_check(int argc, char **argv, const char *action)
/path/to/eject /dev/$devnode /path/to/eject /dev/$devnode
*/ */
if (argc != 3) return EINA_FALSE; if (argc != 3) return EINA_FALSE;
if (strncmp(argv[2], "/dev/", 5)) return EINA_FALSE; if (!check_sane_dev(argv[2])) return EINA_FALSE;
if (stat(argv[2], &st)) return EINA_FALSE;
node = strrchr(argv[2], '/'); node = strrchr(argv[2], '/');
if (!node) return EINA_FALSE; if (!node) return EINA_FALSE;
if (!node[1]) return EINA_FALSE; if (!node[1]) return EINA_FALSE;
@ -545,10 +598,8 @@ auth_action_ok(char *a,
*/ */
ret = auth_etc_enlightenment_sysactions(a, usr, grp); ret = auth_etc_enlightenment_sysactions(a, usr, grp);
if (ret == 1) return 1; if (ret == 1) return 1;
else if (ret == -1) else if (ret == -1) return 0;
return 0; return 0; // no sysactions.conf file found - just say no. bad system
/* the DEFAULT - allow */
return 1;
} }
static int static int

View File

@ -134,7 +134,23 @@ e_theme_border_find(const char *border)
E_API Eina_List * E_API Eina_List *
e_theme_border_list(void) e_theme_border_list(void)
{ {
return e_theme_collection_items_find(NULL, "e/widgets/border"); Eina_List *list, *l;
const char *s;
list = e_theme_collection_items_find(NULL, "e/widgets/border");
// XXX: a horrible hack due to history and bad group naming choices
// but filter out volume as a border because it is the volume gadget
// thing not a border
EINA_LIST_FOREACH(list, l, s)
{
if (!strcmp(s, "volume"))
{
list = eina_list_remove_list(list, l);
eina_stringshare_del(s);
break;
}
}
return list;
} }
E_API int E_API int

View File

@ -153,7 +153,7 @@ _cb_worker_message(void *data EINA_UNUSED, Ecore_Thread *th EINA_UNUSED, void *m
if (lig->max > 0) if (lig->max > 0)
{ {
val = ((1000 * lig->val) + 500) / lig->max; val = (1000 * lig->val) / lig->max;
if (val < 0) val = 0; if (val < 0) val = 0;
else if (val > 1000) val = 1000; else if (val > 1000) val = 1000;
} }

View File

@ -3,13 +3,13 @@ Encoding=UTF-8
Type=Application Type=Application
Name=Fingerprint Password Settings Name=Fingerprint Password Settings
Name[de]=Fingerprint Passwort Einstellungen Name[de]=Fingerprint Passwort Einstellungen
Name[fr]=Reconnaissance des empreintes digitales Name[fr]=Reconnaissance par empreinte digitale
Name[it]=Impostazioni impronte digitali Name[it]=Impostazioni impronte digitali
Name[pt]=Definições de palavras-passe de impressão digital Name[pt]=Definições de palavras-passe de impressão digital
Icon=enlightenment_fprint Icon=enlightenment_fprint
Exec=enlightenment_fprint Exec=enlightenment_fprint
Comment=Tool to set up or modify fingerprint authentication Comment=Tool to set up or modify fingerprint authentication
Comment[fr]=Outil pour configurer ou modifier l'authentification par empreintes digitales. Comment[fr]=Outil pour configurer ou modifier l'authentification par empreintes digitales
Comment[it]=Utilità per impostare o modificare l'autenticazione mediante sensore di impronte digitali Comment[it]=Utilità per impostare o modificare l'autenticazione mediante sensore di impronte digitali
Comment[pt]=Ferramenta para configurar ou modificar a autenticação das impressões digitais Comment[pt]=Ferramenta para configurar ou modificar a autenticação das impressões digitais
GenericName=GUI for Fingerprint Authentication GenericName=GUI for Fingerprint Authentication

View File

@ -508,7 +508,7 @@ main(int argc, char *argv[])
ECORE_GETOPT_VALUE_NONE ECORE_GETOPT_VALUE_NONE
}; };
int args; int args;
char **cmds; char **cmds = NULL;
args = ecore_getopt_parse(&options, values, argc, argv); args = ecore_getopt_parse(&options, values, argc, argv);
if (args < 0) if (args < 0)

View File

@ -36,7 +36,10 @@ cb_obj_prop_entry(void *data, const void *key, Eldbus_Message_Iter *var)
{ {
Eina_Bool val = EINA_FALSE; Eina_Bool val = EINA_FALSE;
if (eldbus_message_iter_arguments_get(var, "b", &val)) if (eldbus_message_iter_arguments_get(var, "b", &val))
o->connected = val; {
o->connected = val;
printf("BZ: change connected for %s to %i\n", o->address, o->connected);
}
} }
else if (!strcmp(skey, "Trusted")) else if (!strcmp(skey, "Trusted"))
{ {

View File

@ -294,7 +294,7 @@ ebluez5_instances_update(void)
static void static void
_device_prop_clean(Config_Device *dev) _device_prop_clean(Config_Device *dev)
{ {
if ((!dev->unlock) && (!dev->force_connect)) if (!dev->unlock)
{ {
ebluez5_config->devices = eina_list_remove(ebluez5_config->devices, dev); ebluez5_config->devices = eina_list_remove(ebluez5_config->devices, dev);
eina_stringshare_del(dev->addr); eina_stringshare_del(dev->addr);
@ -332,27 +332,6 @@ ebluez5_device_prop_find(const char *address)
return NULL; return NULL;
} }
void
ebluez5_device_prop_force_connect_set(const char *address, Eina_Bool enable)
{
Config_Device *dev;
if (!address) return;
dev = ebluez5_device_prop_find(address);
if (dev)
{
dev->force_connect = enable;
_device_prop_clean(dev);
return;
}
if (enable)
{
dev = _device_prop_new(address);
dev->force_connect = enable;
}
}
void void
ebluez5_device_prop_unlock_set(const char *address, Eina_Bool enable) ebluez5_device_prop_unlock_set(const char *address, Eina_Bool enable)
{ {
@ -405,7 +384,6 @@ e_modapi_init(E_Module *m)
#define T Config_Device #define T Config_Device
#define D conf_device_edd #define D conf_device_edd
E_CONFIG_VAL(D, T, addr, STR); E_CONFIG_VAL(D, T, addr, STR);
E_CONFIG_VAL(D, T, force_connect, UCHAR);
E_CONFIG_VAL(D, T, unlock, UCHAR); E_CONFIG_VAL(D, T, unlock, UCHAR);
conf_edd = E_CONFIG_DD_NEW("Config", Config); conf_edd = E_CONFIG_DD_NEW("Config", Config);
@ -438,6 +416,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
Config_Adapter *ad; Config_Adapter *ad;
Config_Device *dev; Config_Device *dev;
e_gadcon_provider_unregister(&_gc_class);
if (zero_adapters_check_timer) if (zero_adapters_check_timer)
{ {
ecore_timer_del(zero_adapters_check_timer); ecore_timer_del(zero_adapters_check_timer);

View File

@ -32,7 +32,6 @@ typedef struct _Config_Device Config_Device;
struct _Config_Device struct _Config_Device
{ {
const char *addr; const char *addr;
Eina_Bool force_connect;
Eina_Bool unlock; Eina_Bool unlock;
}; };

View File

@ -43,21 +43,12 @@ _devices_eval(void)
if (o->paired) if (o->paired)
{ {
Eina_Bool need_ping = EINA_FALSE; Eina_Bool need_ping = EINA_FALSE;
Obj *adapter = bz_obj_find(o->adapter);
dev = _devices_conifg_find(o->address); dev = _devices_conifg_find(o->address);
if (dev) if ((dev) && (adapter) && (adapter->powered))
{ {
printf("=== dev: %s|%s [%s]\n", dev->addr, o->address, o->name); printf("=== dev: %s|%s [%s]\n", dev->addr, o->address, o->name);
if ((dev->force_connect) && (!o->connected))
{
printf("=== %s force con, not conn, ping ok=%i\n", o->address, o->ping_ok);
if (o->ping_ok)
{
printf("=== %s force con, not conn, ping ok=%i\n", o->address, o->ping_ok);
bz_obj_connect(o);
}
else need_ping = EINA_TRUE;
}
if (dev->unlock) if (dev->unlock)
{ {
printf("=== unlock...\n"); printf("=== unlock...\n");
@ -303,24 +294,6 @@ _cb_unlock_stop(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
_unflip(o, obj); _unflip(o, obj);
} }
static void
_cb_force_connect_start(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Obj *o = data;
ebluez5_device_prop_force_connect_set(o->address, EINA_TRUE);
ebluez5_popup_adapter_change(o);
_unflip(o, obj);
}
static void
_cb_force_connect_stop(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Obj *o = data;
ebluez5_device_prop_force_connect_set(o->address, EINA_FALSE);
ebluez5_popup_adapter_change(o);
_unflip(o, obj);
}
static void static void
_cb_flip(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) _cb_flip(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{ {
@ -582,23 +555,6 @@ _cb_dev_content_get(void *data, Evas_Object *obj,
} }
elm_box_pack_end(bx, bt); elm_box_pack_end(bx, bt);
evas_object_show(bt); evas_object_show(bt);
if ((dev) && (dev->force_connect))
{
bt = util_button_icon_add(obj, "bt-force-connect-off",
_("Stop this device from being forcefully connected"));
evas_object_data_set(bt, "genlist", obj);
evas_object_smart_callback_add(bt, "clicked", _cb_force_connect_stop, o);
}
else
{
bt = util_button_icon_add(obj, "bt-force-connect-on",
_("Force this device to be connected when detected"));
evas_object_data_set(bt, "genlist", obj);
evas_object_smart_callback_add(bt, "clicked", _cb_force_connect_start, o);
}
elm_box_pack_end(bx, bt);
evas_object_show(bt);
} }
if (o->connected) if (o->connected)
{ {

View File

@ -24,6 +24,7 @@ struct _E_Config_Dialog_Data
double error; double error;
double length; double length;
unsigned int fingers; unsigned int fingers;
int gesture_open_input_devices;
} locals; } locals;
struct struct
{ {
@ -75,6 +76,15 @@ _auto_apply_changes(E_Config_Dialog_Data *cfdata)
E_Action_Group *actg; E_Action_Group *actg;
E_Action_Description *actd; E_Action_Description *actd;
if (cfdata->locals.gesture_open_input_devices != e_config->gesture_open_input_devices)
{
E_Action *act;
e_config->gesture_open_input_devices = cfdata->locals.gesture_open_input_devices;
act = e_action_find("restart");
if ((act) && (act->func.go)) act->func.go(NULL, NULL);
}
if ((!cfdata->locals.cur) || (!cfdata->locals.cur[0]) || if ((!cfdata->locals.cur) || (!cfdata->locals.cur[0]) ||
(!cfdata->locals.action) || (!cfdata->locals.action[0])) return; (!cfdata->locals.action) || (!cfdata->locals.action[0])) return;
@ -133,6 +143,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->locals.source = eina_stringshare_add(""); cfdata->locals.source = eina_stringshare_add("");
cfdata->locals.cur = NULL; cfdata->locals.cur = NULL;
cfdata->locals.dia = NULL; cfdata->locals.dia = NULL;
cfdata->locals.gesture_open_input_devices = e_config->gesture_open_input_devices;
cfdata->binding.swipe = NULL; cfdata->binding.swipe = NULL;
EINA_LIST_FOREACH(e_bindings->swipe_bindings, l, bi) EINA_LIST_FOREACH(e_bindings->swipe_bindings, l, bi)
@ -912,7 +923,7 @@ _help_swipe_bindings_cb(void *data EINA_UNUSED, void *data2 EINA_UNUSED)
static Evas_Object * static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{ {
Evas_Object *o, *ol, *ot, *of, *ob; Evas_Object *o, *ol, *ot, *of, *ob, *oc;
cfdata->evas = evas; cfdata->evas = evas;
o = e_widget_list_add(evas, 0, 0); o = e_widget_list_add(evas, 0, 0);
@ -963,6 +974,9 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_list_object_append(o, ol, 1, 1, 0.5); e_widget_list_object_append(o, ol, 1, 1, 0.5);
oc = e_widget_check_add(evas, _("Open input devices"), &(cfdata->locals.gesture_open_input_devices));
e_widget_list_object_append(o, oc, 1, 1, 0.5);
_update_swipe_binding_list(cfdata); _update_swipe_binding_list(cfdata);
_fill_actions_list(cfdata); _fill_actions_list(cfdata);

View File

@ -289,7 +289,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
grp++; grp++;
} }
e_widget_toolbook_page_append(otb, NULL, _("Keyboard Layout"), ol, e_widget_toolbook_page_append(otb, NULL, _("Keyboard Layout"), ol,
1, 1, 1, 0, 0.0, 0.0); 1, 1, 1, 1, 0.0, 0.0);
/* Login */ /* Login */
ol = e_widget_list_add(evas, 0, 0); ol = e_widget_list_add(evas, 0, 0);

View File

@ -17,6 +17,7 @@ struct _E_Config_Dialog_Data
Evas_Object *backlight_slider_fade; Evas_Object *backlight_slider_fade;
int enable_idle_dim; int enable_idle_dim;
int ddc;
double backlight_normal; double backlight_normal;
double backlight_dim; double backlight_dim;
@ -56,6 +57,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
cfdata->backlight_dim = e_config->backlight.dim * 100.0; cfdata->backlight_dim = e_config->backlight.dim * 100.0;
cfdata->backlight_transition = e_config->backlight.transition; cfdata->backlight_transition = e_config->backlight.transition;
cfdata->enable_idle_dim = e_config->backlight.idle_dim; cfdata->enable_idle_dim = e_config->backlight.idle_dim;
cfdata->ddc = e_config->backlight.ddc;
cfdata->backlight_timeout = e_config->backlight.timer; cfdata->backlight_timeout = e_config->backlight.timer;
cfdata->backlight_battery_timeout = e_config->backlight.battery_timer; cfdata->backlight_battery_timeout = e_config->backlight.battery_timer;
} }
@ -87,6 +89,7 @@ _apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
e_config->backlight.timer = lround(cfdata->backlight_timeout); e_config->backlight.timer = lround(cfdata->backlight_timeout);
e_config->backlight.battery_timer = lround(cfdata->backlight_battery_timeout); e_config->backlight.battery_timer = lround(cfdata->backlight_battery_timeout);
e_config->backlight.idle_dim = cfdata->enable_idle_dim; e_config->backlight.idle_dim = cfdata->enable_idle_dim;
e_config->backlight.ddc = cfdata->ddc;
e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL); e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL);
e_backlight_level_set(NULL, e_config->backlight.normal, -1.0); e_backlight_level_set(NULL, e_config->backlight.normal, -1.0);
@ -121,7 +124,8 @@ _advanced_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *
(!EINA_DBL_EQ(e_config->backlight.transition, cfdata->backlight_transition)) || (!EINA_DBL_EQ(e_config->backlight.transition, cfdata->backlight_transition)) ||
(!EINA_DBL_EQ(e_config->backlight.timer, cfdata->backlight_timeout)) || (!EINA_DBL_EQ(e_config->backlight.timer, cfdata->backlight_timeout)) ||
(!EINA_DBL_EQ(e_config->backlight.battery_timer, cfdata->backlight_battery_timeout)) || (!EINA_DBL_EQ(e_config->backlight.battery_timer, cfdata->backlight_battery_timeout)) ||
(e_config->backlight.idle_dim != cfdata->enable_idle_dim); (e_config->backlight.idle_dim != cfdata->enable_idle_dim) ||
(e_config->backlight.ddc != cfdata->ddc);
} }
static int static int
@ -152,6 +156,9 @@ _advanced_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_
&(cfdata->backlight_dim), NULL, 100); &(cfdata->backlight_dim), NULL, 100);
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Desktop Monitor Support (DDC)"), &(cfdata->ddc));
e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Idle Fade Time"), &(cfdata->enable_idle_dim)); ob = e_widget_check_add(evas, _("Idle Fade Time"), &(cfdata->enable_idle_dim));
e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f second(s)"), 5.0, 300.0, 1.0, 0, ob = e_widget_slider_add(evas, 1, 0, _("%1.0f second(s)"), 5.0, 300.0, 1.0, 0,

View File

@ -1078,7 +1078,7 @@ _e_fwin_page_favorites_add(E_Fwin_Page *page)
e_widget_scrollframe_focus_object_set(o, page->flist); e_widget_scrollframe_focus_object_set(o, page->flist);
page->flist_frame = o; page->flist_frame = o;
evas_object_size_hint_min_set(o, 128, 0); evas_object_size_hint_min_set(o, 128 * e_scale, 0);
edje_object_part_swallow(page->fwin->bg_obj, "e.swallow.favorites", o); edje_object_part_swallow(page->fwin->bg_obj, "e.swallow.favorites", o);
} }

View File

@ -163,7 +163,10 @@ _e_mod_menu_populate_item(void *data, Eio_File *handler EINA_UNUSED, const Eina_
return; return;
} }
} }
mime = efreet_mime_type_get(mi->label); mime = efreet_mime_special_type_get(path);
if (!mime) mime = efreet_mime_globs_type_get(path);
if (!mime) mime = efreet_mime_fallback_type_get(path);
if (!mime) return; if (!mime) return;
if (!strncmp(mime, "image/", 6)) if (!strncmp(mime, "image/", 6))
{ {
@ -406,7 +409,10 @@ _e_mod_menu_recent_cb(void *data EINA_UNUSED,
if (file) if (file)
{ {
const char *mime = efreet_mime_type_get(file); const char *mime = efreet_mime_special_type_get(file);
if (!mime) mime = efreet_mime_globs_type_get(file);
if (!mime) mime = efreet_mime_fallback_type_get(file);
if (mime) if (mime)
{ {
@ -437,13 +443,12 @@ _e_mod_menu_recent_cb(void *data EINA_UNUSED,
} }
} }
static void static void
_e_mod_menu_populate_recent_cb(void *data EINA_UNUSED, _e_mod_menu_populate_recent_cb(void *data EINA_UNUSED,
E_Menu *m EINA_UNUSED, E_Menu *m EINA_UNUSED,
E_Menu_Item *mi EINA_UNUSED) E_Menu_Item *mi EINA_UNUSED)
{ {
Eina_List *l; Eina_List *l, *ll;
Eina_List *files = (Eina_List *)e_exec_recent_files_get(); Eina_List *files = (Eina_List *)e_exec_recent_files_get();
E_Exec_Recent_File *fl; E_Exec_Recent_File *fl;
E_Menu *subm; E_Menu *subm;
@ -459,7 +464,10 @@ _e_mod_menu_populate_recent_cb(void *data EINA_UNUSED,
fname = ecore_file_file_get(fl->file); fname = ecore_file_file_get(fl->file);
if (fname) if (fname)
{ {
const char *mime = efreet_mime_type_get(fl->file); const char *mime = efreet_mime_special_type_get(fl->file);
if (!mime) mime = efreet_mime_globs_type_get(fl->file);
if (!mime) mime = efreet_mime_fallback_type_get(fl->file);
mi2 = e_menu_item_new(subm); mi2 = e_menu_item_new(subm);
e_menu_item_label_set(mi2, fname); e_menu_item_label_set(mi2, fname);
@ -469,19 +477,25 @@ _e_mod_menu_populate_recent_cb(void *data EINA_UNUSED,
e_menu_item_callback_set(mi2, _e_mod_menu_recent_cb, NULL); e_menu_item_callback_set(mi2, _e_mod_menu_recent_cb, NULL);
if (mime) if (mime)
{ {
const char *icon = NULL;
char buf[1024]; char buf[1024];
const char *icon_file, *edje_file; const E_Config_Mime_Icon *minf;
snprintf(buf, sizeof(buf), "e/icons/fileman/mime/%s", mime); EINA_LIST_FOREACH(e_config->mime_icons, ll, minf)
edje_file = e_theme_edje_file_get("base/theme/icons", buf);
if (edje_file)
{ {
e_menu_item_icon_edje_set(mi2, edje_file, buf); if (!strcmp(minf->mime, mime))
{
icon = minf->icon;
break;
}
} }
if ((icon) && (!strcmp(icon, "THUMB")))
e_menu_item_icon_file_set(mi2, fl->file);
else else
{ {
icon_file = efreet_mime_type_icon_get(mime, e_config->icon_theme, 48); snprintf(buf, sizeof(buf), "fileman/mime/%s", mime);
e_menu_item_icon_file_set(mi2, icon_file); if (!e_util_menu_item_theme_icon_set(mi2, buf))
e_util_menu_item_theme_icon_set(mi2, "fileman/mime/unknown");
} }
} }
} }
@ -489,7 +503,6 @@ _e_mod_menu_populate_recent_cb(void *data EINA_UNUSED,
e_menu_thaw(subm); e_menu_thaw(subm);
} }
static void static void
_e_mod_fileman_add_recent(E_Menu *m, _e_mod_fileman_add_recent(E_Menu *m,
Eina_Bool need_separator) Eina_Bool need_separator)

View File

@ -1948,10 +1948,21 @@ _ibar_cb_icon_move(void *data, Evas *e, Evas_Object *obj, void *event_info EINA_
if (!zone) if (!zone)
zone = eina_list_data_get(e_comp->zones); zone = eina_list_data_get(e_comp->zones);
} }
if (chx - (len / 2) < zone->x) if ((ic->ibar->inst->orient == E_GADCON_ORIENT_LEFT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_LT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_LB))
sig = "e,origin,left"; sig = "e,origin,left";
else if ((chx + (len / 2) > cw) || ((chx + (len / 2) > zone->x + zone->w))) else if ((ic->ibar->inst->orient == E_GADCON_ORIENT_RIGHT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_RT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_RB))
sig = "e,origin,right"; sig = "e,origin,right";
else
{
if (chx - (len / 2) < zone->x)
sig = "e,origin,left";
else if ((chx + (len / 2) > cw) || ((chx + (len / 2) > zone->x + zone->w)))
sig = "e,origin,right";
}
_ibar_icon_signal_emit(ic, sig, "e"); _ibar_icon_signal_emit(ic, sig, "e");
} }

View File

@ -62,12 +62,15 @@ _e_msgbus_window_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
EINA_LIST_FOREACH(e_comp->clients, l, ec) EINA_LIST_FOREACH(e_comp->clients, l, ec)
{ {
Eldbus_Message_Iter *s; Eldbus_Message_Iter *s;
const char *name;
if (e_client_util_ignored_get(ec)) continue; if (e_client_util_ignored_get(ec)) continue;
eldbus_message_iter_arguments_append(array, "(si)", &s); eldbus_message_iter_arguments_append(array, "(si)", &s);
if (!s) continue; if (!s) continue;
eldbus_message_iter_arguments_append(s, "si", ec->icccm.name, name = ec->icccm.name;
if (!name) name = "";
eldbus_message_iter_arguments_append(s, "si", name,
e_client_util_win_get(ec)); e_client_util_win_get(ec));
eldbus_message_iter_container_close(array, s); eldbus_message_iter_container_close(array, s);
} }

View File

@ -63,18 +63,20 @@ _notification_popup_merge(E_Notification_Notify *n)
len = strlen(popup->notif->body); len = strlen(popup->notif->body);
len += strlen(n->body); len += strlen(n->body);
len += 5; /* \xE2\x80\xA9 or <PS/> */ len += 5; /* \xE2\x80\xA9 or <PS/> */
if (len < 8192) body_final = alloca(len + 1); body_final = malloc(len + 1);
else body_final = malloc(len + 1); if (body_final)
/* Hack to allow e to include markup */ {
snprintf(body_final, len + 1, "%s<ps/>%s", popup->notif->body, n->body); /* Hack to allow e to include markup */
snprintf(body_final, len + 1, "%s<ps/>%s", popup->notif->body, n->body);
/* printf("set body %s\n", body_final); */ /* printf("set body %s\n", body_final); */
eina_stringshare_replace(&n->body, body_final); eina_stringshare_replace(&n->body, body_final);
e_object_del(E_OBJECT(popup->notif)); e_object_del(E_OBJECT(popup->notif));
popup->notif = n; popup->notif = n;
if (len >= 8192) free(body_final); free(body_final);
}
return popup; return popup;
} }
@ -271,7 +273,6 @@ static Popup_Data *
_notification_popup_new(E_Notification_Notify *n, unsigned id) _notification_popup_new(E_Notification_Notify *n, unsigned id)
{ {
Popup_Data *popup; Popup_Data *popup;
char buf[PATH_MAX];
Eina_List *l; Eina_List *l;
int pos = next_pos; int pos = next_pos;
E_Zone *zone = NULL; E_Zone *zone = NULL;
@ -305,10 +306,7 @@ _notification_popup_new(E_Notification_Notify *n, unsigned id)
popup->e = e_comp->evas; popup->e = e_comp->evas;
/* Setup the theme */ /* Setup the theme */
snprintf(buf, sizeof(buf), "%s/e-module-notification.edj",
notification_mod->dir);
popup->theme = edje_object_add(popup->e); popup->theme = edje_object_add(popup->e);
e_theme_edje_object_set(popup->theme, e_theme_edje_object_set(popup->theme,
"base/theme/modules/notification", "base/theme/modules/notification",
"e/modules/notification/main"); "e/modules/notification/main");
@ -342,6 +340,7 @@ _notification_popup_new(E_Notification_Notify *n, unsigned id)
if (zone == e_comp_object_util_zone_get(popup->win)) continue; if (zone == e_comp_object_util_zone_get(popup->win)) continue;
o = e_comp_object_util_mirror_add(popup->theme); o = e_comp_object_util_mirror_add(popup->theme);
o = e_comp_object_util_add(o, E_COMP_OBJECT_TYPE_POPUP); o = e_comp_object_util_add(o, E_COMP_OBJECT_TYPE_POPUP);
edje_object_signal_emit(o, "e,state,shadow,off", "e");
evas_object_name_set(o, "notification_mirror"); evas_object_name_set(o, "notification_mirror");
evas_object_data_set(o, "zone", zone); evas_object_data_set(o, "zone", zone);
evas_object_geometry_get(popup->win, NULL, NULL, &w, &h); evas_object_geometry_get(popup->win, NULL, NULL, &w, &h);
@ -488,19 +487,10 @@ _notification_popup_refresh(Popup_Data *popup)
if (!popup->app_icon) if (!popup->app_icon)
{ {
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/e-module-notification.edj",
notification_mod->dir);
popup->app_icon = edje_object_add(popup->e); popup->app_icon = edje_object_add(popup->e);
if (!e_theme_edje_object_set(popup->app_icon, e_theme_edje_object_set(popup->app_icon,
"base/theme/modules/notification", "base/theme/modules/notification",
"e/modules/notification/logo")) "e/modules/notification/logo");
if (!e_theme_edje_object_set(popup->app_icon,
"base/theme/modules/notification",
"modules/notification/logo"))
edje_object_file_set(popup->app_icon, buf,
"modules/notification/logo");
w = width; w = width;
h = height; h = height;
} }

View File

@ -37,6 +37,7 @@ packagekit_icon_update(E_PackageKit_Module_Context *ctxt,
count++; count++;
break; break;
default: default:
count++;
break; break;
} }
} }

View File

@ -1158,12 +1158,13 @@ _pager_cb_event_desk_show(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev
{ {
E_Event_Desk_Show *ev = event; E_Event_Desk_Show *ev = event;
Eina_List *l; Eina_List *l;
Pager *p; Pager *p = NULL;
Pager_Popup *pp; Pager_Popup *pp;
Pager_Desk *pd; Pager_Desk *pd;
if (!eina_list_count(pagers)) return ECORE_CALLBACK_PASS_ON; if (!eina_list_count(pagers)) return ECORE_CALLBACK_PASS_ON;
current_desk = ev->desk;
EINA_LIST_FOREACH(pagers, l, p) EINA_LIST_FOREACH(pagers, l, p)
{ {
if (p->zone != ev->desk->zone) continue; if (p->zone != ev->desk->zone) continue;
@ -1172,20 +1173,29 @@ _pager_cb_event_desk_show(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev
if (p->popup) if (p->popup)
edje_object_part_text_set(p->popup->o_bg, "e.text.label", ev->desk->name); edje_object_part_text_set(p->popup->o_bg, "e.text.label", ev->desk->name);
break;
} }
if ((pager_config->popup) && (!act_popup) && if ((pager_config->popup) && (!act_popup) &&
((ecore_time_get() - _pager_start_time) > 0.5)) //. not at start ((ecore_time_get() - _pager_start_time) > 0.5)) //. not at start
{ {
if ((pp = _pager_popup_find(ev->desk->zone))) if ((pp = _pager_popup_find(ev->desk->zone)))
evas_object_show(pp->popup); {
evas_object_show(pp->popup);
pd = _pager_desk_find(pp->pager, current_desk);
if (pd) _pager_desk_select(pd);
}
else else
pp = _pager_popup_new(ev->desk->zone, 0, EINA_TRUE); {
pp = _pager_popup_new(ev->desk->zone, 0, EINA_TRUE);
}
if (pp->timer) if (pp->timer)
ecore_timer_loop_reset(pp->timer); ecore_timer_loop_reset(pp->timer);
else else
pp->timer = ecore_timer_add(pager_config->popup_speed, pp->timer = ecore_timer_add(pager_config->popup_speed,
_pager_popup_cb_timeout, pp); _pager_popup_cb_timeout, pp);
if (p)
p->popup = pp;
} }
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
@ -1853,6 +1863,17 @@ static Eina_Bool
_pager_popup_cb_timeout(void *data) _pager_popup_cb_timeout(void *data)
{ {
Pager_Popup *pp = data; Pager_Popup *pp = data;
Eina_List *l;
Pager *p;
EINA_LIST_FOREACH(pagers, l, p)
{
if (p->popup == pp)
{
p->popup = NULL;
break;
}
}
pp->timer = NULL; pp->timer = NULL;
_pager_popup_free(pp); _pager_popup_free(pp);
@ -1883,7 +1904,6 @@ static int
_pager_popup_show(void) _pager_popup_show(void)
{ {
E_Zone *zone; E_Zone *zone;
int x, y, w, h;
Pager_Popup *pp; Pager_Popup *pp;
if ((act_popup) || (input_window)) return 0; if ((act_popup) || (input_window)) return 0;
@ -1916,7 +1936,6 @@ _pager_popup_show(void)
(ECORE_EVENT_MOUSE_WHEEL, _pager_popup_cb_mouse_wheel, NULL)); (ECORE_EVENT_MOUSE_WHEEL, _pager_popup_cb_mouse_wheel, NULL));
act_popup = _pager_popup_new(zone, 1, EINA_FALSE); act_popup = _pager_popup_new(zone, 1, EINA_FALSE);
evas_object_geometry_get(act_popup->pager->o_table, &x, &y, &w, &h);
current_desk = e_desk_current_get(zone); current_desk = e_desk_current_get(zone);
return 1; return 1;
} }

View File

@ -8,6 +8,8 @@
#define POLL_INTERVAL 2.0 #define POLL_INTERVAL 2.0
static Ecore_Event_Handler *_proc_stats_handler_fullscreen = NULL;
static int64_t _mem_total; static int64_t _mem_total;
typedef struct typedef struct
@ -32,6 +34,7 @@ typedef struct
uint64_t mem_size; uint64_t mem_size;
uint64_t cpu_time; uint64_t cpu_time;
uint64_t cpu_time_prev; uint64_t cpu_time_prev;
Eina_Bool was_maximized;
} Proc_Stats_Client; } Proc_Stats_Client;
static void _proc_stats_client_add(E_Client *ec); static void _proc_stats_client_add(E_Client *ec);
@ -42,6 +45,8 @@ static void _proc_stats_client_del(Proc_Stats_Client *client);
static Eina_Bool _proc_stats_client_gone(Proc_Stats_Client *client); static Eina_Bool _proc_stats_client_gone(Proc_Stats_Client *client);
static void _proc_stats_client_children_update(Eina_List *children, Proc_Stats_Client *client); static void _proc_stats_client_children_update(Eina_List *children, Proc_Stats_Client *client);
static void _proc_stats_client_update(Eina_List *procs, Proc_Stats_Client *client); static void _proc_stats_client_update(Eina_List *procs, Proc_Stats_Client *client);
static void _proc_stats_client_popup_add(Proc_Stats_Client *client);
static void _proc_stats_client_popup_del(Proc_Stats_Client *client);
static Eina_Bool static Eina_Bool
_memory_total(void) _memory_total(void)
@ -74,6 +79,28 @@ _memory_total(void)
return 1; return 1;
} }
static Eina_Bool
_proc_stats_handler_fullscreen_check_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Proc_Stats_Client *client;
E_Event_Client *ev;
Eina_List *l;
Proc_Stats_Module *module = _this_module;
ev = event;
EINA_LIST_FOREACH(module->clients, l, client)
{
if (client->ec == ev->ec)
{
_proc_stats_client_remove(client);
break;
}
}
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool static Eina_Bool
_proc_stats_client_exists(E_Client *ec) _proc_stats_client_exists(E_Client *ec)
{ {
@ -91,8 +118,7 @@ _proc_stats_client_exists(E_Client *ec)
static void static void
_proc_stats_client_del(Proc_Stats_Client *client) _proc_stats_client_del(Proc_Stats_Client *client)
{ {
if (client->popup) evas_object_del(client->popup); _proc_stats_client_popup_del(client);
client->popup = NULL;
edje_object_signal_emit(client->frame_obj, "e,state,procstats,off", "e"); edje_object_signal_emit(client->frame_obj, "e,state,procstats,off", "e");
evas_object_del(client->obj); evas_object_del(client->obj);
e_object_delfn_del(E_OBJECT(client->ec), client->delfn); e_object_delfn_del(E_OBJECT(client->ec), client->delfn);
@ -110,47 +136,11 @@ _proc_stats_client_del_cb(void *data, void *obj EINA_UNUSED)
} }
static void static void
_proc_stats_client_move_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) _proc_stats_client_popup_add(Proc_Stats_Client *client)
{ {
Proc_Stats_Client *client;
Evas_Coord ox, oy, ow, oh;
client = data;
if ((!client) || (!client->popup)) return;
evas_object_geometry_get(client->obj, &ox, &oy, &ow, &oh);
evas_object_move(client->popup, ox + (ow / 2), oy);
if ((client->ec->hidden) || (client->ec->iconic))
evas_object_hide(client->popup);
else
evas_object_show(client->popup);
}
static void
_proc_stats_icon_clicked_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Evas_Event_Mouse_Up *ev;
Proc_Stats_Client *client;
Evas_Object *o, *tb; Evas_Object *o, *tb;
Evas_Object *pb; Evas_Object *pb;
Evas_Coord ox, oy, ow, oh; Evas_Coord ox, oy, ow, oh;
ev = event_info;
client = data;
if (ev->button != 1) return;
if (!client) return;
if (client->popup)
{
evas_object_del(client->popup);
client->popup = NULL;
return;
}
evas_object_geometry_get(client->obj, &ox, &oy, &ow, &oh); evas_object_geometry_get(client->obj, &ox, &oy, &ow, &oh);
client->popup = o = elm_ctxpopup_add(e_comp->elm); client->popup = o = elm_ctxpopup_add(e_comp->elm);
@ -179,14 +169,94 @@ _proc_stats_icon_clicked_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj
_proc_stats_client_display_update(client); _proc_stats_client_display_update(client);
elm_ctxpopup_direction_priority_set(o, ELM_CTXPOPUP_DIRECTION_UP, if (client->ec->maximized)
ELM_CTXPOPUP_DIRECTION_DOWN, {
ELM_CTXPOPUP_DIRECTION_LEFT, elm_ctxpopup_direction_priority_set(o, ELM_CTXPOPUP_DIRECTION_DOWN,
ELM_CTXPOPUP_DIRECTION_RIGHT); ELM_CTXPOPUP_DIRECTION_UP,
evas_object_move(o, ox + (ow / 2), oy); ELM_CTXPOPUP_DIRECTION_LEFT,
ELM_CTXPOPUP_DIRECTION_RIGHT);
evas_object_move(o, ox + (ow / 2), oy + ow);
}
else
{
elm_ctxpopup_direction_priority_set(o, ELM_CTXPOPUP_DIRECTION_UP,
ELM_CTXPOPUP_DIRECTION_DOWN,
ELM_CTXPOPUP_DIRECTION_LEFT,
ELM_CTXPOPUP_DIRECTION_RIGHT);
evas_object_move(o, ox + (ow / 2), oy);
}
evas_object_show(o); evas_object_show(o);
} }
static void
_proc_stats_client_popup_del(Proc_Stats_Client *client)
{
if (!client) return;
if (client->popup)
evas_object_del(client->popup);
client->popup = NULL;
}
static void
_proc_stats_client_resize_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Proc_Stats_Client *client;
client = data;
if ((!client) || (!client->popup)) return;
if (client->was_maximized != client->ec->maximized)
{
_proc_stats_client_popup_del(client);
_proc_stats_client_popup_add(client);
}
client->was_maximized = client->ec->maximized;
}
static void
_proc_stats_client_move_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Proc_Stats_Client *client;
Evas_Coord ox, oy, ow, oh;
client = data;
if ((!client) || (!client->popup)) return;
evas_object_geometry_get(client->obj, &ox, &oy, &ow, &oh);
evas_object_move(client->popup, ox + (ow / 2), oy);
if ((client->ec->hidden) || (client->ec->iconic))
evas_object_hide(client->popup);
else
evas_object_show(client->popup);
}
static void
_proc_stats_icon_clicked_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Evas_Event_Mouse_Up *ev;
Proc_Stats_Client *client;
ev = event_info;
client = data;
if (ev->button != 1) return;
if (!client) return;
if (client->popup)
{
_proc_stats_client_popup_del(client);
return;
}
_proc_stats_client_popup_add(client);
}
static void static void
_proc_stats_client_add(E_Client *ec) _proc_stats_client_add(E_Client *ec)
{ {
@ -229,6 +299,7 @@ _proc_stats_client_add(E_Client *ec)
client->delfn = e_object_delfn_add(E_OBJECT(ec), _proc_stats_client_del_cb, client); client->delfn = e_object_delfn_add(E_OBJECT(ec), _proc_stats_client_del_cb, client);
evas_object_event_callback_add(client->obj, EVAS_CALLBACK_MOVE, _proc_stats_client_move_cb, client); evas_object_event_callback_add(client->obj, EVAS_CALLBACK_MOVE, _proc_stats_client_move_cb, client);
evas_object_event_callback_add(client->obj, EVAS_CALLBACK_MOUSE_UP, _proc_stats_icon_clicked_cb, client); evas_object_event_callback_add(client->obj, EVAS_CALLBACK_MOUSE_UP, _proc_stats_icon_clicked_cb, client);
evas_object_event_callback_add(client->frame_obj, EVAS_CALLBACK_RESIZE, _proc_stats_client_resize_cb, client);
module->clients = eina_list_append(module->clients, client); module->clients = eina_list_append(module->clients, client);
} }
@ -458,6 +529,8 @@ e_modapi_init(E_Module *m)
//module->sleeper = e_powersave_sleeper_new(); //module->sleeper = e_powersave_sleeper_new();
module->poll_interval = POLL_INTERVAL; module->poll_interval = POLL_INTERVAL;
_proc_stats_handler_fullscreen = ecore_event_handler_add
(E_EVENT_CLIENT_FULLSCREEN, _proc_stats_handler_fullscreen_check_cb, NULL);
_proc_stats_thread_feedback_cb(module, NULL, proc_info_all_children_get()); _proc_stats_thread_feedback_cb(module, NULL, proc_info_all_children_get());
module->thread = ecore_thread_feedback_run(_proc_stats_thread, module->thread = ecore_thread_feedback_run(_proc_stats_thread,
@ -477,6 +550,9 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
//e_powersave_sleeper_free(module->sleeper); //e_powersave_sleeper_free(module->sleeper);
ecore_event_handler_del(_proc_stats_handler_fullscreen);
_proc_stats_handler_fullscreen = NULL;
EINA_LIST_FREE(module->clients, client) EINA_LIST_FREE(module->clients, client)
_proc_stats_client_del(client); _proc_stats_client_del(client);

View File

@ -89,10 +89,11 @@ _img_write_end_cb(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *event)
if (ev->exe != img_write_exe) return EINA_TRUE; if (ev->exe != img_write_exe) return EINA_TRUE;
_share_done(); _share_done();
if (cnp) if ((cnp) && (cnp_file))
{ {
_cnp_file(cnp_file); _cnp_file(cnp_file);
eina_stringshare_replace(&cnp_file, NULL); eina_stringshare_replace(&cnp_file, NULL);
cnp = EINA_FALSE;
} }
return EINA_FALSE; return EINA_FALSE;
} }

View File

@ -78,6 +78,7 @@ image_load(const char *name, const char *path, uint32_t *imgdata, int w, int h,
{ {
const char **ext, *exts[] = const char **ext, *exts[] =
{ {
".svg",
".png", ".png",
".jpg", ".jpg",
NULL NULL
@ -103,7 +104,11 @@ image_load(const char *name, const char *path, uint32_t *imgdata, int w, int h,
}; };
snprintf(buf, sizeof(buf), "%s/%s", path, *theme); snprintf(buf, sizeof(buf), "%s/%s", path, *theme);
if (!ecore_file_is_dir(buf)) continue; if (!ecore_file_is_dir(buf))
{
printf("SYSTRAY: icon theme dir [%s] does not exist\n", buf);
continue;
}
for (i = sizes; *i; i++) for (i = sizes; *i; i++)
{ {
snprintf(buf, sizeof(buf), "%s/%s/%ux%u", path, *theme, *i, *i); snprintf(buf, sizeof(buf), "%s/%s/%ux%u", path, *theme, *i, *i);
@ -113,15 +118,19 @@ image_load(const char *name, const char *path, uint32_t *imgdata, int w, int h,
snprintf(buf, sizeof(buf), "%s/%s/%ux%u/status/%s%s", path, *theme, *i, *i, name, *ext); snprintf(buf, sizeof(buf), "%s/%s/%ux%u/status/%s%s", path, *theme, *i, *i, name, *ext);
if (ecore_file_exists(buf)) if (ecore_file_exists(buf))
{ {
printf("SYSTRAY: actually load [%s] size=%lli\n", buf, ecore_file_size(buf));
e_icon_file_set(image, buf); e_icon_file_set(image, buf);
return; return;
} }
printf("SYSTRAY: image [%s] does not exist\n", buf);
snprintf(buf, sizeof(buf), "%s/%s/%ux%u/apps/%s%s", path, *theme, *i, *i, name, *ext); snprintf(buf, sizeof(buf), "%s/%s/%ux%u/apps/%s%s", path, *theme, *i, *i, name, *ext);
if (ecore_file_exists(buf)) if (ecore_file_exists(buf))
{ {
printf("SYSTRAY: actually load [%s] size=%lli\n", buf, ecore_file_size(buf));
e_icon_file_set(image, buf); e_icon_file_set(image, buf);
return; return;
} }
printf("SYSTRAY: image [%s] does not exist\n", buf);
} }
} }
} }
@ -130,16 +139,23 @@ image_load(const char *name, const char *path, uint32_t *imgdata, int w, int h,
snprintf(buf, sizeof(buf), "%s/%s%s", path, name, *ext); snprintf(buf, sizeof(buf), "%s/%s%s", path, name, *ext);
if (ecore_file_exists(buf)) if (ecore_file_exists(buf))
{ {
printf("SYSTRAY: actually load [%s] size=%lli\n", buf, ecore_file_size(buf));
e_icon_file_set(image, buf); e_icon_file_set(image, buf);
return; return;
} }
printf("SYSTRAY: image [%s] does not exist\n", buf);
} }
} }
if (name && name[0] && e_util_icon_theme_set(image, name)) return; if (name && name[0] && e_util_icon_theme_set(image, name))
{
printf("SYSTRAY: set icon theme %s\n", name);
return;
}
if (imgdata) if (imgdata)
{ {
Evas_Object *o; Evas_Object *o;
printf("SYSTRAY: set icon custom data %ix%i\n", w, h);
o = evas_object_image_filled_add(evas_object_evas_get(image)); o = evas_object_image_filled_add(evas_object_evas_get(image));
evas_object_image_alpha_set(o, 1); evas_object_image_alpha_set(o, 1);
evas_object_image_size_set(o, w, h); evas_object_image_size_set(o, w, h);
@ -147,7 +163,10 @@ image_load(const char *name, const char *path, uint32_t *imgdata, int w, int h,
e_icon_image_object_set(image, o); e_icon_image_object_set(image, o);
} }
else else
e_util_icon_theme_set(image, "dialog-error"); {
e_util_icon_theme_set(image, "dialog-error");
printf("SYSTRAY: icon requested just does not exist - error in client\n");
}
} }
static void static void

View File

@ -778,7 +778,7 @@ _e_winlist_large_item_height_set(Evas_Coord h)
edje_object_size_min_calc(ww->bg_object, &mw, &mh); edje_object_size_min_calc(ww->bg_object, &mw, &mh);
evas_object_size_hint_min_set(ww->bg_object, mw, mh); evas_object_size_hint_min_set(ww->bg_object, mw, mh);
rowlen += mw; rowlen += mw;
if (rowlen > lw) if ((rowlen > lw) && (mw != rowlen))
{ {
rowlen = 0; rowlen = 0;
boxes = elm_box_children_get(bl->data); boxes = elm_box_children_get(bl->data);

View File

@ -232,9 +232,7 @@ _create_data(E_Config_Dialog *cfd)
static void static void
_list_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) _list_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{ {
Evas_Object **o; Evas_Object **o = data;
o = data;
*o = NULL; *o = NULL;
} }
@ -246,12 +244,29 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
_xkb.cfd = NULL; _xkb.cfd = NULL;
if (cfdata->compose_list) #define FRAME_DEL(list) \
evas_object_event_callback_del(cfdata->compose_list, EVAS_CALLBACK_DEL, _list_del); if (list) { \
if (cfdata->lv3_list) evas_object_del(list); \
evas_object_event_callback_del(cfdata->lv3_list, EVAS_CALLBACK_DEL, _list_del); list = NULL; \
if (cfdata->switch_list) }
evas_object_event_callback_del(cfdata->switch_list, EVAS_CALLBACK_DEL, _list_del); FRAME_DEL(cfdata->compose_list);
FRAME_DEL(cfdata->lv3_list);
FRAME_DEL(cfdata->switch_list);
FRAME_DEL(cfdata->led_list);
FRAME_DEL(cfdata->ctrl_list);
FRAME_DEL(cfdata->keypad_list);
FRAME_DEL(cfdata->delkeypad_list);
FRAME_DEL(cfdata->capslock_list);
FRAME_DEL(cfdata->altwin_list);
FRAME_DEL(cfdata->currency_list);
FRAME_DEL(cfdata->lv5_list);
FRAME_DEL(cfdata->spacebar_list);
FRAME_DEL(cfdata->japan_list);
FRAME_DEL(cfdata->korean_list);
FRAME_DEL(cfdata->esperanto_list);
FRAME_DEL(cfdata->solaris_list);
FRAME_DEL(cfdata->terminate_list);
FRAME_DEL(cfdata->misc_list);
EINA_LIST_FREE(cfdata->cfg_layouts, cl) EINA_LIST_FREE(cfdata->cfg_layouts, cl)
{ {