Compare commits

...

64 Commits

Author SHA1 Message Date
Spam Me e0ccb08d0a Add german translations 2022-05-09 11:28:08 +02:00
Carsten Haitzler c8b1077de6 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-04-27 14:51:55 +01:00
Alastair Poole b413ee5d03 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-04-25 15:21:19 +01:00
Carsten Haitzler e4768d53f0 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-04-15 12:50:50 +01:00
Carsten Haitzler 582cbf8af8 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-04-15 11:03:15 +01:00
maxerba f9b5d44681 Updating french and italian translations 2022-04-13 20:25:44 +02:00
Carsten Haitzler d24370afb6 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-04-13 15:21:38 +01:00
Carsten Haitzler 7e6736e743 shot - be clear about the shot uploads being unecrypted and available
we were clear, but just to be sure - tell people more expicitly that
it's all totally out-there-public data...
2022-04-12 13:16:25 +01:00
Carsten Haitzler 1fe64f8b01 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-04-11 12:29:14 +01:00
Carsten Haitzler ff90c852a7 ptr - fix cursor getting stuck in resize after blanking
i now saw this... i don't know why now... and consistently. fixed.

@fix
2022-04-07 22:17:43 +01:00
Carsten Haitzler 19724dc3e8 pointer - null out deleted strings
avoids them being accessed incorrectly later
@fix
2022-04-04 15:02:38 +01:00
Carsten Haitzler bb8874930b fix more unfullscreen clicker/toggle when window is small...
another codepath for the fullscreen flicker bug via the job handler

@fix
2022-04-02 11:01:01 +01:00
Carsten Haitzler 1051c77d31 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-03-25 10:40:00 +00:00
Carsten Haitzler f81387470f xkb - use new feature to ignore just xmodmap changes
this avoids e re-setting kbd layouts on just "xmomdmap" changes. needs
new feature in efl slated for efl 1.27
2022-03-24 17:54:30 +00:00
Carsten Haitzler 5d430a3fa6 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-03-22 12:42:33 +00:00
Carsten Haitzler 6f59af7e9f winlist - fix 0 item lenth rows - have at least 1 item
this fixes winlist large mode sometimes losing windows in the view.

@fix
2022-03-22 12:41:01 +00:00
Alastair Poole 0fc17828f6 procstats: fix popup state on maximize/unmaximize 2022-03-08 10:51:21 +00:00
Carsten Haitzler 9e23feb482 comp - fix event shape to account for txt/texblock and img properly
@fix
2022-03-08 01:30:57 +00:00
Carsten Haitzler 6bdd1abbe2 comp - fix shapoe event to skip clippers 2022-03-08 01:30:57 +00:00
Simon Lees 3331e87184 Tasks: choose a readable default preview size.
The preview at 32px is practically unreadable 240px is probably
a much more sensible default value
2022-03-04 19:11:15 +10:30
Carsten Haitzler 6dac5c5cd0 remove unused var. 2022-03-02 11:44:02 +00:00
maxerba d61b06aa77 Updating french and italian translations 2022-02-25 14:28:52 +01:00
Carsten Haitzler fd7b1e4b37 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-02-24 18:44:14 +00:00
Carsten Haitzler bffe5a426c 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-02-20 11:53:15 +00:00
maxerba 8368850157 Updating french translation 2022-02-18 20:52:28 +01:00
Carsten Haitzler 12cbf43ae2 pkgkit - count pkgs total in gadgets
@fix
2022-02-07 10:45:17 +00:00
Carsten Haitzler e8c5e18fdf deskmirror - donbt show iconified windows
@fix
2022-02-02 19:35:41 +00:00
Carsten Haitzler 2eb76774ef build - fix cc.links for bsd case to use args not link args
@fix
2022-02-02 18:17:58 +00:00
Carsten Haitzler 6ed1e61996 focus - fix some lingering mis-focus issues
finally fix T8980 (i hope)
@fix
2022-02-01 12:30:00 +00:00
Carsten Haitzler b4a05429d0 modules - add procstats to whitelist 2022-02-01 12:28:49 +00:00
Carsten Haitzler 93fa4e6393 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-01-31 11:39:15 +00:00
Carsten Haitzler 6fe4d9c9b7 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-01-30 11:34:51 +00:00
Marcel Hollerbach 349acb214d e_client: fix more focus weirdness
parent should be raised, even though it is not the modal.
2022-01-28 18:26:00 +01:00
Carsten Haitzler 18a86f2f64 efm - do same mime lookup method as efm in recents menu
@fix
2022-01-27 17:13:36 +00:00
Carsten Haitzler aa93a66b5f desklock settinghs - fix kbd layout list to fill vert
@fix
2022-01-24 14:14:31 +00:00
maxerba 244e479bc3 Updating french and italian translations 2022-01-22 20:33:54 +01:00
Carsten Haitzler cef95a0189 shot - reset cnp flag once cnp'd
otherwise we segv assuming we are doing cnp still and access a null
cnp_file.

@fix
2022-01-22 18:45:38 +00:00
Carsten Haitzler ea97371770 focus out - ignore all ungrabs as we unfocus a window that should be
this fixes a boundary case on mouse ungrabs

@fix
2022-01-21 21:05:32 +00:00
Carsten Haitzler 921f5208e7 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-01-21 16:10:38 +00:00
Christopher Michael 6d2b5e9144 e_about: Update copyright year 2022-01-20 11:37:36 -05:00
Carsten Haitzler b84fc34d08 bz5 - dont ping devices on unpowered adapter
@fix
2022-01-20 11:12:22 +00:00
Carsten Haitzler dcc02e3bd2 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-01-19 11:52:36 +00:00
Carsten Haitzler 264b59c42f 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-01-18 21:17:54 +00:00
Carsten Haitzler 29e1a12da3 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-01-17 22:23:07 +00:00
Carsten Haitzler 58462390be ibar - emit left/right a;ign if gadcon is left/right vertical
@fix
2022-01-17 20:56:45 +00:00
Carsten Haitzler f615a2120d theme - ibar/ibox label overlay - properly align with text min size
@fix
2022-01-17 20:56:03 +00:00
Carsten Haitzler 6ad07d07c2 fileman - fix favorites to scale
@fix
2022-01-12 14:24:34 +00:00
Carsten Haitzler b6da0ac873 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-01-09 16:40:21 +00:00
Marcel Hollerbach f7708c6e74 focus: leave frame focus setting here
that might cause bugs, however, everything else might end up in a
endless recursion.
2022-01-09 17:38:55 +01:00
Carsten Haitzler 47767cf645 bluez mod - on unload deregister gadcon class
fix leak of this class on unload.

@fix
2022-01-09 15:26:03 +00:00
Marcel Hollerbach 841c8f477f 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-01-09 15:51:34 +01:00
Carsten Haitzler aff854b2ea e focus - volume - dont allow obj focus that disturbs the rest of e
this messes up focus on windows etc. ... quick fix - dont allow the
slider to be focused... :)

@fix
2022-01-09 14:48:26 +00:00
maxerba a471788444 Updating french and portuguese translations 2022-01-09 09:31:34 +01:00
Carsten Haitzler 61584a5f57 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-01-07 00:10:13 +00:00
Marcel Hollerbach 1f69e41daa add forgotten header define 2022-01-06 21:40:14 +01:00
Marcel Hollerbach 2d86d75139 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-01-06 20:57:38 +01:00
Carsten Haitzler e2e1b1956d e_icon - switch from edj/std icon to custom img file properly
@fix
2022-01-05 11:50:33 +00:00
Carsten Haitzler 0f17a85674 systray - add more debugging to find clients that act oddly
@fix
2022-01-05 11:50:11 +00:00
Carsten Haitzler 32e65c1f21 let's go back to dev mode .99 2022-01-03 12:11:05 +00:00
Carsten Haitzler 0603300828 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
2021-12-31 13:25:45 +00:00
Carsten Haitzler ba156d2f46 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
2021-12-30 17:03:35 +00:00
Carsten Haitzler 0404e68632 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
2021-12-28 18:38:52 +00:00
Carsten Haitzler 45bd61df30 release - 0.25 2021-12-26 14:22:41 +00:00
maxerba 73cf441836 Updating french translation 2021-12-21 14:16:04 +01:00
57 changed files with 1725 additions and 1408 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

@ -1,19 +1,21 @@
[Desktop Entry]
Type=Link
Name=Tiling (Standard Enlightenment)
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[ms]=Penjubinan (Enlightenment Piawai)
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[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.
Icon=enlightenment-tiling
[Desktop Entry]
Type=Link
Name=Tiling (Standard Enlightenment)
Name[ca]=Mosaic (Standard Enlightenment)
Name[de]=Kacheln (Vorgabe Enlightenment)
Name[fi]=Limittävä (Tavallinen Enlightenment)
Name[fr]=Pavage (Enlightenment standard)
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.
Icon=enlightenment-tiling

View File

@ -1,6 +1,6 @@
##### project
project('enlightenment', 'c',
version : '0.24.99',
version : '0.25.99',
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

View File

@ -27,7 +27,7 @@ msgstr ""
"Project-Id-Version: Enlightenment\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-04-19 16:15+0200\n"
"PO-Revision-Date: 2020-04-18 14:50+0200\n"
"PO-Revision-Date: 2022-05-06 11:31+0200\n"
"Last-Translator: Simon Tischer <simon@t-tischer.de>\n"
"Language-Team: E17-de\n"
"Language: de\n"
@ -35,7 +35,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ../src\n"
"X-Poedit-KeywordsList: N_;_\n"
"X-Poedit-SearchPath-0: .\n"
@ -4738,11 +4738,11 @@ msgstr "Sprechblase"
#: src/modules/shot/e_mod_edit.c:1978
msgid "Kaboom splat"
msgstr "Kaboom! Patch!"
msgstr "Kaboom! Patsch!"
#: src/modules/shot/e_mod_edit.c:1979
msgid "Pow explode"
msgstr "Zack! Explosion!"
msgstr "Zack! Explosion"
#: src/modules/shot/e_mod_edit.c:1987
msgid "Color"
@ -5487,15 +5487,17 @@ msgid_plural ""
">The default keys which must be held to activate these bindings<ps/>is '%s'. "
"Configure the modifiers for this binding below."
msgstr[0] ""
"Enlightenment nutzt mausgesteuerte Aktionen für Fenster. <br> Diese Aktionen "
"beinhalten:<br>* <b>Bewegen</b> (Linke Taste)<br>* <b>Größe ändern</b> "
"(Mittlere Taste)<br>* <b>Menu öffnen</b> (Rechte Taste)<br> Die standard "
"Taste um diese Aktionen bei klick zu aktivieren<br> ist %s."
"Voreingestellte Enlightenment Maus-Aktionen <br> Die voreingestellten "
"Aktionen beinhalten:<br>* <b>Bewegen</b> (Linke Taste)<br>* <b>Größe ändern</"
"b> (Mittlere Taste)<br>* <b>Menu öffnen</b> (Rechte Taste)<br> Die Tastatur-"
"Taste, die gedrückt werden muß, damit dies aktiv ist,<br> ist %s. Die "
"Einstellungen dieser Tasten-Aktionen können unten eingestellt werden."
msgstr[1] ""
"Enlightenment nutzt mausgesteuerte Aktionen für Fenster. <br> Diese Aktionen "
"beinhalten:<br>* <b>Bewegen</b> (Linke Taste)<br>* <b>Größe ändern</b> "
"(Mittlere Taste)<br>* <b>Menu öffnen</b> (Rechte Taste)<br> Die standard "
"Tasten um diese Aktionen bei klick zu aktivieren<br> sind %s.<br>"
"Voreingestellte Enlightenment Maus-Aktionen <br> Die voreingestellten "
"Aktionen beinhalten:<br>* <b>Bewegen</b> (Linke Taste)<br>* <b>Größe ändern</"
"b> (Mittlere Taste)<br>* <b>Menu öffnen</b> (Rechte Taste)<br> Die Tastatur-"
"Tasten, die gedrückt werden müssen, damit dies aktiv ist,<br> sind %s. Die "
"Einstellungen dieser Tasten-Aktionen können unten eingestellt werden."
#: src/modules/wizard/page_150.c:28
msgid "Compositing"
@ -5862,7 +5864,7 @@ msgid ""
"correctly installed and running"
msgstr ""
"Fehler bei der Initialisierung von D-Bus! Prüfen Sie, ob D-Bus korrekt "
"installiert ist und auch läuft."
"installiert ist und auch läuft"
#: src/modules/luncher/config.c:172
msgid "Create new Luncher source"
@ -6163,11 +6165,11 @@ msgstr "Keine Sortirung"
#: src/modules/everything/evry_config.c:506
msgid "By usage"
msgstr "nach Verwendung"
msgstr "Nach Verwendung"
#: src/modules/everything/evry_config.c:509
msgid "Most used"
msgstr "nach meist verwendet"
msgstr "Nach am Meisten verwendet"
#: src/modules/everything/evry_config.c:512
msgid "Last used"
@ -7113,7 +7115,7 @@ msgstr "Die Tastenbelegung die Sie eingegeben haben wird bereits verwendet!"
#: src/modules/quickaccess/e_mod_quickaccess.c:833 src/bin/e_shelf.c:2384
#: src/bin/e_bryce.c:813
msgid "Autohide"
msgstr "autom. ausblenden"
msgstr "Autom. ausblenden"
#: src/modules/quickaccess/e_mod_quickaccess.c:839
msgid "Hide Instead Of Raise"
@ -9479,7 +9481,7 @@ msgstr "Gadget Leiste"
#: src/bin/e_bryce.c:807
msgid "Autosize"
msgstr "autom. Größe"
msgstr "Autom. Größe"
#: src/bin/e_bryce.c:819
msgid "Bar Settings"
@ -9540,9 +9542,9 @@ msgid ""
"<hilight>Backspace</hilight> or <hilight>Delete</hilight> to remove all "
"gadgets from this screen"
msgstr ""
"Zum Beenden auf <hilight>Esc</hilight> drücken oder auf den Hintergrund "
"klicken. <ps/><hilight>Rücktaste</hilight> oder <hilight>Entf.</hilight>, "
"entfernt alle Gadgets von diesem Bildschirm."
"Zum Beenden <hilight>Esc</hilight> drücken oder auf den Hintergrund klicken. "
"<ps/><hilight>Rücklöschen</hilight> oder <hilight>Entf.</hilight> entfernt "
"alle Gadgets von diesem Bildschirm"
#: src/bin/e_color_dialog.c:25
msgid "Color Selector"
@ -10030,7 +10032,7 @@ msgstr ""
#: src/bin/e_module.c:237
msgid "Module does not contain all needed functions"
msgstr "Das Modul enthält nicht alle benötigten Funktionen."
msgstr "Das Modul enthält nicht alle benötigten Funktionen"
#: src/bin/e_module.c:252
#, c-format
@ -10701,7 +10703,7 @@ msgstr "Zu unterer Arbeitsfläche wechseln"
#: src/bin/e_actions.c:3414
msgid "Flip Desktop By..."
msgstr "Arbeitsfläche um ... wechseln"
msgstr "Arbeitsfläche ...mal wechseln"
#: src/bin/e_actions.c:3420
msgid "Flip To Previous Desktop"
@ -10717,15 +10719,15 @@ msgstr "Modulablage anzeigen"
#: src/bin/e_actions.c:3436
msgid "Flip Desktop To..."
msgstr "Zu Arbeitsfläche ... wechseln"
msgstr "Zu Arbeitsfläche ... wechseln."
#: src/bin/e_actions.c:3441
msgid "Switch Desktop To... On Screen..."
msgstr "Zu Arbeitsfläche ... auf Bildschirm ... wechseln"
msgstr "Zu Arbeitsfläche ... auf Bildschirm ... wechseln."
#: src/bin/e_actions.c:3447
msgid "Flip Desktop Linearly..."
msgstr "Linear zu Arbeitsfläche wechseln um... "
msgstr "Linear zu Arbeitsfläche wechseln um..."
#: src/bin/e_actions.c:3453
msgid "Switch To Desktop 0"
@ -10777,7 +10779,7 @@ msgstr "Zu Arbeitsfläche 11 wechseln"
#: src/bin/e_actions.c:3477
msgid "Switch To Desktop..."
msgstr "Zu Arbeitsfläche ... wechseln"
msgstr "Zu Arbeitsfläche ... wechseln."
#: src/bin/e_actions.c:3483
msgid "Flip Desktop Left (All Screens)"
@ -10809,7 +10811,7 @@ msgstr "Arbeitsfläche linear nach ... klappen (alle Bildschirme)"
#: src/bin/e_actions.c:3509
msgid "Flip Desktop In Direction..."
msgstr "Arbeitsfläche in Richtung ... klappen"
msgstr "Arbeitsfläche in Richtung ... wechseln."
#: src/bin/e_actions.c:3514
msgid "Switch To Desktop 0 (All Screens)"
@ -10881,7 +10883,7 @@ msgstr "Maus auf Bildschirm 1 verschieben"
#: src/bin/e_actions.c:3557
msgid "Send Mouse To Screen..."
msgstr "Maus auf Bildschirm ... verschieben"
msgstr "Mauszeiger auf Bildschirm ... verschieben"
#: src/bin/e_actions.c:3563
msgid "Send Mouse Forward 1 Screen"
@ -10893,16 +10895,16 @@ msgstr "Maus einen Bildschirm zurückschieben"
#: src/bin/e_actions.c:3567
msgid "Send Mouse Forward/Back Screens..."
msgstr "Maus ... Bildschirme weiter/zurückschieben"
msgstr "Maus ... Bildschirme weiter/zurückschieben."
#: src/bin/e_actions.c:3572
msgid "Dim"
msgstr "abdunkeln"
msgstr "Abdunkeln"
# better ideas, anyone?
#: src/bin/e_actions.c:3575
msgid "Undim"
msgstr "aufhellen"
msgstr "Aufhellen"
#: src/bin/e_actions.c:3578
msgid "Backlight Set"
@ -11539,12 +11541,12 @@ msgstr "Klicken Sie auf ein Objekt, an dem eine Ausrichtung erfolgen soll."
#: src/bin/e_int_client_menu.c:1203
msgid "On window..."
msgstr "auf Fenster..."
msgstr "Auf Fenster..."
#: src/bin/e_int_client_menu.c:1214 src/bin/e_int_client_menu.c:1225
#: src/bin/e_int_client_menu.c:1236 src/bin/e_int_client_menu.c:1247
msgid "Of window..."
msgstr "von Fenster ..."
msgstr "Von Fenster ..."
#: src/bin/e_int_client_menu.c:1274
#, c-format

1058
po/fr.po

File diff suppressed because it is too large Load Diff

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

View File

@ -400,8 +400,8 @@ _e_client_mouse_action_end(E_Client *ec)
E_FREE_FUNC(ec->cur_mouse_action, e_object_unref);
}
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)
@ -644,7 +657,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 +1573,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 +4533,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 +4656,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

@ -693,6 +693,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 +817,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

@ -434,6 +434,7 @@ e_client_volume_object_add(E_Client *ec, Evas *evas)
if (edje_object_part_exists(bx, "e.swallow.volume"))
{
o = elm_slider_add(e_comp->elm);
elm_object_focus_allow_set(o, EINA_FALSE);
elm_slider_min_max_set(o, ec->volume_min,
ec->volume_max);
elm_slider_span_size_set(o, ec->volume_max

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

@ -1877,8 +1877,9 @@ _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

@ -2510,6 +2510,7 @@ _e_comp_x_mapping_change(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_E
E_Client *ec;
if (_e_comp_x_mapping_change_disabled) return ECORE_CALLBACK_RENEW;
printf("COMPX: _e_comp_x_mapping_change\n");
e_comp_canvas_keys_ungrab();
EINA_LIST_FOREACH(e_comp->clients, l, ec)
{
@ -2601,34 +2602,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;
E_Client *ec = NULL;
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 +2717,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 +2887,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 +2907,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 +2920,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;
}
@ -3512,6 +3551,7 @@ _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++;
ecore_x_window_reparent(win, pwin, 0, 0);
e_pixmap_alias(ep, E_PIXMAP_TYPE_X, pwin);
@ -5193,6 +5233,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;

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

@ -879,6 +879,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 +944,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);
@ -1624,52 +1627,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 +1769,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 +1879,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 +1961,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

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));

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
TS("E_Gesture Init");
e_gesture_init();
TS("E_Gesture Init Done");
_e_main_shutdown_push(e_gesture_shutdown);
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");

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

@ -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

@ -77,15 +77,21 @@ _e_xkb_save_group(void *data)
static Eina_Bool
_xkb_new_keyboard(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
{
Ecore_X_Event_Xkb *ev = event;
if (skip_new_keyboard > 0)
{
skip_new_keyboard --;
return ECORE_CALLBACK_PASS_ON;
}
// skip just "xmodmap" changes
if ((ev) && (ev->map_notify)) return ECORE_CALLBACK_PASS_ON;
printf("XKB: EV: _xkb_new_keyboard\n");
//we have to restore our settings here
e_xkb_reconfig();
e_xkb_update(e_config->xkb.cur_group);
e_deskenv_xmodmap_run();
return ECORE_CALLBACK_PASS_ON;
}
@ -104,6 +110,7 @@ _xkb_new_state(void* data EINA_UNUSED, int type EINA_UNUSED, void *event)
static Eina_Bool
_xkb_keymap(void* data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
{
printf("XKB: EV: _xkb_keymap\n");
return ECORE_CALLBACK_PASS_ON;
}
#endif
@ -134,6 +141,7 @@ e_xkb_init(E_Pixmap_Type comp_type)
}
#endif
if (e_config->xkb.dont_touch_my_damn_keyboard) return 1;
printf("XKB: e_xkb_init\n");
_e_xkb_type_reconfig(comp_type);
@ -173,6 +181,7 @@ _e_x_xkb_reconfig(void)
Eina_Strbuf *buf;
if (e_config->xkb.dont_touch_my_damn_keyboard) return;
printf("XKB: _e_x_xkb_reconfig\n");
if ((!e_config->xkb.used_layouts) && (!e_config->xkb.used_options) && (!e_config->xkb.default_model)) return;
if (!getenv("DISPLAY")) return;
@ -256,6 +265,7 @@ static void
_e_x_xkb_update(int cur_group)
{
if (e_config->xkb.dont_touch_my_damn_keyboard) return;
printf("XKB: _e_x_xkb_update\n");
if ((!e_config->xkb.used_layouts) && (!e_config->xkb.used_options) && (!e_config->xkb.default_model)) return;
if (!getenv("DISPLAY")) return;
if (cur_group != _e_xkb_cur_group)
@ -354,6 +364,7 @@ _e_wl_xkb_reconfig(void)
static void
_e_xkb_type_reconfig(E_Pixmap_Type comp_type)
{
printf("XKB: _e_xkb_type_reconfig\n");
if (comp_type == E_PIXMAP_TYPE_X)
_e_x_xkb_reconfig();
else if (comp_type == E_PIXMAP_TYPE_WL)
@ -391,6 +402,7 @@ e_xkb_layout_next(void)
E_Config_XKB_Layout *cl;
if (e_config->xkb.dont_touch_my_damn_keyboard) return;
printf("XKB: e_xkb_layout_next\n");
if (!e_config->xkb.used_layouts) return;
l = eina_list_nth_list(e_config->xkb.used_layouts, e_config->xkb.cur_group);
l = eina_list_next(l);
@ -413,6 +425,7 @@ e_xkb_layout_prev(void)
E_Config_XKB_Layout *cl;
if (e_config->xkb.dont_touch_my_damn_keyboard) return;
printf("XKB: e_xkb_layout_prev\n");
if (!e_config->xkb.used_layouts) return;
l = eina_list_nth_list(e_config->xkb.used_layouts, e_config->xkb.cur_group);
l = eina_list_prev(l);
@ -438,6 +451,7 @@ e_xkb_layout_get(void)
unsigned int n = 0;
if (e_config->xkb.dont_touch_my_damn_keyboard) return NULL;
printf("XKB: e_xkb_layout_get\n");
if (e_config->xkb.current_layout) return e_config->xkb.current_layout;
if (_e_xkb_cur_group >= 0)
n = _e_xkb_cur_group;
@ -453,6 +467,7 @@ e_xkb_layout_set(const E_Config_XKB_Layout *cl)
EINA_SAFETY_ON_NULL_RETURN(cl);
if (e_config->xkb.dont_touch_my_damn_keyboard) return;
printf("XKB: e_xkb_layout_set\n");
if (e_config_xkb_layout_eq(e_config->xkb.current_layout, cl)) return;
cl2 = e_config_xkb_layout_dup(e_config->xkb.current_layout);
e_config_xkb_layout_free(e_config->xkb.current_layout);

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,15 +3,17 @@ Encoding=UTF-8
Type=Application
Name=Fingerprint Password Settings
Name[de]=Fingerprint Passwort Einstellungen
Name[fr]=Reconnaissance des empreintes digitales
Name[it]=Impostazioni impronte digitali
Name[fr]=Reconnaissance par empreinte digitale
Name[it]=Impostazioni autenticazione con impronta digitale
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
GenericName[fr]=Interface d'authentification par empreintes digitales
GenericName[it]=Interfaccia autenticazione con impronta digitale
Categories=Settings;DesktopSettings;
StartupWMClass=enlightenment_fprint

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;
{
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

@ -7,7 +7,7 @@ Name[el]=Everything (Starter)
Name[eo]=Ĉio (lanĉilo)
Name[es]=Everything (Lanzador)
Name[fi]=Everything (Käynnistin)
Name[fr]=Omni
Name[fr]=Omni (Everything)
Name[gl]=Everything (Iniciador)
Name[it]=Everything
Name[ms]=Segalanya (Pemula)
@ -23,7 +23,7 @@ Comment[el]=Το άρθρωμα της εκτέλεση εντολής παρέ
Comment[eo]=La modulo de lanĉo de komandoj provizas dialogon de lanĉilo de aplikaĵoj.
Comment[es]=El módulo de ejecutar comandos provee un diálogo para ejecutar aplicaciones.
Comment[fi]='Aja komento'-moduuli tuo käytettäväksi ikkunan sovellusten käynnistämiseen.
Comment[fr]=Fournit une fenêtre de commande pour lancer des applications.
Comment[fr]=Fournit une boîte de dialogue pour lancer des applications.
Comment[gl]=Este módulo ofrece un diálogo para iniciar aplicativos.
Comment[hu]=A parancs futtató modul egy alkalmazásindítót biztosít a számunkra.
Comment[it]=Questo modulo fornisce una finestra di dialogo per l'esecuzione di comandi.

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_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 (chx - (len / 2) < zone->x)
if ((ic->ibar->inst->orient == E_GADCON_ORIENT_LEFT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_LT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_LB))
sig = "e,origin,left";
else if ((chx + (len / 2) > cw) || ((chx + (len / 2) > zone->x + zone->w)))
else if ((ic->ibar->inst->orient == E_GADCON_ORIENT_RIGHT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_RT) ||
(ic->ibar->inst->orient == E_GADCON_ORIENT_CORNER_RB))
sig = "e,origin,right";
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

@ -25,7 +25,7 @@ Comment[de]=Ein Modul, dass einen Mixer zum Ändern der Lautstärke bereit stell
Comment[eo]=Modulo de sonmiksilo por sxanĝi la sonfortecon.
Comment[es]=Un módulo que proporciona un mezclador para cambiar el volumen.
Comment[fi]=Tämä moduuli tuo käyttöön mikserin äänenvoimakkuuksien säätämistä varten
Comment[fr]=Fournit un mélangeur pour régler le volume.
Comment[fr]=Un module pour paramétrer le volume et les flux.
Comment[gl]=Un módulo que fornece un control para cambiar o volume.
Comment[it]=Un modulo che fornisce un mixer per regolare il volume.
Comment[ms]=Modul untuk sediakan penadun bagi volum yang berubah.

View File

@ -271,7 +271,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 +304,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 +338,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 +485,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,
"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_theme_edje_object_set(popup->app_icon,
"base/theme/modules/notification",
"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);
{
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);
{
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);
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);
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;
}
@ -247,8 +248,9 @@ share_confirm(void)
if (cd) return;
cd = e_confirm_dialog_show
(_("Confirm Share"), NULL,
_("This image will be uploaded<ps/>"
"to enlightenment.org. It will be publicly visible."),
_("This image will be uploaded without any encryption<ps/>"
"to enlightenment.org. All screenshots uploaded are<ps/>"
"available to everyone with no restrictions."),
_("Confirm"), _("Cancel"),
_win_share_confirm_yes, NULL,
NULL, NULL, _win_share_confirm_del, NULL);

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");
{
e_util_icon_theme_set(image, "dialog-error");
printf("SYSTRAY: icon requested just does not exist - error in client\n");
}
}
static void

View File

@ -154,7 +154,7 @@ e_modapi_init(E_Module *m)
config->minw = 100;
config->minh = 32;
config->preview = 0;
config->preview_size = 32;
config->preview_size = 240;
tasks_config->items = eina_list_append(tasks_config->items, config);
}

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)
{