--- /dev/null
-
+%define dbus_unavailable 1
+
+%bcond_with wayland
+%bcond_with x
+Name: elementary
+Version: 1.13.1
+Release: 0
+License: LGPL-2.1+
+Summary: EFL toolkit for small touchscreens
+Url: http://trac.enlightenment.org/e/wiki/Elementary
+Group: Graphics & UI Framework/Development
+Source0: elementary-%{version}.tar.bz2
+Source100: elementary.conf
+Source1001: elementary.manifest
+BuildRequires: doxygen
+BuildRequires: gettext-devel
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(ecore-file)
+BuildRequires: pkgconfig(ecore-imf)
+
+%if %{with wayland}
+BuildRequires: pkgconfig(ecore-wayland)
+%endif
+
+%if %{with x}
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(x11)
+%endif
+
+%if !%{with x}
+%if !%{with wayland}
+BuildRequires: pkgconfig(ecore-fb)
+%endif
+%endif
+
+BuildRequires: pkgconfig(edbus)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(eet)
+BuildRequires: pkgconfig(efreet)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(ethumb)
+BuildRequires: pkgconfig(emotion)
+BuildRequires: eet-tools
+BuildRequires: eolian-devel
+BuildRequires: python-devel
+Recommends: %{name}-locale = %{version}
+
+%description
+Elementary is a widget set. It is a new-style of widget set much more canvas
+object based than anything else. Why not ETK? Why not EWL? Well they both
+tend to veer away from the core of Evas, Ecore and Edje a lot to build their
+own worlds. Also I wanted something focused on embedded devices -
+specifically small touchscreens. Unlike GTK+ and Qt, 75% of the "widget set"
+is already embodied in a common core - Ecore, Edje, Evas etc. So this
+fine-grained library splitting means all of this is shared, just a new
+widget "personality" is on top. And that is... Elementary, my dear watson.
+Elementary.
+
+%package examples
+Summary: EFL elementary examples
+
+%description examples
+EFL elementary examples
+
+%package tools
+Summary: EFL elementary configuration and test apps
+
+%description tools
+EFL elementary configuration and test apps package
+
+%package devel
+Summary: Development files for elementary
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description devel
+Development components for the elementary package
+
+
+%prep
+%setup -q
+cp %{SOURCE1001} .
+
+%build
+
+%autogen --disable-static \
+%if %{with wayland}
+ --enable-ecore-wayland \
+%endif
+%if !%{with x}
+ --disable-ecore-x \
+%endif
+ --with-elementary-base-dir="share/.elementary" \
+%if %dbus_unavailable
+ --disable-build-examples
+%else
+ --enable-build-examples
+%endif
+
+%__make %{?_smp_mflags}
+
+%install
+%make_install
+
+mkdir -p %{buildroot}%{_tmpfilesdir}
+install -m 0644 %SOURCE100 %{buildroot}%{_tmpfilesdir}/elementary.conf
+
+%find_lang %{name}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%lang_package
+
+%files
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+%license COPYING
+%{_bindir}/elementary_quicklaunch
+%{_bindir}/elementary_run
+%{_libdir}/edje/*
+%{_libdir}/elementary/modules/*
+%{_libdir}/*.so.*
+%{_datadir}/elementary/*
+%{_datadir}/icons/elementary.png
+%{_tmpfilesdir}/elementary.conf
+
+%exclude %{_datadir}/elementary/config/
+
+%if ! %dbus_unavailable
+%files examples
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+%{_libdir}/elementary/examples/*
+%endif
+
+%files tools
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+%{_datadir}/applications/*
+%{_bindir}/elementary_config
+%{_bindir}/elementary_test*
+%{_bindir}/elementary_codegen
+%{_bindir}/elm_prefs_cc
+
+%files devel
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+%{_includedir}/%{name}-1/*.h*
+%{_datadir}/eolian/include/%{name}-1/*.eo
+%{_libdir}/*.so
+%{_libdir}/pkgconfig/*.pc
+%{_libdir}/cmake/Elementary/ElementaryConfig.cmake
+%{_libdir}/cmake/Elementary/ElementaryConfigVersion.cmake
++/usr/share/eolian/include/elementary-*1/*.eot
ELM_CONFIG_VAL(D, T, zoom_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, thumbscroll_bounce_enable, T_UCHAR);
ELM_CONFIG_VAL(D, T, scroll_smooth_start_enable, T_UCHAR);
- ELM_CONFIG_VAL(D, T, scroll_smooth_time_interval, T_DOUBLE);
+ // ELM_CONFIG_VAL(D, T, scroll_smooth_time_interval, T_DOUBLE); // not used anymore
ELM_CONFIG_VAL(D, T, scroll_smooth_amount, T_DOUBLE);
- ELM_CONFIG_VAL(D, T, scroll_smooth_history_weight, T_DOUBLE);
- ELM_CONFIG_VAL(D, T, scroll_smooth_future_time, T_DOUBLE);
+ // ELM_CONFIG_VAL(D, T, scroll_smooth_history_weight, T_DOUBLE); // not used anymore
+ // ELM_CONFIG_VAL(D, T, scroll_smooth_future_time, T_DOUBLE); // not used anymore
ELM_CONFIG_VAL(D, T, scroll_smooth_time_window, T_DOUBLE);
ELM_CONFIG_VAL(D, T, scale, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, win_no_border, T_INT);
ELM_CONFIG_VAL(D, T, bgpixmap, T_INT);
ELM_CONFIG_VAL(D, T, compositing, T_INT);
/* EET_DATA_DESCRIPTOR_ADD_LIST(D, T, "font_dirs", font_dirs, sub_edd); */
_elm_config->zoom_friction = 0.5;
_elm_config->thumbscroll_border_friction = 0.5;
_elm_config->thumbscroll_sensitivity_friction = 0.25; // magic number! just trial and error shows this makes it behave "nicer" and not run off at high speed all the time
- _elm_config->scroll_smooth_start_enable = EINA_FALSE;
- _elm_config->scroll_smooth_time_interval = 0.008;
+ _elm_config->scroll_smooth_start_enable = EINA_TRUE;
+ // _elm_config->scroll_smooth_time_interval = 0.008; // not used anymore
_elm_config->scroll_smooth_amount = 1.0;
- _elm_config->scroll_smooth_history_weight = 0.3;
- _elm_config->scroll_smooth_future_time = 0.0;
- _elm_config->scroll_smooth_time_window = 0.2;
+ // _elm_config->scroll_smooth_history_weight = 0.3; // not used anymore
+ // _elm_config->scroll_smooth_future_time = 0.0; // not used anymore
+ _elm_config->scroll_smooth_time_window = 0.15;
_elm_config->scale = 1.0;
+ _elm_config->win_no_border = 0;
_elm_config->bgpixmap = 0;
_elm_config->compositing = 1;
_elm_config->font_hinting = 2;
_desc_shutdown();
- if (_elm_key_bindings)
- eina_hash_free(_elm_key_bindings);
+ ELM_SAFE_FREE(_elm_key_bindings, eina_hash_free);
+ }
++
++/*
++ * Add backwards compatability implementation for elm_scale_get/set and elm_finger_size_get/set
++ * to allow running unmodified Tizen applications on a new drop of elementary
++ */
++
++EAPI double
++elm_scale_get(void)
++{
++ return elm_config_scale_get();
++}
++
++EAPI void
++elm_scale_set(double scale)
++{
++ elm_config_scale_set(scale);
+}
+
+EAPI Evas_Coord
+elm_finger_size_get(void)
+{
+ return elm_config_finger_size_get();
+}
+
++EAPI void
++elm_finger_size_set(Evas_Coord size)
++{
++ elm_config_finger_size_set(size);
++}
* @}
*/
++/*
++ * Add backwards compatability implementation for elm_scale_get and elm_scale_set
++ * to allow running unmodified Tizen applications on a new drop of elementary
++ */
++EAPI double elm_scale_get(void);
++EAPI void elm_scale_set(double scale);
+EAPI Evas_Coord elm_finger_size_get(void);
+EAPI void elm_finger_size_set(Evas_Coord size);
#endif
+// TIZEN_ONLY(20150707): implemented elm_win_conformant_set/get for wayland
+static void
+_on_conformant_changed(void *data,
+ Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ Conformant_Part_Type part_type;
+
+ part_type = (ELM_CONFORMANT_INDICATOR_PART |
+ ELM_CONFORMANT_VIRTUAL_KEYPAD_PART);
+
++ ELM_CONFORMANT_DATA_GET(data, sd);
++
++ /* object is already freed */
++ if (!sd) return;
++
+ _conformant_part_sizing_eval(data, part_type);
+}
+//
+
EOLIAN static void
_elm_conformant_evas_object_smart_add(Eo *obj, Elm_Conformant_Data *_pd EINA_UNUSED)
{
evas_object_data_set(sd->win, "\377 elm,conformant", NULL);
- evas_object_smart_callback_del_full
- (sd->win, "indicator,prop,changed", _on_indicator_mode_changed, obj);
- evas_object_smart_callback_del_full
- (sd->win, "rotation,changed", _on_rotation_changed, obj);
+ eo_do(sd->win,
+ eo_event_callback_del(ELM_WIN_EVENT_INDICATOR_PROP_CHANGED,
+ _on_indicator_mode_changed, obj),
+ eo_event_callback_del(ELM_WIN_EVENT_ROTATION_CHANGED,
+ _on_rotation_changed, obj));
+ // TIZEN_ONLY(20150707): implemented elm_win_conformant_set/get for wayland
+ evas_object_smart_callback_del_full
+ (sd->win, "conformant,changed", _on_conformant_changed, obj);
+ //
eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
}
sd->rot = elm_win_rotation_get(sd->win);
evas_object_data_set(sd->win, "\377 elm,conformant", obj);
- evas_object_smart_callback_add
- (sd->win, "indicator,prop,changed", _on_indicator_mode_changed, obj);
- evas_object_smart_callback_add
- (sd->win, "rotation,changed", _on_rotation_changed, obj);
+ eo_do(sd->win,
+ eo_event_callback_add(ELM_WIN_EVENT_INDICATOR_PROP_CHANGED,
+ _on_indicator_mode_changed, obj),
+ eo_event_callback_add(ELM_WIN_EVENT_ROTATION_CHANGED,
+ _on_rotation_changed, obj));
+ // TIZEN_ONLY(20150707): implemented elm_win_conformant_set/get for wayland
+ evas_object_smart_callback_add
+ (sd->win, "conformant,changed", _on_conformant_changed, obj);
+ //
+
+ return obj;
}
static void
if (oh > gh) ay = (oh - gh) / 2;
}
evas_object_move(sd->img, ox + 0 - px + ax, oy + 0 - py + ay);
- evas_object_resize(sd->img, gw, gh);
+
- if (rw != 0 && rh != 0) // TIZEN_ONLY(20150813): resize image only viewport has a size
++ if (rw != 0 && rh != 0) // TIZEN_ONLY(20150813): resize image only when viewport has a size
+ evas_object_resize(sd->img, gw, gh);
if (sd->show.show)
{
int z = zoom;
if (z < 1) z = 1;
- if (z > 8) z = 8;
++ if (z > 8) z = 8; // TIZEN_ONLY(20150813): need to create 1x1 grid when zoom >= 8 to load high res img
return _nearest_pow2_get(z);
}
g->w = g->iw / g->zoom;
g->h = g->ih / g->zoom;
- if (g->zoom >= 8)
- {
- free(g);
- return NULL;
- }
- if (sd->do_region)
++ // TIZEN_ONLY(20150813): need to create 1x1 grid when zoom >= 8 to load high res img
+ if ((sd->do_region) && (g->zoom < 8))
{
g->gw = (g->w + g->tsize - 1) / g->tsize;
g->gh = (g->h + g->tsize - 1) / g->tsize;
static Eina_Bool
_zoom_anim_cb(void *data)
{
- // double t;
- double t;
++ //double t; // TIZEN_ONLY(20150501): temporarily disable zoom effect
Eina_Bool go;
Evas_Object *obj = data;
ELM_PHOTOCAM_DATA_GET(obj, sd);
- /** TIZEN_ONLY(20150501): temporarily disable zoom effect
-- t = ecore_loop_time_get();
++ // TIZEN_ONLY(20150501): temporarily disable zoom effect
++ /*t = ecore_loop_time_get();
if (t >= sd->t_end)
t = 1.0;
else if (sd->t_end > sd->t_start)
t = 1.0;
t = 1.0 - t;
t = 1.0 - (t * t);
- go = _zoom_do(obj, t);
+ go = _zoom_do(obj, t);*/
+
+ go = _zoom_do(obj, 1.0);
++ //
if (!go)
{
- sd->no_smooth--;
- if (!sd->no_smooth) _smooth_update(data);
sd->zoom_animator = NULL;
- evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL);
+ eo_do(obj, eo_event_callback_call(EVAS_ZOOMABLE_INTERFACE_EVENT_ZOOM_STOP, NULL));
}
return go;
if (ret) *ret = err;
return;
}
- // get image size
- evas_object_image_load_scale_down_set(sd->img, 0);
+
++ evas_object_image_load_scale_down_set(sd->img, 0); // TIZEN_ONLY(20150430): get scaled down image size
evas_object_image_size_get(sd->img, &w, &h);
+
sd->do_region = evas_object_image_region_support_get(sd->img);
sd->size.imw = w;
sd->size.imh = h;
sd->size.w = sd->size.imw / sd->zoom;
sd->size.h = sd->size.imh / sd->zoom;
+ evas_object_image_file_set(sd->img, NULL, NULL);
+ _photocam_image_file_set(sd->img, sd);
+ err = evas_object_image_load_error_get(sd->img);
+ if (err != EVAS_LOAD_ERROR_NONE)
+ {
+ ERR("Things are going bad for '%s' (%p)", file, sd->img);
+ if (ret) *ret = err;
+ return;
+ }
- // load low resolution image
- evas_object_image_load_scale_down_set(sd->img, 8);
++ evas_object_image_load_scale_down_set(sd->img, 8); // TIZEN_ONLY(20150430): load low resolution image
evas_object_image_preload(sd->img, 0);
- evas_object_smart_callback_call(obj, SIG_LOAD, NULL);
++ evas_object_smart_callback_call(obj, SIG_LOAD, NULL); // TIZEN_ONLY(20150430): call load callback
sd->main_load_pending = EINA_TRUE;
sd->calc_job = ecore_job_add(_calc_job_cb, obj);
Evas_Load_Error ret = EVAS_LOAD_ERROR_NONE;
unsigned int i;
++ // TIZEN_ONLY(20150430): use macro
+ // return if the file name is the same as the previous one
+ if ((sd->file) && (file) && !strcmp(sd->file, file)) return EVAS_LOAD_ERROR_NONE;
+
+ // clear things
_grid_clear_all(obj);
+ evas_object_hide(sd->img);
+ if (sd->main_load_pending) evas_object_image_preload(sd->img, 1);
ELM_SAFE_FREE(sd->g_layer_zoom.bounce.animator, ecore_animator_del);
- if (sd->zoom_animator)
+ ELM_SAFE_FREE(sd->zoom_animator, ecore_animator_del);
+ ELM_SAFE_FREE(sd->calc_job, ecore_job_del);
+ ELM_SAFE_FREE(sd->f, eina_file_close);
+ ELM_SAFE_FREE(sd->remote_data, free);
+ if (sd->remote)
{
- sd->no_smooth--;
- if (sd->no_smooth == 0) _smooth_update(obj);
- ecore_animator_del(sd->zoom_animator);
- sd->zoom_animator = NULL;
+ _elm_url_cancel(sd->remote);
+ sd->remote = NULL;
}
- ecore_job_del(sd->calc_job);
- evas_object_hide(sd->img);
- if (sd->f) eina_file_close(sd->f);
- sd->f = NULL;
++ //
- free(sd->remote_data);
- if (sd->remote) _elm_url_cancel(sd->remote);
- sd->remote = NULL;
sd->preload_num = 0;
for (i = 0; i < sizeof (remote_uri) / sizeof (remote_uri[0]); ++i)
Eina_List *l;
Ecore_Animator *an;
Elm_Phocam_Grid *g, *g_zoom = NULL;
- Evas_Coord rx, ry, rw, rh;
- int started = 0;
- Evas_Coord pw, ph, rx, ry, rw, rh;
++ Evas_Coord rx, ry, rw, rh; // TIZEN_ONLY(20150813): make as a function for reusability
+ int zoom_changed = 0, started = 0;
if (zoom <= (1.0 / 256.0)) zoom = (1.0 / 256.0);
if (zoom == sd->zoom) return;
(NULL, NULL, &rw, &rh));
if ((rw <= 0) || (rh <= 0)) return;
- if (sd->mode == ELM_PHOTOCAM_ZOOM_MODE_MANUAL)
- {
- sd->size.nw = (double)sd->size.imw / sd->zoom;
- sd->size.nh = (double)sd->size.imh / sd->zoom;
- }
- else if (sd->mode == ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT)
- {
- if ((sd->size.imw < 1) || (sd->size.imh < 1))
- {
- sd->size.nw = 0;
- sd->size.nh = 0;
- }
- else
- {
- ph = (sd->size.imh * rw) / sd->size.imw;
- if (ph > rh)
- {
- pw = (sd->size.imw * rh) / sd->size.imh;
- ph = rh;
- }
- else
- {
- pw = rw;
- }
- if (sd->size.imw > sd->size.imh)
- z = (double)sd->size.imw / pw;
- else
- z = (double)sd->size.imh / ph;
- if (z != sd->zoom)
- zoom_changed = 1;
- sd->zoom = z;
- sd->size.nw = pw;
- sd->size.nh = ph;
- }
- }
- else if (sd->mode == ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL)
- {
- if ((sd->size.imw < 1) || (sd->size.imh < 1))
- {
- sd->size.nw = 0;
- sd->size.nw = 0;
- }
- else
- {
- ph = (sd->size.imh * rw) / sd->size.imw;
- if (ph < rh)
- {
- pw = (sd->size.imw * rh) / sd->size.imh;
- ph = rh;
- }
- else
- {
- pw = rw;
- }
- if (sd->size.imw > sd->size.imh)
- z = (double)sd->size.imw / pw;
- else
- z = (double)sd->size.imh / ph;
- if (z != sd->zoom)
- zoom_changed = 1;
- sd->zoom = z;
- sd->size.nw = pw;
- sd->size.nh = ph;
- }
- }
- else if (sd->mode == ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN)
- {
- if ((sd->size.imw < 1) || (sd->size.imh < 1))
- {
- sd->size.nw = 0;
- sd->size.nh = 0;
- }
- else if ((sd->size.imw < rw) && (sd->size.imh < rh))
- {
- if (1 != sd->zoom) zoom_changed = 1;
- sd->zoom = 1;
- sd->size.nw = sd->size.imw;
- sd->size.nh = sd->size.imh;
- }
- else
- {
- ph = (sd->size.imh * rw) / sd->size.imw;
- if (ph > rh)
- {
- pw = (sd->size.imw * rh) / sd->size.imh;
- ph = rh;
- }
- else
- pw = rw;
- if (sd->size.imw > sd->size.imh)
- z = (double)sd->size.imw / pw;
- else
- z = (double)sd->size.imh / ph;
- if (z != sd->zoom)
- zoom_changed = 1;
- sd->zoom = z;
- sd->size.nw = pw;
- sd->size.nh = ph;
- }
- }
++ // TIZEN_ONLY(20150813): make as a function for reusability
+ z = sd->zoom;
+ _image_size_calc(obj, sd);
- if (sd->main_load_pending)
- {
- sd->size.w = sd->size.nw;
- sd->size.h = sd->size.nh;
+ sd->size.w = sd->size.nw;
+ sd->size.h = sd->size.nh;
- goto done;
- }
+ if (sd->main_load_pending) goto done;
++ //
EINA_LIST_FOREACH(sd->grids, l, g)
{
double thumbscroll_border_friction;
double thumbscroll_sensitivity_friction;
unsigned char scroll_smooth_start_enable;
- double scroll_smooth_time_interval;
+ // double scroll_smooth_time_interval;; // not used anymore
double scroll_smooth_amount;
- double scroll_smooth_history_weight;
- double scroll_smooth_future_time;
+ // double scroll_smooth_history_weight;; // not used anymore
+ // double scroll_smooth_future_time;; // not used anymore
double scroll_smooth_time_window;
double scale;
+ int win_no_border;
int bgpixmap;
int compositing;
Eina_List *font_dirs;
const char *title;
const char *icon_name;
const char *role;
+ const char *frame_style;
+ Eina_Stringshare *name;
Evas_Object *main_menu;
static const char SIG_ROTATION_CHANGED[] = "rotation,changed";
static const char SIG_PROFILE_CHANGED[] = "profile,changed";
static const char SIG_WM_ROTATION_CHANGED[] = "wm,rotation,changed";
- static const char SIG_THEME_CHANGED[] = "theme,changed";
+static const char SIG_CONFORMANT_CHANGED[] = "conformant,changed";
+static const char SIG_AUX_HINT_ALLOWED[] = "aux,hint,allowed";
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_DELETE_REQUEST, ""},
_elm_win_xwin_update(sd);
#endif
elm_widget_orientation_set(obj, sd->rot);
- evas_object_smart_callback_call(obj, SIG_ROTATION_CHANGED, NULL);
- evas_object_smart_callback_call(obj, SIG_WM_ROTATION_CHANGED, NULL);
+ eo_do(obj, eo_event_callback_call
+ (ELM_WIN_EVENT_ROTATION_CHANGED, NULL));
+ eo_do(obj, eo_event_callback_call
+ (ELM_WIN_EVENT_WM_ROTATION_CHANGED, NULL));
}
+ if (ch_conformant)
+ {
+ evas_object_smart_callback_call(obj, SIG_CONFORMANT_CHANGED, NULL);
+ }
+ if (ch_aux_hint)
+ {
+ void *id;
+ Eina_List *l;
+ EINA_LIST_FOREACH(aux_hints, l, id)
+ {
+ evas_object_smart_callback_call(obj, SIG_AUX_HINT_ALLOWED, id);
+ }
+ eina_list_free(aux_hints);
+ }
}
EOLIAN static Eina_Bool
eina_stringshare_del(sd->title);
eina_stringshare_del(sd->icon_name);
eina_stringshare_del(sd->role);
+ eina_stringshare_del(sd->frame_style);
+ eina_stringshare_del(sd->name);
evas_object_del(sd->icon);
evas_object_del(sd->main_menu);
}
if (sd->pointer.obj)
{
+ #if 0
ecore_evas_show(sd->pointer.ee);
+ #endif
evas_object_show(sd->pointer.obj);
}
+#ifdef HAVE_ELEMENTARY_WAYLAND
+ int x, y, w, h;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ ecore_wl_window_opaque_region_set(sd->wl.win, x, y, w, h);
+#endif
evas_object_show(obj);
#ifdef ELEMENTARY_X
if (sd->type == ELM_WIN_TOOLTIP)
#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(sd);
#endif
+#ifdef HAVE_ELEMENTARY_WAYLAND
+ _elm_win_wlwin_update(sd);
+#endif
/* do not append to list; all windows render as black rects */
- if (type == ELM_WIN_FAKE) return;
- _elm_win_list = eina_list_append(_elm_win_list, obj);
- _elm_win_count++;
+
+ sd->frame_style = eina_stringshare_add("default");
- if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM))))
+ if (type != ELM_WIN_FAKE)
{
- TRAP(sd, fullscreen_set, 1);
+ _elm_win_list = eina_list_append(_elm_win_list, obj);
+ _elm_win_count++;
+
+ if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM))))
+ {
+ TRAP(sd, fullscreen_set, 1);
+ }
+ else if ((type != ELM_WIN_INLINED_IMAGE) &&
+ ((engine) &&
+ ((!strcmp(engine, ELM_WAYLAND_SHM) ||
+ (!strcmp(engine, ELM_WAYLAND_EGL))))))
- _elm_win_frame_add(sd, "default");
++ _elm_win_frame_add(sd, sd->frame_style);
+
+ if (_elm_config->focus_highlight_enable)
+ elm_win_focus_highlight_enabled_set(obj, EINA_TRUE);
+ if (_elm_config->focus_highlight_animate)
+ elm_win_focus_highlight_animate_set(obj, EINA_TRUE);
}
- else if ((type != ELM_WIN_INLINED_IMAGE) &&
- ((engine) &&
- ((!strcmp(engine, ELM_WAYLAND_SHM) ||
- (!strcmp(engine, ELM_WAYLAND_EGL))))))
- _elm_win_frame_add(sd, sd->frame_style);
- if (_elm_config->focus_highlight_enable)
- elm_win_focus_highlight_enabled_set(obj, EINA_TRUE);
- if (_elm_config->focus_highlight_animate)
- elm_win_focus_highlight_animate_set(obj, EINA_TRUE);
+ //Prohibiting auto-rendering, until elm_win is shown.
+ if (_elm_config->auto_norender_withdrawn)
+ {
+ if (elm_win_withdrawn_get(obj))
+ {
+ if (!evas_object_data_get(obj, "__win_auto_norender"))
+ {
+ elm_win_norender_push(obj);
+ evas_object_data_set(obj, "__win_auto_norender", obj);
+ }
+ }
+ }
#ifdef ELM_DEBUG
Evas_Modifier_Mask mask = evas_key_modifier_mask_get(sd->evas, "Control");
edje_object_part_swallow(sd->edje, "elm.swallow.contents", sd->box);
evas_object_move(sd->edje, 0, 0);
evas_object_resize(sd->edje, 1, 1);
- edje_object_update_hints_set(sd->edje, EINA_TRUE);
- evas_object_event_callback_add(sd->edje, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
- _elm_win_on_resize_obj_changed_size_hints, obj);
-
- eo_do(obj, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_WINDOW));
- if (_elm_config->atspi_mode == ELM_ATSPI_MODE_ON)
+ if (type != ELM_WIN_FAKE)
{
- elm_interface_atspi_accessible_children_changed_added_signal_emit(_elm_atspi_bridge_root_get(), obj);
- eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, NULL));
+ edje_object_update_hints_set(sd->edje, EINA_TRUE);
+ evas_object_event_callback_add(sd->edje, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _elm_win_on_resize_obj_changed_size_hints, obj);
}
+ eo_do(obj, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_WINDOW));
+ if (_elm_config->atspi_mode)
+ elm_interface_atspi_window_created_signal_emit(obj);
+ if(_elm_config->win_no_border)
+ _elm_win_borderless_set(obj, sd, EINA_TRUE);
+
evas_object_show(sd->edje);
+
+ eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_ADD, _cb_added, sd),
+ eo_event_callback_add(EO_EV_CALLBACK_DEL, _cb_deled, sd));
+ if (type == ELM_WIN_FAKE)
+ {
+ _elm_win_resize_job(obj);
+ _elm_win_move(sd->ee);
+ }
+ return obj;
}
- EOLIAN static void
- _elm_win_eo_base_constructor(Eo *obj EINA_UNUSED, Elm_Win_Data *_pd EINA_UNUSED)
+ EOLIAN static Eo *
+ _elm_win_eo_base_finalize(Eo *obj, Elm_Win_Data *_pd)
+ {
+ obj = _elm_win_finalize_internal(obj, _pd, _pd->name, _pd->type);
+ if (obj)
+ {
+ eo_do_super(obj, MY_CLASS, obj = eo_finalize());
+ }
+ return obj;
+ }
+
+ EOLIAN static Eo *
+ _elm_win_eo_base_constructor(Eo *obj, Elm_Win_Data *_pd EINA_UNUSED)
{
/* Do nothing. */
+ /* XXX: We are calling the constructor chain from the finalizer. It's
+ * really bad and hacky. Needs fixing. */
+
+ return obj;
}
EOLIAN static void
ecore_x_e_illume_indicator_state_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
}
- #if HAVE_ELEMENTARY_WAYLAND
+#endif
++#ifdef HAVE_ELEMENTARY_WAYLAND
+ _elm_win_wlwindow_get(sd);
+ if (sd->wl.win)
+ {
+ if (sd->indmode == ELM_WIN_INDICATOR_SHOW)
+ ecore_wl_window_indicator_state_set
+ (sd->wl.win, ECORE_WL_INDICATOR_STATE_ON);
+ else if (sd->indmode == ELM_WIN_INDICATOR_HIDE)
+ ecore_wl_window_indicator_state_set
+ (sd->wl.win, ECORE_WL_INDICATOR_STATE_OFF);
+ }
#endif
- evas_object_smart_callback_call(obj, SIG_INDICATOR_PROP_CHANGED, NULL);
+ eo_do(obj, eo_event_callback_call
+ (ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL));
}
EOLIAN static Elm_Win_Indicator_Mode
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_TRANSPARENT);
}
- #if HAVE_ELEMENTARY_WAYLAND
+#endif
++#ifdef HAVE_ELEMENTARY_WAYLAND
+ _elm_win_wlwindow_get(sd);
+ if (sd->wl.win)
+ {
+ if (sd->ind_o_mode == ELM_WIN_INDICATOR_OPAQUE)
+ ecore_wl_window_indicator_opacity_set
+ (sd->wl.win, ECORE_WL_INDICATOR_OPAQUE);
+ else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSLUCENT)
+ ecore_wl_window_indicator_opacity_set
+ (sd->wl.win, ECORE_WL_INDICATOR_TRANSLUCENT);
+ else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSPARENT)
+ ecore_wl_window_indicator_opacity_set
+ (sd->wl.win, ECORE_WL_INDICATOR_TRANSPARENT);
+ }
#endif
- evas_object_smart_callback_call(obj, SIG_INDICATOR_PROP_CHANGED, NULL);
+ eo_do(obj, eo_event_callback_call
+ (ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL));
}
EOLIAN static Elm_Win_Indicator_Opacity_Mode
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
ecore_x_e_illume_conformant_set(sd->x.xwin, conformant);
+#elif HAVE_ELEMENTARY_WAYLAND
+ _elm_win_wlwindow_get(sd);
+ if (sd->wl.win)
+ ecore_wl_window_conformant_set(sd->wl.win, conformant);
#else
(void)conformant;
-
#endif
}
return &atspi_actions[0];
}
+ EOLIAN static Elm_Atspi_State_Set
+ _elm_win_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Win_Data *sd EINA_UNUSED)
+ {
+ Elm_Atspi_State_Set ret;
+ eo_do_super(obj, MY_CLASS, ret = elm_interface_atspi_accessible_state_set_get());
+
+ if (elm_win_focus_get(obj))
+ STATE_TYPE_SET(ret, ELM_ATSPI_STATE_ACTIVE);
+
+ return ret;
+ }
+
+ EOLIAN static char*
+ _elm_win_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Win_Data *sd EINA_UNUSED)
+ {
+ const char *ret = elm_win_title_get(obj);
+ return ret ? strdup(ret) : strdup("");
+ }
+
#include "elm_win.eo.c"
+
+//////////////////////////////////////////////////////////////////
+
+EAPI const Eina_List *
+elm_win_aux_hints_supported_get(const Evas_Object *obj)
+{
+ ELM_WIN_CHECK(obj) NULL;
+ ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, NULL);
+ return ecore_evas_aux_hints_supported_get(sd->ee);
+}
+
+EAPI int
+elm_win_aux_hint_add(Evas_Object *obj, const char *hint, const char *val)
+{
+ ELM_WIN_CHECK(obj) -1;
+ ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, -1);
+ return ecore_evas_aux_hint_add(sd->ee, hint, val);
+}
+
+EAPI Eina_Bool
+elm_win_aux_hint_del(Evas_Object *obj,
+ const int id)
+{
+ ELM_WIN_CHECK(obj) EINA_FALSE;
+ ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
+ return ecore_evas_aux_hint_del(sd->ee, id);
+}
+
+EAPI Eina_Bool
+elm_win_aux_hint_val_set(Evas_Object *obj, const int id, const char *val)
+{
+ ELM_WIN_CHECK(obj) EINA_FALSE;
+ ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
+ return ecore_evas_aux_hint_val_set(sd->ee, id, val);
+}
+
+EAPI const char *
+elm_win_aux_hint_val_get(Evas_Object *obj, int id)
+{
+ ELM_WIN_CHECK(obj) EINA_FALSE;
+ ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
+ return ecore_evas_aux_hint_val_get(sd->ee, id);
+}
+
+EAPI int
+elm_win_aux_hint_id_get(Evas_Object *obj, const char *hint)
+{
+ ELM_WIN_CHECK(obj) EINA_FALSE;
+ ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
+ return ecore_evas_aux_hint_id_get(sd->ee, hint);
+}
+//////////////////////////////////////////////////////////////////
Elm_Interface_Atspi_Widget_Action)
{
eo_prefix: elm_obj_win;
- properties {
- keyboard_win {
+ methods {
+ @property keyboard_win {
set {
- /*@
- Sets whether the window is a keyboard.
-
- @ingroup Win */
+ [[Sets whether the window is a keyboard.]]
}
get {
- /*@
- Get whether the window is a keyboard.
-
- @return If the window is a virtual keyboard
-
- @ingroup Win */
+ [[Get whether the window is a keyboard.]]
}
values {
- bool is_keyboard; /*@ If true, the window is a virtual keyboard */
+ is_keyboard: bool; [[If true, the window is a virtual keyboard.]]
}
}
- autodel {
+ @property autodel {
set {
- /*@
- Set the window's autodel state.
-
- When closing the window in any way outside of the program control, like
- pressing the X button in the titlebar or using a command from the
- Window Manager, a "delete,request" signal is emitted to indicate that
- this event occurred and the developer can take any action, which may
- include, or not, destroying the window object.
-
- When the @p autodel parameter is set, the window will be automatically
- destroyed when this event occurs, after the signal is emitted.
- If @p autodel is @c EINA_FALSE, then the window will not be destroyed
- and is up to the program to do so when it's required.
-
- @ingroup Win */
+ [[Set the window's autodel state.
+
+ When closing the window in any way outside of the program
+ control, like pressing the X button in the titlebar or using
+ a command from the Window Manager, a "delete,request" signal
+ is emitted to indicate that this event occurred and the
+ developer can take any action, which may include, or not,
+ destroying the window object.
+
+ When the $autodel parameter is set, the window will be
+ automatically destroyed when this event occurs, after the
+ signal is emitted. If $autodel is $false, then the window
+ will not be destroyed and is up to the program to do so
+ when it's required.
+ ]]
}
get {
- /*@
- Get the window's autodel state.
+ [[Get the window's autodel state.]]
+ }
+ values {
+ autodel: bool; [[If true, the window will automatically delete
+ itself when closed.]]
+ }
+ }
+ @property autohide {
+ [[Window's autohide state.
- @return If the window will automatically delete itself when closed
+ This property works similarly to @.autodel, automatically handling
+ "delete,request" signals when set to $trze, with the difference
+ that it will hide the window, instead of destroying it.
- @see elm_win_autodel_set()
+ It is specially designed to work together with $ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
+ which allows exiting Elementary's main loop when all the windows
+ are hidden.
- @ingroup Win */
+ Note: @.autodel and $autohide are not mutually exclusive. The window
+ will be deleted if both are set to $true.
+ ]]
+
+ set {
+ }
+ get {
}
values {
- bool autodel; /*@ If true, the window will automatically delete itself when
- closed */
+ autohide: bool; [[If true, the window will automatically hide
+ itself when closed.]]
}
}
- override {
+ @property override {
set {
- /*@
- Set the override state of a window.
+ [[Set the override state of a window.
- A window with @p override set to EINA_TRUE will not be managed by the
- Window Manager. This means that no decorations of any kind will be shown
- for it, moving and resizing must be handled by the application, as well
- as the window visibility.
+ A window with $override set to true will not be managed by the
+ Window Manager. This means that no decorations of any kind
+ will be shown for it, moving and resizing must be handled
+ by the application, as well as the window visibility.
- This should not be used for normal windows, and even for not so normal
- ones, it should only be used when there's a good reason and with a lot
- of care. Mishandling override windows may result situations that
- disrupt the normal workflow of the end user.
-
- @ingroup Win */
+ This should not be used for normal windows, and even for not
+ so normal ones, it should only be used when there's a good
+ reason and with a lot of care. Mishandling override windows
+ may result situations that disrupt the normal workflow of
+ the end user.
+ ]]
}
get {
- /*@
- Get the override state of a window.
-
- @return If true, the window is overridden
-
- @see elm_win_override_set()
-
- @ingroup Win */
+ [[Get the override state of a window.]]
}
values {
- bool override; /*@ If true, the window is overridden */
+ override: bool; [[If true, the window is overridden.]]
}
}
- iconified {
+ @property iconified {
set {
- /*@
- Set the iconified state of a window.
-
- @ingroup Win */
+ [[Set the iconified state of a window.]]
}
get {
- /*@
- Get the iconified state of a window.
-
- @return If true, the window is iconified
-
- @ingroup Win */
+ [[Get the iconified state of a window.]]
}
values {
- bool iconified; /*@ If true, the window is iconified */
+ iconified: bool; [[If true, the window is iconified.]]
}
}
- wm_available_rotations {
+ @property wm_available_rotations {
set {
- /*@
- Set the array of available window rotations.
+ [[Set the array of available window rotations.
- This function is used to set the available rotations to give the hints to WM.
- WM will refer this hints and set the orientation window properly.
+ This function is used to set the available rotations to give
+ the hints to WM. WM will refer this hints and set the
+ orientation window properly.
- @see elm_win_wm_rotation_available_rotations_get()
-
- ingroup Win
- @since 1.9 */
+ @since 1.9
+ ]]
legacy: elm_win_wm_rotation_available_rotations_set;
+ values {
+ rotations: const(int)*; [[The array of rotation value.]]
+ count: uint; [[The size of the rotations array.]]
+ }
}
get {
- /*@
- Get the array of available window rotations.
-
- This function is used to get the available rotations.
+ [[Get the array of available window rotations.
- @see elm_win_wm_rotation_available_rotations_set()
+ This function is used to get the available rotations.
- ingroup Win
- @since 1.9 */
+ @since 1.9
+ ]]
legacy: elm_win_wm_rotation_available_rotations_get;
+ values {
+ rotations: int*; [[The array of rotation value.]]
+ count: uint; [[The size of the rotations array.]]
+ }
return: bool;
}
- values {
- int *rotations @const_set; /*@ The array of rotation value. */
- uint count; /*@ The size of the @param rotations array. */
- }
}
- quickpanel_zone {
+ @property quickpanel_zone {
set {
- /*@
- Set which zone this quickpanel should appear in
-
- @ingroup Win */
+ [[Set which zone this quickpanel should appear in.]]
}
get {
- /*@
- Get which zone this quickpanel should appear in
-
- @return The requested zone for this quickpanel
-
- @ingroup Win */
+ [[Get which zone this quickpanel should appear in.]]
}
values {
- int zone; /*@ The requested zone for this quickpanel */
+ zone: int; [[The requested zone for this quickpanel.]]
}
}
- maximized {
+ @property maximized {
set {
- /*@
- Set the maximized state of a window.
-
- @ingroup Win */
+ [[Set the maximized state of a window.]]
}
get {
- /*@
- Get the maximized state of a window.
-
- @return If true, the window is maximized
-
- @ingroup Win */
+ [[Get the maximized state of a window.]]
}
values {
- bool maximized; /*@ If true, the window is maximized */
+ maximized: bool; [[If true, the window is maximized.]]
}
}
- modal {
+ @property modal {
set {
- /*@
- Set the modal state of a window.
-
- @ingroup Win */
+ [[Set the modal state of a window.]]
}
get {
- /*@
- Get the modal state of a window.
-
- @return If true, the window is modal
-
- @ingroup Win */
+ [[Get the modal state of a window.]]
}
values {
- bool modal; /*@ If true, the window is modal */
+ modal: bool; [[If true, the window is modal.]]
}
}
- icon_name {
+ @property icon_name {
set {
- /*@
- Set the icon name of the window
-
- @ingroup Win */
+ [[Set the icon name of the window.]]
}
get {
- /*@
- Get the icon name of the window
-
- The returned string is an internal one and should not be freed or
- modified. It will also be invalid if a new icon name is set or if
- the window is destroyed.
-
- @return The icon name
+ [[Get the icon name of the window.
- @ingroup Win */
+ The returned string is an internal one and should not be
+ freed or modified. It will also be invalid if a new icon
+ name is set or if the window is destroyed.
+ ]]
}
values {
- const(char)* icon_name; /*@ The icon name to set */
+ icon_name: const(char)*; [[The icon name to set.]]
}
}
- withdrawn {
+ @property withdrawn {
set {
- /*@
- Set the withdrawn state of a window.
-
- @ingroup Win */
+ [[Set the withdrawn state of a window.]]
}
get {
- /*@
- Get the withdrawn state of a window.
-
- @return If true, the window is withdrawn
-
- @ingroup Win */
+ [[Get the withdrawn state of a window.]]
}
values {
- bool withdrawn; /*@ If true, the window is withdrawn */
+ withdrawn: bool; [[If true, the window is withdrawn.]]
}
}
- role {
+ @property role {
set {
- /*@
- Set the role of the window
-
- @ingroup Win */
+ [[Set the role of the window.]]
}
get {
- /*@
- Get the role of the window
+ [[Get the role of the window.
- The returned string is an internal one and should not be freed or
- modified. It will also be invalid if a new role is set or if
- the window is destroyed.
-
- @return The role
-
- @ingroup Win */
+ The returned string is an internal one and should not be
+ freed or modified. It will also be invalid if a new role
+ is set or if the window is destroyed.
+ ]]
}
values {
- const(char)* role; /*@ The role to set */
+ role: const(char)*; [[The role to set.]]
}
}
- size_step {
+ @property size_step {
set {
- /*@
- Set the window stepping used with sizing calculation
+ [[Set the window stepping used with sizing calculation.
- Base size + stepping is what is calculated for window sizing restrictions.
+ Base size + stepping is what is calculated for window sizing
+ restrictions.
- @ingroup Win
- @see elm_win_size_step_get
- @see elm_win_size_base_set
- @since 1.7 */
+ @since 1.7
+ ]]
}
get {
- /*@
- Get the stepping of a window.
+ [[Get the stepping of a window.
- @ingroup Win
- @see elm_win_size_base_set
- @see elm_win_size_step_set
- @since 1.7 */
+ @since 1.7
+ ]]
}
values {
- int w; /*@ The stepping width (0 disables) */
- int h; /*@ The stepping height (0 disables) */
+ w: int; [[The stepping width (0 disables).]]
+ h: int; [[The stepping height (0 disables).]]
}
}
- focus_highlight_style {
+ @property focus_highlight_style {
set {
- /*@
- Set the style for the focus highlight on this window
-
- Sets the style to use for theming the highlight of focused objects on
- the given window. If @p style is NULL, the default will be used.
+ [[Set the style for the focus highlight on this window.
- @ingroup Win */
+ Sets the style to use for theming the highlight of focused
+ objects on the given window. If $style is NULL, the default
+ will be used.
+ ]]
}
get {
- /*@
- Get the style set for the focus highlight object
-
- Get the style set for this windows highlight object, or NULL if none
- is set.
-
- @return The style set or NULL if none was. Default is used in that case.
-
- @ingroup Win */
+ [[Get the style set for the focus highlight object.]]
}
values {
- const(char)* style; /*@ The style to set */
+ style: const(char)* @nullable; [[The style or $null if none.]]
}
}
- borderless {
+ @property borderless {
set {
- /*@
- Set the borderless state of a window.
-
- This function requests the Window Manager to not draw any decoration
- around the window.
+ [[Set the borderless state of a window.
- @ingroup Win */
+ This function requests the Window Manager to not draw any
+ decoration around the window.
+ ]]
}
get {
- /*@
- Get the borderless state of a window.
-
- @return If true, the window is borderless
-
- @ingroup Win */
+ [[Get the borderless state of a window.]]
}
values {
- bool borderless; /*@ If true, the window is borderless */
+ borderless: bool; [[If true, the window is borderless.]]
}
}
- border_style {
++ @property border_style {
+ set {
- /*@
- Set the border style of a window.
-
- Sets the specific style of border to decorate window.
++ [[Set the border style of a window.
+
- @ingroup Win */
++ Sets the specific style of border to decorate window.
++ ]]
+ }
+ get {
- /*@
- Get the border style of a window.
-
- @return The style set
-
- @ingroup Win */
++ [[Get the border style of a window.]]
+ }
+ values {
- const(char)* style; /*@ The style to set */
++ style: const(char)* @nullable; [[The style or $null if none.]]
+ }
+ }
- screen_constrain {
+ @property screen_constrain {
set {
- /*@
- Constrain the maximum width and height of a window to the width and height of its screen
+ [[Constrain the maximum width and height of a window to the
+ width and height of its screen.
- When @p constrain is true, @p obj will never resize larger than the screen.
- @ingroup Win */
+ When $constrain is $true, $obj will never resize larger than
+ the screen.
+ ]]
}
get {
- /*@
- Get the constraints on the maximum width and height of a window relative to the width and height of its screen
+ [[Get the constraints on the maximum width and height of a
+ window relative to the width and height of its screen.
- When this function returns true, @p obj will never resize larger than the screen.
- @return EINA_TRUE to restrict the window's maximum size, EINA_FALSE to disable restriction
-
- @ingroup Win */
+ When this function returns $true, $obj will never resize
+ larger than the screen.
+ ]]
}
values {
- bool constrain; /*@ EINA_TRUE to restrict the window's maximum size, EINA_FALSE to disable restriction */
+ constrain: bool; [[$true to restrict the window's maximum size.]]
}
}
- available_profiles {
+ @property available_profiles {
set {
- /*@
- Set the array of available profiles to a window.
+ [[Set the array of available profiles to a window.
- @ingroup Win
- @since 1.8 */
+ @since 1.8
+ ]]
+ values {
+ profiles: const(char)**; [[The string array of available profiles.]]
+ count: uint; [[The number of members in profiles.]]
+ }
}
get {
- /*@
- Get the array of available profiles of a window.
-
- @return EINA_TRUE if available profiles exist, EINA_FALSE otherwise
-
- @ingroup Win
- @since 1.8 */
+ [[Get the array of available profiles of a window.
+
+ @since 1.8
+ ]]
+ values {
+ profiles: char**; [[The string array of available profiles.]]
+ count: uint; [[The number of members in profiles.]]
+ }
return: bool;
}
- values {
- char **profiles @const_set; /*@ The string array of available profiles */
- uint count; /*@ The number of members in profiles */
- }
}
- focus_highlight_enabled {
+ @property focus_highlight_enabled {
set {
- /*@
- Set the enabled status for the focus highlight in a window
+ [[Set the enabled status for the focus highlight in a window.
- This function will enable or disable the focus highlight only for the
- given window, regardless of the global setting for it
-
- @ingroup Win */
+ This function will enable or disable the focus highlight only
+ for the given window, regardless of the global setting for it.
+ ]]
}
get {
- /*@
- Get the enabled value of the focus highlight for this window
-
- @return EINA_TRUE if enabled, EINA_FALSE otherwise
-
- @ingroup Win */
+ [[Get the enabled value of the focus highlight for this window.]]
}
values {
- bool enabled; /*@ The enabled value for the highlight */
+ enabled: bool; [[The enabled value for the highlight.]]
}
}
- title {
+ @property title {
set {
- /*@
- Set the title of the window
-
- @ingroup Win */
+ [[Set the title of the window.]]
}
get {
- /*@
- Get the title of the window
+ [[Get the title of the window.
- The returned string is an internal one and should not be freed or
- modified. It will also be invalid if a new title is set or if
- the window is destroyed.
-
- @return The title
-
- @ingroup Win */
+ The returned string is an internal one and should not be
+ freed or modified. It will also be invalid if a new title
+ is set or if the window is destroyed.
+ ]]
}
values {
- const(char)* title; /*@ The title to set */
+ title: const(char)*; [[The title.]]
}
}
- alpha {
+ @property alpha {
set {
- /*@
- Set the alpha channel state of a window.
-
- If @p alpha is EINA_TRUE, the alpha channel of the canvas will be enabled
- possibly making parts of the window completely or partially transparent.
- This is also subject to the underlying system supporting it, like for
- example, running under a compositing manager. If no compositing is
- available, enabling this option will instead fallback to using shaped
- windows, with elm_win_shaped_set().
-
- @note Alpha window can be enabled automatically by window theme style's property.
- If "alpha" data.item is "1" or "true" in window style(eg. elm/win/base/default),
- the window is switched to alpha automatically without the explicit api call.
-
- @see elm_win_alpha_set()
-
- @ingroup Win */
+ [[Set the alpha channel state of a window.
+
+ If $alpha is true, the alpha channel of the canvas will be
+ enabled possibly making parts of the window completely or
+ partially transparent. This is also subject to the underlying
+ system supporting it, like for example, running under a
+ compositing manager. If no compositing is available, enabling
+ this option will instead fallback to using shaped windows,
+ with @.shaped.set.
+
+ Note: Alpha window can be enabled automatically by window
+ theme style's property. If "alpha" data.item is "1" or
+ "true" in window style(eg. elm/win/base/default), the window
+ is switched to alpha automatically without the explicit api
+ call.
+ ]]
}
get {
- /*@
- Get the alpha channel state of a window.
-
- @return EINA_TRUE if the window alpha channel is enabled, EINA_FALSE
- otherwise
-
- @ingroup Win */
+ [[Get the alpha channel state of a window.]]
}
values {
- bool alpha; /*@ EINA_TRUE if the window alpha channel is enabled, EINA_FALSE otherwise */
+ alpha: bool; [[$true if the window alpha channel is enabled,
+ $false otherwise.]]
}
}
- urgent {
+ @property urgent {
set {
- /*@
- Set the urgent state of a window.
-
- @ingroup Win */
+ [[Set the urgent state of a window.]]
}
get {
- /*@
- Get the urgent state of a window.
-
- @return If true, the window is urgent
-
- @ingroup Win */
+ [[Get the urgent state of a window.]]
}
values {
- bool urgent; /*@ If true, the window is urgent */
+ urgent: bool; [[If true, the window is urgent.]]
}
}
- rotation {
+ @property rotation {
set {
- /*@
- Set the rotation of the window.
-
- Most engines only work with multiples of 90.
+ [[Set the rotation of the window.
- This function is used to set the orientation of the window @p obj to
- match that of the screen. The window itself will be resized to adjust
- to the new geometry of its contents. If you want to keep the window size,
- see elm_win_rotation_with_resize_set().
+ Most engines only work with multiples of 90.
- @ingroup Win */
+ This function is used to set the orientation of the window
+ $obj to match that of the screen. The window itself will be
+ resized to adjust to the new geometry of its contents. If
+ you want to keep the window size,
+ see @.rotation_with_resize.set.
+ ]]
}
get {
- /*@
- Get the rotation of the window.
-
- @return The rotation of the window in degrees (0-360)
-
- @see elm_win_rotation_set()
- @see elm_win_rotation_with_resize_set()
-
- @ingroup Win */
+ [[Get the rotation of the window.]]
}
values {
- int rotation; /*@ The rotation of the window, in degrees (0-360),
- counter-clockwise. */
+ rotation: int; [[The rotation of the window, in degrees (0-360),
+ counter-clockwise.]]
}
}
- icon_object {
+ @property icon_object {
set {
- /*@
- Set a window object's icon
-
- This sets an image to be used as the icon for the given window, in
- the window manager decoration part. The exact pixel dimensions of
- the object (not object size) will be used, and the image pixels
- will be used as-is when this function is called. If the image
- object has been updated, then call this function again to source
- the image pixels and put them on the window's icon. Note that
- <b>only Evas image objects are allowed</b>, for
-
+ [[Set a window object's icon.
+
+ This sets an image to be used as the icon for the given
+ window, in the window manager decoration part. The exact
+ pixel dimensions of the object (not object size) will be
+ used, and the image pixels will be used as-is when this
+ function is called. If the image object has been updated,
+ then call this function again to source the image pixels
+ and put them on the window's icon. Note that only Evas
+ image objects are allowed.
+ ]]
+ /* FIXME-doc
Example of usage:
@code
icon = evas_object_image_add(evas_object_evas_get(elm_window));