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 {
value "config_version" int: 1000033;
value "config_version" int: 1000035;
value "config_type" uint: 0; // this profile seems to just be super minimalist
value "desktop_default_name" string: "%i-%i";
value "desktop_default_window_profile" string: "";
@ -164,6 +164,7 @@ group "E_Config" struct {
value "theme_default_border_style" string: "default";
value "desk_auto_switch" int: 0;
value "thumb_nice" int: 0;
value "gesture_open_input_devices" int: 0;
value "screen_limits" int: 0;
value "menu_favorites_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.battery_timer" double: 20.0;
value "backlight.idle_dim" uchar: 1;
value "backlight.ddc" uchar: 0;
value "device_desktop" int: 0;
value "device_auto_mount" int: 0;
value "device_auto_open" int: 0;

View File

@ -1,5 +1,5 @@
group "E_Config" struct {
value "config_version" int: 1000033;
value "config_version" int: 1000035;
value "config_type" uint: 3;
value "desktop_default_name" string: "%i-%i";
value "desktop_default_window_profile" string: "standard";
@ -164,6 +164,7 @@ group "E_Config" struct {
value "theme_default_border_style" string: "default";
value "desk_auto_switch" int: 0;
value "thumb_nice" int: 0;
value "gesture_open_input_devices" int: 0;
value "screen_limits" int: 0;
value "menu_favorites_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.battery_timer" double: 20.0;
value "backlight.idle_dim" uchar: 1;
value "backlight.ddc" uchar: 1;
value "deskenv.load_xrdb" uchar: 1;
value "deskenv.load_xmodmap" uchar: 1;
value "deskenv.load_gnome" uchar: 0;

View File

@ -15,18 +15,6 @@ group "E_Config_Bindings" struct {
value "action" string: "backlight_adjust";
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 {
value "context" int: 0;
value "type" int: 3;

View File

@ -1,5 +1,5 @@
group "E_Config" struct {
value "config_version" int: 1000033;
value "config_version" int: 1000035;
value "config_type" uint: 3;
value "desktop_default_name" string: "%i-%i";
value "desktop_default_window_profile" string: "standard";
@ -164,6 +164,7 @@ group "E_Config" struct {
value "theme_default_border_style" string: "default";
value "desk_auto_switch" int: 0;
value "thumb_nice" int: 0;
value "gesture_open_input_devices" int: 0;
value "screen_limits" int: 0;
value "menu_favorites_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.battery_timer" double: 20.0;
value "backlight.idle_dim" uchar: 1;
value "backlight.ddc" uchar: 1;
value "deskenv.load_xrdb" uchar: 1;
value "deskenv.load_xmodmap" uchar: 1;
value "deskenv.load_gnome" uchar: 0;

View File

@ -15,18 +15,6 @@ group "E_Config_Bindings" struct {
value "action" string: "backlight_adjust";
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 {
value "context" int: 0;
value "type" int: 3;

View File

@ -5,14 +5,16 @@ Name[ca]=Mosaic (Standard Enlightenment)
Name[de]=Kacheln (Vorgabe Enlightenment)
Name[fi]=Limittävä (Tavallinen Enlightenment)
Name[fr]=Pavage (Enlightenment standard)
Name[it]=Tiling (a piastrelle)
Name[it]=Griglia (Enlightenment standard)
Name[ms]=Penjubinan (Enlightenment Piawai)
Name[pt]=Mosaico (Enlightenment padrão)
Name[ru]=Мозаичный режим (Стандартный 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[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[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[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.

View File

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

288
po/fr.po
View File

@ -12,14 +12,14 @@
# rustyBSD <rustyBSD@gmx.fr>, 2012.
# Raoul Hecky <raoul.hecky@gmail.com>, 2012.
# Eliovir <eliovir@gmail.com>, 2013.
# similar <similar@orange.fr>, 2019, 2020, 2021.
# similar <similar@orange.fr>, 2019, 2020, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2021-11-26 14:22+0100\n"
"PO-Revision-Date: 2021-12-08 11:51+0100\n"
"POT-Creation-Date: 2022-01-20 19:40+0100\n"
"PO-Revision-Date: 2022-01-20 19:56+0100\n"
"Last-Translator: Philippe Jean Guillaumie <similar@orange.fr>\n"
"Language-Team: French\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_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_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/fileman/e_fwin.c:2657 src/modules/vkbd/e_kbd_cfg.c:188
msgid "Close"
@ -55,12 +55,12 @@ msgstr "Enlightenment"
#: src/bin/e_about.c:26
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 "
"writing it.<ps/><ps/>To contact us please visit:<ps/><hilight>http://www."
"enlightenment.org</><ps/><ps/>"
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 à "
"utiliser ce logiciel que nous en avons eu à l'écrire.<ps/><ps/>Pour nous "
"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: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_fm.c:11059 src/modules/bluez5/e_mod_popup.c:548
#: src/modules/bluez5/e_mod_popup.c:549
#: src/bin/e_fm.c:11059 src/modules/bluez5/e_mod_popup.c:521
#: src/modules/bluez5/e_mod_popup.c:522
#: src/modules/quickaccess/e_mod_quickaccess.c:1308
msgid "No"
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: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/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
msgid "Yes"
msgstr "Oui"
@ -910,11 +910,11 @@ msgstr "Agencement de clavier précédent"
msgid "Set As Background"
msgstr "Utiliser comme fond d'écran"
#: src/bin/e_client.c:4915
#: src/bin/e_client.c:4923
msgid "Client Error!"
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!"
msgstr ""
"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_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/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_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_theme/e_int_config_theme_import.c:122
#: 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"
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"
msgstr "Visible"
@ -1022,11 +1022,11 @@ msgstr ""
"OpenGL 2.0 (ou OpenGL ES 2.0)<ps/>pour tirer profit de la composition avec "
"OpenGL."
#: src/bin/e_comp_x.c:5854
#: src/bin/e_comp_x.c:5855
msgid "Lock Failed"
msgstr "Échec du verrouillage"
#: src/bin/e_comp_x.c:5855
#: src/bin/e_comp_x.c:5856
msgid ""
"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."
@ -1035,12 +1035,12 @@ msgstr ""
"soit le clavier ou la souris, soit les deux,<ps/>et cette réservation n'a pu "
"ê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."
msgstr ""
"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 ""
"Your display server does not support the compositor overlay window.\n"
"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"
"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
msgid "Enlightenment cannot initialize X Connection...\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 ""
"Your display server does not support XComposite, or Ecore-X was built "
"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 "
"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 ""
"Your display server does not support XDamage or Ecore was built without "
"XDamage support."
@ -1071,7 +1071,7 @@ msgstr ""
"Votre serveur d'affichage ne supporte pas XDamage ou Ecore est compilé sans "
"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"
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_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_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_theme/e_int_config_theme_import.c:118
#: 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."
msgstr "Enlightenment ne reconnaît pas cette erreur."
#: src/bin/e_config.c:1247
#: src/bin/e_config.c:1250
msgid ""
"Settings data needed upgrading. Your old settings have<ps/>been wiped and a "
"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 "
"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 ""
"Your settings are NEWER than Enlightenment. This is very<ps/>strange. This "
"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 "
"désagrément.<ps/>"
#: src/bin/e_config.c:1380
#: src/bin/e_config.c:1383
msgid ""
"Your bindings settings version does not match the current settings version."
"<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é "
"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"
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_mousebindings.c:290
#: 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:341
#: 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:698 src/bin/e_widget_filepreview.c:728
#: 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/conf_bindings/e_int_config_acpibindings.c:429
#: 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_mousebindings.c:288
#: 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_paths/e_int_config_env.c:337
#: 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 "
"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"
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 "
"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"
msgstr "Bienvenue dans Enlightenment"
#: src/bin/e_main.c:1249
#: src/bin/e_main.c:1252
#, c-format
msgid "Version: %s\n"
msgstr "Version : %s\n"
#: src/bin/e_main.c:1258
#: src/bin/e_main.c:1261
#, c-format
msgid ""
"Options:\n"
@ -3976,7 +3976,7 @@ msgstr ""
"pour vous)<ps/>\n"
"-version<ps/>\n"
#: src/bin/e_main.c:1312
#: src/bin/e_main.c:1315
msgid ""
"You are executing enlightenment directly. This is\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"
"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"
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"
msgstr ""
"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
msgid ""
"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 "
"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"
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
msgid ""
"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é "
"désactivé et ne sera pas rechargé."
#: src/bin/e_main.c:1763
#: src/bin/e_main.c:1766
msgid ""
"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/"
@ -4040,7 +4040,7 @@ msgstr ""
"dialogue de configuration des modules vous permettra<ps/>de recharger vos "
"modules.\n"
#: src/bin/e_main.c:1771
#: src/bin/e_main.c:1774
msgid ""
"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 "
@ -4741,7 +4741,7 @@ msgid "%3.1f%%"
msgstr "%3.1f%%"
#: 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:"
msgstr "Taille :"
@ -5032,48 +5032,48 @@ msgstr ""
"rfkill pour le déblocage.<br>Vérifiez les utilisateurs et groupes pour ce "
"fichier."
#: src/modules/bluez5/e_mod_popup.c:421
#: src/modules/bluez5/e_mod_popup.c:394
msgid "Adapters"
msgstr "Adaptateurs"
#: src/modules/bluez5/e_mod_popup.c:422
#: src/modules/bluez5/e_mod_popup.c:395
msgid "Devices"
msgstr "Périphériques"
#: src/modules/bluez5/e_mod_popup.c:457
#: src/modules/bluez5/e_mod_popup.c:430
msgid "Unknown Address"
msgstr "Adresse inconnue"
#: src/modules/bluez5/e_mod_popup.c:480
#: src/modules/bluez5/e_mod_popup.c:453
msgid "Power"
msgstr "Alimentation"
#: src/modules/bluez5/e_mod_popup.c:480
#: src/modules/bluez5/e_mod_popup.c:453
msgid "Enable power for this adapter"
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"
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"
msgstr "Recherche"
#: src/modules/bluez5/e_mod_popup.c:492
#: src/modules/bluez5/e_mod_popup.c:465
msgid "Scan for other devices"
msgstr "Rechercher d'autres appareils"
#: src/modules/bluez5/e_mod_popup.c:498
#: src/modules/bluez5/e_mod_popup.c:471
msgid "Pairable"
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"
msgstr ""
"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
msgid ""
"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 : "
"%s<br>Bloqué : %s<br>"
#: src/modules/bluez5/e_mod_popup.c:539
#: src/modules/bluez5/e_mod_popup.c:512
msgid "Limited-Discoverable "
msgstr "Découverte limitée "
#: src/modules/bluez5/e_mod_popup.c:540
#: src/modules/bluez5/e_mod_popup.c:513
msgid "Positioning "
msgstr "Localisation "
#: src/modules/bluez5/e_mod_popup.c:541
#: src/modules/bluez5/e_mod_popup.c:514
msgid "Networking "
msgstr "Réseau "
#: src/modules/bluez5/e_mod_popup.c:542
#: src/modules/bluez5/e_mod_popup.c:515
msgid "Rendering "
msgstr "Rendu "
#: src/modules/bluez5/e_mod_popup.c:543
#: src/modules/bluez5/e_mod_popup.c:516
msgid "Capture "
msgstr "Capture "
#: src/modules/bluez5/e_mod_popup.c:544
#: src/modules/bluez5/e_mod_popup.c:517
msgid "OBEX "
msgstr "OBEX "
#: src/modules/bluez5/e_mod_popup.c:545
#: src/modules/bluez5/e_mod_popup.c:518
msgid "Audio "
msgstr "Audio "
#: src/modules/bluez5/e_mod_popup.c:546
#: src/modules/bluez5/e_mod_popup.c:519
msgid "Telephony "
msgstr "Téléphonie "
#: src/modules/bluez5/e_mod_popup.c:547
#: src/modules/bluez5/e_mod_popup.c:520
msgid "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"
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)"
msgstr "Déverrouillage auto. à la détection (sinon verrouillage)"
#: src/modules/bluez5/e_mod_popup.c:589
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
#: src/modules/bluez5/e_mod_popup.c:562
msgid "Disconnect this device"
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"
msgstr "Connecter cet appareil"
#: src/modules/bluez5/e_mod_popup.c:623
#: src/modules/bluez5/e_mod_popup.c:579
msgid "Disrust this device"
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"
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:725
#: src/modules/bluez5/e_mod_popup.c:598 src/modules/bluez5/e_mod_popup.c:659
#: src/modules/bluez5/e_mod_popup.c:681
msgid "Pair with this device"
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"
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"
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."
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_mousebindings.c:308
#: 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"
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_mousebindings.c:315
#: 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"
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_mousebindings.c:298
#: 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"
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_mousebindings.c:302
#: 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"
msgstr "Restaurer les raccourcis par défaut"
@ -5893,23 +5885,23 @@ msgstr "Raccourcis des signaux"
msgid "Signal Bindings Settings"
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"
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:"
msgstr "Direction :"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:685
#: src/modules/conf_bindings/e_int_config_swipebindings.c:696
msgid "Error:"
msgstr "Erreur :"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:705
#: src/modules/conf_bindings/e_int_config_swipebindings.c:716
msgid "Fingers:"
msgstr "Doigts :"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:753
#: src/modules/conf_bindings/e_int_config_swipebindings.c:764
#, c-format
msgid ""
"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 "
"<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"
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"
msgstr ""
"Faites votre mouvement de balayage. <br><br>Appuyez sur <hilight>Échap</"
"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"
msgstr "Aide"
#: src/modules/conf_bindings/e_int_config_swipebindings.c:907
#: src/modules/conf_bindings/e_int_config_swipebindings.c:918
msgid ""
"Enlightenment is using libinput to detect swipe gesture. In case there are "
"problems:<br> 1. Test gestures while executing \"libinput debug-events\" in "
@ -5941,28 +5933,32 @@ msgid ""
"user is part of the libinput group.<br>"
msgstr ""
"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 "
"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 "
"actuelle se déroule dans Xorg, assurez-vous que votre utilisateur fait "
"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
msgid "Swipe Bindings"
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"
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
msgid "Help"
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"
msgstr "Paramètres des raccourcis de balayage"
@ -6227,50 +6223,54 @@ msgstr "Animation"
msgid "Flip"
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"
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"
msgstr "Rétroéclairage normal"
#: src/modules/conf_display/e_int_config_dpms.c:145
#: src/modules/conf_display/e_int_config_dpms.c:151
#: src/modules/conf_display/e_int_config_dpms.c:149
#: 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:112
#, c-format
msgid "%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"
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"
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:166
#: src/modules/conf_display/e_int_config_dpms.c:164
#: src/modules/conf_display/e_int_config_dpms.c:173
#, c-format
msgid "%1.0f second(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"
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"
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
msgid "%1.1f second(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"
msgstr "Atténuation"
@ -6928,7 +6928,7 @@ msgstr "Demander"
#: src/modules/conf_randr/e_int_config_randr2.c:803
#, c-format
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/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
msgid "Monitor hotplug"
msgstr "Connexion moniteur à chaud"
msgstr "Branchement à chaud"
#: src/modules/conf_randr/e_int_config_randr2.c:1200
msgid "Lid Events"
@ -9164,7 +9164,7 @@ msgstr ""
msgid "Are you sure you want to delete this bar 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"
msgstr "IBar"
@ -9185,7 +9185,7 @@ msgstr "Retirer de la barre"
msgid "Icon %s"
msgstr "Icône %s"
#: src/modules/ibar/e_mod_main.c:2891
#: src/modules/ibar/e_mod_main.c:2902
msgid "Focus IBar"
msgstr "Focaliser l'IBar"
@ -10051,103 +10051,103 @@ msgstr "Delai"
msgid "%1.1f sec"
msgstr "%1.1f s"
#: src/modules/shot/e_mod_edit.c:1960
#: src/modules/shot/e_mod_edit.c:1962
msgid "Tools"
msgstr "Outils"
#: src/modules/shot/e_mod_edit.c:1972
#: src/modules/shot/e_mod_edit.c:1974
msgid "Select crop area"
msgstr "Choisir la zone à recadrer"
#: src/modules/shot/e_mod_edit.c:1973
#: src/modules/shot/e_mod_edit.c:1975
msgid "Modify objects"
msgstr "Modifier des objets"
#: src/modules/shot/e_mod_edit.c:1974
#: src/modules/shot/e_mod_edit.c:1976
msgid "Delete objects"
msgstr "Supprimer des objets"
#: src/modules/shot/e_mod_edit.c:1983
#: src/modules/shot/e_mod_edit.c:1985
msgid "Single arrow line"
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"
msgstr "Ligne à flèche bidirectionnelle"
#: src/modules/shot/e_mod_edit.c:1985
#: src/modules/shot/e_mod_edit.c:1987
msgid "Plain line"
msgstr "Ligne simple"
#: src/modules/shot/e_mod_edit.c:1986
#: src/modules/shot/e_mod_edit.c:1988
msgid "Solid box"
msgstr "Rectangle plein"
#: src/modules/shot/e_mod_edit.c:1988
#: src/modules/shot/e_mod_edit.c:1990
msgid "Malloc"
msgstr "Malloc"
#: src/modules/shot/e_mod_edit.c:1989
#: src/modules/shot/e_mod_edit.c:1991
msgid "Malloc (evil)"
msgstr "Malloc (en pétard)"
#: src/modules/shot/e_mod_edit.c:1990
#: src/modules/shot/e_mod_edit.c:1992
msgid "Pointing finger"
msgstr "Doigt pointé"
#: src/modules/shot/e_mod_edit.c:1991
#: src/modules/shot/e_mod_edit.c:1993
msgid "Enlightenment logo"
msgstr "Logo Enlightenment"
#: src/modules/shot/e_mod_edit.c:1993
#: src/modules/shot/e_mod_edit.c:1995
msgid "Foot"
msgstr "Pied"
#: src/modules/shot/e_mod_edit.c:1994
#: src/modules/shot/e_mod_edit.c:1996
msgid "Silly walk"
msgstr "Démarche ridicule"
#: src/modules/shot/e_mod_edit.c:1995
#: src/modules/shot/e_mod_edit.c:1997
msgid "Box outline"
msgstr "Contour rectangulaire"
#: src/modules/shot/e_mod_edit.c:1996
#: src/modules/shot/e_mod_edit.c:1998
msgid "Circle outline"
msgstr "Contour circulaire"
#: src/modules/shot/e_mod_edit.c:1998
#: src/modules/shot/e_mod_edit.c:2000
msgid "Plain text"
msgstr "Texte simple"
#: src/modules/shot/e_mod_edit.c:1999
#: src/modules/shot/e_mod_edit.c:2001
msgid "Text box"
msgstr "Encadrement"
#: src/modules/shot/e_mod_edit.c:2000
#: src/modules/shot/e_mod_edit.c:2002
msgid "Text thought bubble"
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"
msgstr "Bulle pensée 2"
#: src/modules/shot/e_mod_edit.c:2003
#: src/modules/shot/e_mod_edit.c:2005
msgid "Speech bubble"
msgstr "Bulle parlée"
#: src/modules/shot/e_mod_edit.c:2004
#: src/modules/shot/e_mod_edit.c:2006
msgid "Speech bubble 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"
msgstr "Splash"
#: src/modules/shot/e_mod_edit.c:2006
#: src/modules/shot/e_mod_edit.c:2008
msgid "Pow explode"
msgstr "Explosion"
#: src/modules/shot/e_mod_edit.c:2014
#: src/modules/shot/e_mod_edit.c:2016
msgid "Color"
msgstr "Couleur"
@ -10906,3 +10906,9 @@ msgstr "Impossible d'établir une connexion avec une socket X11."
#: src/modules/xwayland/e_mod_main.c:347
msgid "Cannot launch XWayland from X11 display."
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
(buf, sizeof(buf), "%s%s",
_(
"<title>Copyright &copy; 2000-2021, by the Enlightenment "
"<title>Copyright &copy; 2000-2022, by the Enlightenment "
"Development Team</><ps/>"
"<ps/>"
"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 (ec_next) e_client_focus_set_with_pointer(ec_next);
else if (ec_first) e_client_focus_set_with_pointer(ec_first);
if (ec_next) goto do_focus;
else if (ec_first) ec_next = ec_first;
else return;
}
else if (dir == -2)
{
if (ec_prev) e_client_focus_set_with_pointer(ec_prev);
else if (ec_last) e_client_focus_set_with_pointer(ec_last);
if (ec_prev) ec_next = ec_prev;
else if (ec_last) ec_next = ec_last;
else return;
}
return;
else return;
goto do_focus;
}
cx = ec_orig->x + (ec_orig->w / 2);
@ -3368,8 +3371,18 @@ ACT_FN_GO(window_focus, EINA_UNUSED)
ec_next = ec;
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 */

View File

@ -254,6 +254,7 @@ _backlight_devices_device_set(Backlight_Device *bd, double val)
// 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;
else fval = bd->val * 100.0;
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);
}

View File

@ -400,8 +400,8 @@ _e_client_mouse_action_end(E_Client *ec)
E_FREE_FUNC(ec->cur_mouse_action, e_object_unref);
}
static void
_e_client_revert_focus(E_Client *ec)
E_API void
e_client_revert_focus(E_Client *ec)
{
E_Client *pec;
E_Desk *desk;
@ -433,12 +433,17 @@ _e_client_revert_focus(E_Client *ec)
}
}
}
else if ((ec->parent) &&
(ec->parent->desk == desk) && (ec->parent->modal == ec))
else if ((ec->parent) && (ec->parent->desk == desk))
{
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)
evas_object_raise(ec->parent->frame);
evas_object_raise(goal_ec->frame);
}
else if (e_config->focus_revert_on_hide_or_close)
{
@ -459,6 +464,14 @@ _e_client_revert_focus(E_Client *ec)
static void
_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)
ec->desk->fullscreen_clients = eina_list_remove(ec->desk->fullscreen_clients, ec);
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.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;
evas_object_del(ec->frame);
E_OBJECT(ec)->references--;
@ -644,7 +659,7 @@ _e_client_del(E_Client *ec)
evas_object_hide(ec->internal_elm_win);
if (ec->focused)
_e_client_revert_focus(ec);
e_client_revert_focus(ec);
if (ec->frame) evas_object_focus_set(ec->frame, 0);
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->focused)
_e_client_revert_focus(ec);
e_client_revert_focus(ec);
}
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);
ec->fullscreen = 1;
ec->fullscreen_time = ecore_time_get();
ec->unfullscreen_forced = 0;
#ifndef HAVE_WAYLAND_ONLY
if ((eina_list_count(e_comp->zones) > 1) ||
@ -4642,7 +4658,7 @@ e_client_iconify(E_Client *ec)
{
if (!ec->new_client)
{
_e_client_revert_focus(ec);
e_client_revert_focus(ec);
evas_object_hide(ec->frame);
}
e_client_urgent_set(ec, ec->icccm.urgent);

View File

@ -302,6 +302,7 @@ struct E_Client
unsigned char ignore_first_unmap;
E_Pointer_Mode resize_mode;
Ecore_Timer *ignore_first_unmap_clear_timer;
struct
{
@ -693,6 +694,8 @@ struct E_Client
int x, y;
} drag;
double fullscreen_time;
Ecore_Timer *raise_timer;
E_Client_Move_Intercept_Cb move_intercept_cb;
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_thaw(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_activate(E_Client *ec, Eina_Bool just_do_it);
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;
}
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
_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});
SHAPE_INF("DEL: %d,%d@%dx%d", x, y, w, h);
}
_tiler_add_input_sub(ec->frame, tb);
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});
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

View File

@ -749,7 +749,7 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw)
else
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);
else
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;
/* 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);
//e_comp_object_frame_wh_adjust(cw->smart_obj, pw, ph, &pw, &ph);
@ -1877,9 +1877,10 @@ _e_comp_intercept_focus(void *data, Evas_Object *obj, Eina_Bool focus)
}
else
{
if (e_client_focused_get() == ec)
if (e_client_focused_get() == ec) {
e_client_focused_set(NULL);
}
}
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);
}
/* ensure focus-out */
if (cw->ec->focused)
evas_object_focus_set(cw->ec->frame, 0);
if (cw->ec->focused) {
e_client_revert_focus(cw->ec);
}
e_comp_render_queue(); //force nocomp recheck
e_comp_shape_queue();
}

View File

@ -962,7 +962,7 @@ _e_comp_wl_clipboard_create(void)
E_API void
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;
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
_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)
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;
}
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
_e_comp_x_mouse_in_fix_check_timer_cb(void *data EINA_UNUSED)
{
E_Client *ec = NULL, *cec;
Eina_List *l, *in_list;
Evas_Object *o;
int x, y;
mouse_in_fix_check_timer = NULL;
if (e_grabinput_key_win_get() || e_grabinput_mouse_win_get())
return EINA_FALSE;
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
* (because it will be closed shortly for example), skip */
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_INSIDE(x, y, cec->x, cec->y, cec->w, cec->h))
continue;
/* 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;
ec = _e_comp_x_e_client_obj_get(o);
if (ec)
{
if ((!e_client_util_desk_visible
(ec, e_desk_current_get(e_zone_current_get())))) continue;
break;
}
}
eina_list_free(in_list);
if (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;
ec = _e_comp_x_client_find_by_window(ev->win);
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 (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;
else if (ev->detail == ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL)
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)
{
@ -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 */
/* 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)
return ECORE_CALLBACK_PASS_ON;
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)
{
@ -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;
else if (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR)
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;
}
@ -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
_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)
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);
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)
{
unsigned int extentscurrent;
unsigned int extentsall =
extents[0] | extents[1] | extents[2] | extents[3];
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,
-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);
}
// printf("GTK-FRM: get %i %i %i %i\n",
// extents[0], extents[1], extents[2], extents[3]);
_e_comp_x_frame_extents_adjust
(ec, extents[0], extents[1], extents[2], extents[3]);
}
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;
}
ec->changes.prop = 0;
@ -5193,6 +5254,11 @@ _e_comp_x_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
else
#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))
e_pixmap_client_set(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);
}
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))
evas_object_show(ec->frame);
_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
// 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
(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) &&
(((e_config->touch_tap_to_click) &&
((val[4] != 1) || (val[5] != 2) || (val[6] != 3))) ||
((!e_config->touch_tap_to_click) &&
((val[4] != 0) || (val[5] != 0) || (val[6] != 0)))))
(((e_config->touch_tap_to_click) && (!have_tapval)) ||
((!e_config->touch_tap_to_click) && (!have_notapval))))
{
if (e_config->touch_tap_to_click)
{
val[4] = 1;
val[5] = 2;
val[6] = 3;
for (i = 0; i < 7; i++) val[i] = tapval[i];
}
else
{
val[4] = 0;
val[5] = 0;
val[6] = 0;
for (i = 0; i < 7; i++) val[i] = notapval[i];
}
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
(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);
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;
}
@ -879,6 +897,8 @@ _e_config_edd_init(Eina_Bool old)
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_favorites_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.sysdev, STR);
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_xmodmap, UCHAR);
@ -1042,19 +1063,24 @@ e_config_init(void)
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);
if (ef)
{
printf("CF: warning - falling back to %s\n", buf);
_e_config_profile = _e_config_profile_name_get(ef);
eet_close(ef);
ef = NULL;
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)
{
/* 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");
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);
eet_close(ef);
ef = NULL;
if (!_e_config_profile)
printf("CF: warning - can't read profile\n");
}
if (!_e_config_profile)
{
@ -1624,52 +1652,10 @@ e_config_load(void)
e_config_save_queue();
}
CONFIG_VERSION_CHECK(22)
{
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();
{ // added luncher - not around anymore
}
CONFIG_VERSION_CHECK(23)
{
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();
{ // added sysinfo - not around anymore
}
CONFIG_VERSION_CHECK(24)
{
@ -1808,6 +1794,12 @@ e_config_load(void)
e_config->scale.set_xapp_dpi = 1;
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);
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->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_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.dim, 0.05, 1.0);
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_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++)
{
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);
ef = eet_open(buf, EET_FILE_MODE_READ);
if (ef)
{
printf("CF: warning - falling back to %s\n", buf);
data = eet_data_read(ef, edd, "config");
eet_close(ef);
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);
}
@ -2234,6 +2234,7 @@ e_config_domain_system_load(const char *domain, E_Config_DD *edd)
eet_close(ef);
return data;
}
printf("CF: system config load for %s failed\n", buf);
return data;
}

View File

@ -47,7 +47,7 @@ typedef enum
/* 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
*/
#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_BINDINGS_VERSION 0 // DO NOT INCREMENT UNLESS YOU WANT TO WIPE ALL BINDINGS!!!!!
@ -291,6 +291,8 @@ struct _E_Config
int thumb_nice;
unsigned char gesture_open_input_devices; // GUI
int ping_clients_interval; // GUI
int thumbscroll_enable; // GUI
@ -371,6 +373,7 @@ struct _E_Config
double battery_timer; // GUI
const char *sysdev; // GUI
unsigned char idle_dim; // GUI
unsigned char ddc; // GUI
} backlight;
struct

View File

@ -454,8 +454,9 @@ e_desk_last_focused_focus(E_Desk *desk)
evas_object_raise(ecs->frame);
return ecs;
}
if (e_client_focused_get())
if (e_client_focused_get()) {
evas_object_focus_set(e_client_focused_get()->frame, 0);
}
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)
visible = evas_object_visible_get(m->ec->frame);
if (m->ec->iconic) visible = EINA_FALSE;
if (visible)
{
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);
}
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_deskmirror_mirror_reconfigure(m);
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 =
eina_list_remove_list(_e_exec_recent->files, l);
eina_stringshare_del(fl->file);
free(fl);
}
}
@ -160,7 +161,7 @@ _e_exec_recent_load(void)
}
fl->file = eina_stringshare_add(buf);
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);
}

View File

@ -35,8 +35,9 @@ e_focus_event_mouse_out(E_Client *ec)
{
if (!ec->lock_focus_in)
{
if (ec->focused)
evas_object_focus_set(ec->frame, 0);
if (ec->focused) {
e_client_revert_focus(ec);
}
}
}
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) &&
(!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_PLAIN)))
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);
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) &&
(!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_INSET)))
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);
mi = e_menu_item_new(menu_gadget);

View File

@ -22,6 +22,7 @@ typedef struct {
static int gesture_capable_devices = 0;
static E_Bindings_Swipe_Live_Update live_update;
static void* live_update_data;
static Eina_List *handlers = NULL;
static Swipe_Stats*
_find_swipe_gesture_recognizition(Elput_Device *dev)
@ -208,10 +209,41 @@ _shutdown_for_x11(void)
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_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)
{
_init_for_x11();
@ -219,10 +251,10 @@ e_gesture_init(void)
active_gestures = eina_hash_pointer_new(_stats_free);
ecore_event_handler_add(ELPUT_EVENT_SWIPE_BEGIN, _swipe_cb, NULL);
ecore_event_handler_add(ELPUT_EVENT_SWIPE_UPDATE, _swipe_cb, NULL);
ecore_event_handler_add(ELPUT_EVENT_SWIPE_END, _swipe_cb, NULL);
ecore_event_handler_add(ELPUT_EVENT_SEAT_CAPS, _debug, NULL);
E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SWIPE_BEGIN, _swipe_cb, NULL);
E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SWIPE_UPDATE, _swipe_cb, NULL);
E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SWIPE_END, _swipe_cb, NULL);
E_LIST_HANDLER_APPEND(handlers, ELPUT_EVENT_SEAT_CAPS, _debug, NULL);
return 1;
}
@ -230,6 +262,21 @@ e_gesture_init(void)
E_API int
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)
{
_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;
/* smart code here */
sd->edje = EINA_FALSE;
_e_icon_obj_prepare(obj, sd);
/* FIXME: 64x64 - unhappy about this. use icon size */
sd->loading = 0;

View File

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

View File

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

View File

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

View File

@ -358,6 +358,19 @@ main(int argc,
/* local subsystem functions */
#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
mountopts_check(const char *opts)
{
@ -400,6 +413,8 @@ mountopts_check(const char *opts)
{
p += 4;
errno = 0;
if (!check_is_num_to_comma(p)) return EINA_FALSE;
muid = strtoul(p, &end, 10);
if (muid == ULONG_MAX) return EINA_FALSE;
if (errno) return EINA_FALSE;
@ -414,13 +429,53 @@ mountopts_check(const char *opts)
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
check_uuid(const char *uuid)
{
const char *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;
}
@ -428,9 +483,9 @@ static Eina_Bool
mount_args_check(int argc, char **argv, const char *action)
{
Eina_Bool opts = EINA_FALSE;
struct stat st;
const char *node;
char buf[PATH_MAX];
struct stat st;
if (!strcmp(action, "mount"))
{
@ -451,9 +506,9 @@ mount_args_check(int argc, char **argv, const char *action)
}
else
{
if (strncmp(argv[4], "/dev/", 5)) return EINA_FALSE;
if (stat(argv[4], &st)) return EINA_FALSE;
if (!check_sane_dev(argv[4])) return EINA_FALSE;
}
if (!check_sane_path(argv[5])) return EINA_FALSE;
node = strrchr(argv[5], '/');
if (!node) return EINA_FALSE;
@ -468,8 +523,7 @@ mount_args_check(int argc, char **argv, const char *action)
/path/to/umount /dev/$devnode
*/
if (argc != 3) return EINA_FALSE;
if (strncmp(argv[2], "/dev/", 5)) return EINA_FALSE;
if (stat(argv[2], &st)) return EINA_FALSE;
if (!check_sane_dev(argv[2])) return EINA_FALSE;
node = strrchr(argv[2], '/');
if (!node) 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
*/
if (argc != 3) return EINA_FALSE;
if (strncmp(argv[2], "/dev/", 5)) return EINA_FALSE;
if (stat(argv[2], &st)) return EINA_FALSE;
if (!check_sane_dev(argv[2])) return EINA_FALSE;
node = strrchr(argv[2], '/');
if (!node) 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);
if (ret == 1) return 1;
else if (ret == -1)
return 0;
/* the DEFAULT - allow */
return 1;
else if (ret == -1) return 0;
return 0; // no sysactions.conf file found - just say no. bad system
}
static int

View File

@ -134,7 +134,23 @@ e_theme_border_find(const char *border)
E_API Eina_List *
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

View File

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

View File

@ -3,13 +3,13 @@ Encoding=UTF-8
Type=Application
Name=Fingerprint Password Settings
Name[de]=Fingerprint Passwort Einstellungen
Name[fr]=Reconnaissance des empreintes digitales
Name[fr]=Reconnaissance par empreinte digitale
Name[it]=Impostazioni impronte digitali
Name[pt]=Definições de palavras-passe de impressão digital
Icon=enlightenment_fprint
Exec=enlightenment_fprint
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[pt]=Ferramenta para configurar ou modificar a autenticação das impressões digitais
GenericName=GUI for Fingerprint Authentication

View File

@ -508,7 +508,7 @@ main(int argc, char *argv[])
ECORE_GETOPT_VALUE_NONE
};
int args;
char **cmds;
char **cmds = NULL;
args = ecore_getopt_parse(&options, values, argc, argv);
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;
if (eldbus_message_iter_arguments_get(var, "b", &val))
{
o->connected = val;
printf("BZ: change connected for %s to %i\n", o->address, o->connected);
}
}
else if (!strcmp(skey, "Trusted"))
{

View File

@ -294,7 +294,7 @@ ebluez5_instances_update(void)
static void
_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);
eina_stringshare_del(dev->addr);
@ -332,27 +332,6 @@ ebluez5_device_prop_find(const char *address)
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
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 D conf_device_edd
E_CONFIG_VAL(D, T, addr, STR);
E_CONFIG_VAL(D, T, force_connect, UCHAR);
E_CONFIG_VAL(D, T, unlock, UCHAR);
conf_edd = E_CONFIG_DD_NEW("Config", Config);
@ -438,6 +416,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
Config_Adapter *ad;
Config_Device *dev;
e_gadcon_provider_unregister(&_gc_class);
if (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
{
const char *addr;
Eina_Bool force_connect;
Eina_Bool unlock;
};

View File

@ -43,21 +43,12 @@ _devices_eval(void)
if (o->paired)
{
Eina_Bool need_ping = EINA_FALSE;
Obj *adapter = bz_obj_find(o->adapter);
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);
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)
{
printf("=== unlock...\n");
@ -303,24 +294,6 @@ _cb_unlock_stop(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
_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
_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);
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)
{

View File

@ -24,6 +24,7 @@ struct _E_Config_Dialog_Data
double error;
double length;
unsigned int fingers;
int gesture_open_input_devices;
} locals;
struct
{
@ -75,6 +76,15 @@ _auto_apply_changes(E_Config_Dialog_Data *cfdata)
E_Action_Group *actg;
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]) ||
(!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.cur = NULL;
cfdata->locals.dia = NULL;
cfdata->locals.gesture_open_input_devices = e_config->gesture_open_input_devices;
cfdata->binding.swipe = NULL;
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 *
_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;
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);
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);
_fill_actions_list(cfdata);

View File

@ -289,7 +289,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
grp++;
}
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 */
ol = e_widget_list_add(evas, 0, 0);

View File

@ -17,6 +17,7 @@ struct _E_Config_Dialog_Data
Evas_Object *backlight_slider_fade;
int enable_idle_dim;
int ddc;
double backlight_normal;
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_transition = e_config->backlight.transition;
cfdata->enable_idle_dim = e_config->backlight.idle_dim;
cfdata->ddc = e_config->backlight.ddc;
cfdata->backlight_timeout = e_config->backlight.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.battery_timer = lround(cfdata->backlight_battery_timeout);
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_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.timer, cfdata->backlight_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
@ -152,6 +156,9 @@ _advanced_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_
&(cfdata->backlight_dim), NULL, 100);
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));
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,

View File

@ -1078,7 +1078,7 @@ _e_fwin_page_favorites_add(E_Fwin_Page *page)
e_widget_scrollframe_focus_object_set(o, page->flist);
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);
}

View File

@ -163,7 +163,10 @@ _e_mod_menu_populate_item(void *data, Eio_File *handler EINA_UNUSED, const Eina_
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 (!strncmp(mime, "image/", 6))
{
@ -406,7 +409,10 @@ _e_mod_menu_recent_cb(void *data EINA_UNUSED,
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)
{
@ -437,13 +443,12 @@ _e_mod_menu_recent_cb(void *data EINA_UNUSED,
}
}
static void
_e_mod_menu_populate_recent_cb(void *data EINA_UNUSED,
E_Menu *m 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();
E_Exec_Recent_File *fl;
E_Menu *subm;
@ -459,7 +464,10 @@ _e_mod_menu_populate_recent_cb(void *data EINA_UNUSED,
fname = ecore_file_file_get(fl->file);
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);
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);
if (mime)
{
const char *icon = NULL;
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);
edje_file = e_theme_edje_file_get("base/theme/icons", buf);
if (edje_file)
EINA_LIST_FOREACH(e_config->mime_icons, ll, minf)
{
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
{
icon_file = efreet_mime_type_icon_get(mime, e_config->icon_theme, 48);
e_menu_item_icon_file_set(mi2, icon_file);
snprintf(buf, sizeof(buf), "fileman/mime/%s", mime);
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);
}
static void
_e_mod_fileman_add_recent(E_Menu *m,
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)
zone = eina_list_data_get(e_comp->zones);
}
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";
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";
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");
}

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)
{
Eldbus_Message_Iter *s;
const char *name;
if (e_client_util_ignored_get(ec)) continue;
eldbus_message_iter_arguments_append(array, "(si)", &s);
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));
eldbus_message_iter_container_close(array, s);
}

View File

@ -63,8 +63,9 @@ _notification_popup_merge(E_Notification_Notify *n)
len = strlen(popup->notif->body);
len += strlen(n->body);
len += 5; /* \xE2\x80\xA9 or <PS/> */
if (len < 8192) body_final = alloca(len + 1);
else body_final = malloc(len + 1);
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);
@ -74,7 +75,8 @@ _notification_popup_merge(E_Notification_Notify *n)
e_object_del(E_OBJECT(popup->notif));
popup->notif = n;
if (len >= 8192) free(body_final);
free(body_final);
}
return popup;
}
@ -271,7 +273,6 @@ static Popup_Data *
_notification_popup_new(E_Notification_Notify *n, unsigned id)
{
Popup_Data *popup;
char buf[PATH_MAX];
Eina_List *l;
int pos = next_pos;
E_Zone *zone = NULL;
@ -305,10 +306,7 @@ _notification_popup_new(E_Notification_Notify *n, unsigned id)
popup->e = e_comp->evas;
/* Setup the theme */
snprintf(buf, sizeof(buf), "%s/e-module-notification.edj",
notification_mod->dir);
popup->theme = edje_object_add(popup->e);
e_theme_edje_object_set(popup->theme,
"base/theme/modules/notification",
"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;
o = e_comp_object_util_mirror_add(popup->theme);
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_data_set(o, "zone", zone);
evas_object_geometry_get(popup->win, NULL, NULL, &w, &h);
@ -488,19 +487,10 @@ _notification_popup_refresh(Popup_Data *popup)
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);
if (!e_theme_edje_object_set(popup->app_icon,
e_theme_edje_object_set(popup->app_icon,
"base/theme/modules/notification",
"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");
"e/modules/notification/logo");
w = width;
h = height;
}

View File

@ -37,6 +37,7 @@ packagekit_icon_update(E_PackageKit_Module_Context *ctxt,
count++;
break;
default:
count++;
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;
Eina_List *l;
Pager *p;
Pager *p = NULL;
Pager_Popup *pp;
Pager_Desk *pd;
if (!eina_list_count(pagers)) return ECORE_CALLBACK_PASS_ON;
current_desk = ev->desk;
EINA_LIST_FOREACH(pagers, l, p)
{
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)
edje_object_part_text_set(p->popup->o_bg, "e.text.label", ev->desk->name);
break;
}
if ((pager_config->popup) && (!act_popup) &&
((ecore_time_get() - _pager_start_time) > 0.5)) //. not at start
{
if ((pp = _pager_popup_find(ev->desk->zone)))
{
evas_object_show(pp->popup);
pd = _pager_desk_find(pp->pager, current_desk);
if (pd) _pager_desk_select(pd);
}
else
{
pp = _pager_popup_new(ev->desk->zone, 0, EINA_TRUE);
}
if (pp->timer)
ecore_timer_loop_reset(pp->timer);
else
pp->timer = ecore_timer_add(pager_config->popup_speed,
_pager_popup_cb_timeout, pp);
if (p)
p->popup = pp;
}
return ECORE_CALLBACK_PASS_ON;
@ -1853,6 +1863,17 @@ static Eina_Bool
_pager_popup_cb_timeout(void *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;
_pager_popup_free(pp);
@ -1883,7 +1904,6 @@ static int
_pager_popup_show(void)
{
E_Zone *zone;
int x, y, w, h;
Pager_Popup *pp;
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));
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);
return 1;
}

View File

@ -8,6 +8,8 @@
#define POLL_INTERVAL 2.0
static Ecore_Event_Handler *_proc_stats_handler_fullscreen = NULL;
static int64_t _mem_total;
typedef struct
@ -32,6 +34,7 @@ typedef struct
uint64_t mem_size;
uint64_t cpu_time;
uint64_t cpu_time_prev;
Eina_Bool was_maximized;
} Proc_Stats_Client;
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 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_popup_add(Proc_Stats_Client *client);
static void _proc_stats_client_popup_del(Proc_Stats_Client *client);
static Eina_Bool
_memory_total(void)
@ -74,6 +79,28 @@ _memory_total(void)
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
_proc_stats_client_exists(E_Client *ec)
{
@ -91,8 +118,7 @@ _proc_stats_client_exists(E_Client *ec)
static void
_proc_stats_client_del(Proc_Stats_Client *client)
{
if (client->popup) evas_object_del(client->popup);
client->popup = NULL;
_proc_stats_client_popup_del(client);
edje_object_signal_emit(client->frame_obj, "e,state,procstats,off", "e");
evas_object_del(client->obj);
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
_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 *pb;
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);
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);
if (client->ec->maximized)
{
elm_ctxpopup_direction_priority_set(o, ELM_CTXPOPUP_DIRECTION_DOWN,
ELM_CTXPOPUP_DIRECTION_UP,
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);
}
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
_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);
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->frame_obj, EVAS_CALLBACK_RESIZE, _proc_stats_client_resize_cb, 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->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());
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);
ecore_event_handler_del(_proc_stats_handler_fullscreen);
_proc_stats_handler_fullscreen = NULL;
EINA_LIST_FREE(module->clients, 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;
_share_done();
if (cnp)
if ((cnp) && (cnp_file))
{
_cnp_file(cnp_file);
eina_stringshare_replace(&cnp_file, NULL);
cnp = 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[] =
{
".svg",
".png",
".jpg",
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);
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++)
{
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);
if (ecore_file_exists(buf))
{
printf("SYSTRAY: actually load [%s] size=%lli\n", buf, ecore_file_size(buf));
e_icon_file_set(image, buf);
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);
if (ecore_file_exists(buf))
{
printf("SYSTRAY: actually load [%s] size=%lli\n", buf, ecore_file_size(buf));
e_icon_file_set(image, buf);
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);
if (ecore_file_exists(buf))
{
printf("SYSTRAY: actually load [%s] size=%lli\n", buf, ecore_file_size(buf));
e_icon_file_set(image, buf);
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)
{
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));
evas_object_image_alpha_set(o, 1);
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);
}
else
{
e_util_icon_theme_set(image, "dialog-error");
printf("SYSTRAY: icon requested just does not exist - error in client\n");
}
}
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);
evas_object_size_hint_min_set(ww->bg_object, mw, mh);
rowlen += mw;
if (rowlen > lw)
if ((rowlen > lw) && (mw != rowlen))
{
rowlen = 0;
boxes = elm_box_children_get(bl->data);

View File

@ -232,9 +232,7 @@ _create_data(E_Config_Dialog *cfd)
static void
_list_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Evas_Object **o;
o = data;
Evas_Object **o = data;
*o = NULL;
}
@ -246,12 +244,29 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
_xkb.cfd = NULL;
if (cfdata->compose_list)
evas_object_event_callback_del(cfdata->compose_list, EVAS_CALLBACK_DEL, _list_del);
if (cfdata->lv3_list)
evas_object_event_callback_del(cfdata->lv3_list, EVAS_CALLBACK_DEL, _list_del);
if (cfdata->switch_list)
evas_object_event_callback_del(cfdata->switch_list, EVAS_CALLBACK_DEL, _list_del);
#define FRAME_DEL(list) \
if (list) { \
evas_object_del(list); \
list = NULL; \
}
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)
{