[maemo-commits] [maemo-commits] r8972 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop libhildonwm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Jan 5 16:29:15 EET 2007
- Previous message: [maemo-commits] r8971 - in projects/haf/tags/gtk+2.0: . 2.10.6-0osso1test2 2.10.6-0osso1test2/debian 2.10.6-0osso1test2/gdk 2.10.6-0osso1test2/gtk
- Next message: [maemo-commits] r8973 - projects/haf/tags/gtk+2.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart
Date: 2007-01-05 16:29:13 +0200 (Fri, 05 Jan 2007)
New Revision: 8972
Added:
projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-marshalers.list
Modified:
projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog
projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hn-app-switcher.c
projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/Makefile.am
projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window-view.c
projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window.c
projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c
projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h
Log:
* libhildondesktop/hn-app-switcher.c:
* libhildonwm/hd-wm-watched-window.c:
* libhildonwm/hd-wm-watched-window-view.c:
* libhildonwm/hd-wm.[ch]:
- Moved control of applications opened from appswitcher to
hdwm.
* libhildonwm/Makefile.am:
* libhildonwm/hd-wm-marshalers.list:
- Added marshalers for hdwm.
* ChangeLog updated.
Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-05 14:29:13 UTC (rev 8972)
@@ -1,5 +1,17 @@
2007-01-05 Moises Martinez <moises.martinez at nokia.com>
+ * libhildondesktop/hn-app-switcher.c:
+ * libhildonwm/hd-wm-watched-window.c:
+ * libhildonwm/hd-wm-watched-window-view.c:
+ * libhildonwm/hd-wm.[ch]:
+ - Moved control of applications opened from appswitcher to
+ hdwm.
+ * libhildonwm/Makefile.am:
+ * libhildonwm/hd-wm-marshalers.list:
+ - Added marshalers for hdwm.
+
+2007-01-05 Moises Martinez <moises.martinez at nokia.com>
+
* updated headers in libhildondesktop
2007-01-05 Karoliina Salminen <karoliina.t.salminen at nokia.com>
@@ -120,7 +132,7 @@
- set the applet area as the legitimate child
- fixed allocation of the applet area
-2006-12-15 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-15 Moises Martinez <moises.martinez at nokia.com>
* test/test4.c: test updated with refactored appswitcher.
* libhildondesktop/hn-app-switcher.[ch]:
@@ -145,7 +157,7 @@
* libhildondesktop/hildon-home-applet.[ch]: Removed
desktop_file property (replaced by desktop item id)
-2006-12-15 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-15 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop/hn-app-switcher.c:
* libhildonwm/hd-wm.c:
@@ -224,14 +236,14 @@
* libhildondesktop/hildon-home-window.c:
- use the new WM property to track thw work area changes
-2006-12-08 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-08 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop/desktop-panel.c:
- Set a default size for widgets.
* libhildondesktop/desktop-panel-window.c:
- Show the container!!!!
-2006-12-08 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-08 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop/desktop-panel-window.[ch]: Fixed partially dragging
of window.
@@ -254,7 +266,7 @@
* debian/libhildonwm*.install:
- added
-2006-12-05 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-05 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop/hn_app_switcher.c: Added support for opening the
menu from hd-wm.
@@ -267,19 +279,19 @@
- added
- first version of the Debian packaging
-2006-12-05 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-05 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop/hn_app_switcher.c: Added support for opening the
menu from hd-wm.
* libhildonwm/hd-wm.c: Code cleanup
* test/test4.c: updated.
-2006-12-05 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-05 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/hd-wm.[ch]: Added a signal for requesting appswitchers
open their menu.
-2006-12-04 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-04 Moises Martinez <moises.martinez at nokia.com>
* test/test4.c:
- Updated test. 4 application switcher working at the same time.
@@ -288,7 +300,7 @@
* libhildondesktop/hn-app-switcher.c:
- Code cleanup.
-2006-12-04 Moises Martinez <moises.martinzes at nokia.com>
+2006-12-04 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/hd-keys.c: Fixed shortcuts to active tn/ap buttons.
* libhildonwm/hd-wm.[ch]:
@@ -361,11 +373,11 @@
config-file properties (with their respective accessor methods) and
the select-plugins signal.
-2006-11-27 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-27 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop: Added old app switcher with new interface.
-2006-11-27 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-27 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/*: Updated libhildonwm.
@@ -374,22 +386,22 @@
* libhildondesktop/libhildonmenu.c: Fixed a potential crash when
no Type = is provided.
-2006-11-27 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-27 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop/libhildondesktop.h: Added macros for GTypeModule
declarations
-2006-11-24 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-24 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/hd-wm.c:
* libhildonwm/hd-wm-watched-window.c:
- Added more emission of signals for appswitchers
-2006-11-24 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-24 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/hd-wm.[ch]: Moved to a more consistent GObject behavior.
-2006-11-23 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-23 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/hd-wm.[ch]: Moved the hd-wm to a new API based on
GObject that allows having more than one app switcher.
@@ -449,7 +461,7 @@
* src/hd-plugin-loader-legacy.[ch]: made _set_key_type public
-2006-11-22 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-22 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/*: Added libhildonwm to building system. Now it builds
but lacks of application switcher support (needs refactoring API for
@@ -462,7 +474,7 @@
data/Makefile.am: new data directory with default configuration files
that are installed on hildon-desktop global conf dir.
-2006-11-22 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-22 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm/hd-*.[ch]: First import of window managemente code.
- At this point the window management code is broken and there is no
@@ -494,7 +506,7 @@
the tasknavigator-item-wrapper
* libhildondesktop/tasknavigator-item.c: Made non-abstract
-2006-11-21 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-21 Moises Martinez <moises.martinez at nokia.com>
* src/main.c: added locale.h header
* libhildondesktop/desktop-panel-window.c: Deleted debug messages.
@@ -590,18 +602,18 @@
implementation skel.
* src/Makefile.am: add hd-plugin-loader-factory.[ch] to build.
-2006-11-16 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-16 Moises Martinez <moises.martinez at nokia.com>
* AUTHORS: Added Lucas Rocha as an author.
-2006-11-16 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-16 Moises Martinez <moises.martinez at nokia.com>
* libhildonwm: This lib will be responsible for all the window
management needed for hildon-desktop.
* window_management_dependencies: dependencies of old window
management code
-2006-11-16 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-16 Moises Martinez <moises.martinez at nokia.com>
* libhildondesktop/tasknavigator-item-socket.[ch]: Added
implementation of desktop-item-socket for tasknavigator items.
@@ -622,7 +634,7 @@
* src/Makefile.am, src/main.c, configure.ac: Added hildon-desktop
app to the build
-2006-11-15 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-15 Moises Martinez <moises.martinez at nokia.com>
* plugin_manager readme file added
@@ -634,19 +646,19 @@
* libhildondesktop/hildon-home-applet.c: Fixed realize and size_allocate
-2006-11-14 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-14 Moises Martinez <moises.martinez at nokia.com>
* Now libhildondesktop builds ok
-2006-11-14 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-14 Moises Martinez <moises.martinez at nokia.com>
* Renamed libdesktop to libhildondesktop
-2006-11-14 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-14 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/libdesktop.h: new global header file.
-2006-11-13 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-13 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/hildon-desktop-plugin.[ch]: GTypeModule child class
for plugins.
@@ -658,7 +670,7 @@
- added realize/map with visible window and event window when in
layout mode.
-2006-11-09 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-09 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/desktop-panel.[ch]: Added optional fixed sizes
for added panel's button.
@@ -686,7 +698,7 @@
- added
- centralized all Hildon Home l10n strings
-2006-11-08 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-08 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/desktop-panel-window.[ch]:
- Fixed dragging.
@@ -695,7 +707,7 @@
* libdesktop/hildon-desktop-panel-item.c:
- Minor fixes
-2006-11-07 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-07 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/statusbar-item.c:
- library is construct only property.
@@ -705,18 +717,18 @@
* libdesktop/tasknavigator-item-wrapper.[ch]:
- Subclass of TaskNavigatorItem that adds support for old API.
-2006-11-06 Moises Martinez <moises.martinzes at nokia.com>
+2006-11-06 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/hildon-desktop-panel-item.[ch]:
* libdesktop/statusbar-item.[ch]:
- StatusbarItem is a Panel Item.
-2006-10-31 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-31 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/statusbar-item-socket.c: Removing proxy
of GtkSocket's plug_removed signal
-2006-10-31 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-31 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/statusbar-item-socket.[ch]:
- Fixed building problems.
@@ -724,36 +736,36 @@
- Fixed proxy calling to GtkSocket methods plug_added
and plug_removed
-2006-10-31 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-31 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/hildon-desktop-item.[ch]:
* libdesktop/statusbar-item-wrapper.[ch]:
* libdesktop/statusbar-item.c:
- Fixed building problems.
-2006-10-31 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-31 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/statusbar-item-wrapper.[ch]:
- Fixed building problems.
-2006-10-31 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-31 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/hildon-desktop-item-socket.c:
- Changed _gtk_boolean_handled_accumulator to
g_signal_accumulator_true_handled.
* test/test1.c: Added test
-2006-10-31 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-31 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/desktop-multiscreen.[ch]:
* libdesktop/desktop-panel-window.h:
- Fixed more building problems
-2006-10-31 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-31 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/desktop-panel-window.c: Fixed building problem
-2006-10-30 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-30 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/desktop-multiscreen.[ch]:
* libdesktop/statusbar-item.[ch]:
@@ -764,32 +776,32 @@
* libdesktop/statusbar-item-socket.[ch]:
- Fixed a lot of build problems
-2006-10-30 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-30 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/desktop-panel-window.c: Added positioning and resizing
code.
-2006-10-30 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-30 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/statusbar-item-socket.[ch]: Implementation of
a hildon-desktop-item-socket for statusbar items.
-2006-10-20 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-20 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/statusbar-item-wrapper.[ch]: Added wrapper
for supporting statusbar's APIs.
-2006-10-20 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-20 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/libhildonmenu.[ch];
* libdesktop/hildon-thumb-menu-item.[ch]:
- Imported libhildonmenu from maemo-af-desktop.
-2006-10-19 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-19 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/hildon-desktop-item-socket.[ch]: Added GInterface
for GtkSocket decoration in DesktopItems
-2006-10-19 Moises Martinez <moises.martinzes at nokia.com>
+2006-10-19 Moises Martinez <moises.martinez at nokia.com>
* libdesktop/*.[ch]:Inital Import
Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hn-app-switcher.c
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hn-app-switcher.c 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hn-app-switcher.c 2007-01-05 14:29:13 UTC (rev 8972)
@@ -139,7 +139,7 @@
hn_app_switcher_add_info_cb (HDWM *hdwm, HDEntryInfo *entry_info, gpointer data);
static void
-hn_app_switcher_remove_info_cb (HDWM *hdwm, HDEntryInfo *entry_info, gpointer data);
+hn_app_switcher_remove_info_cb (HDWM *hdwm, gboolean removed_app, HDEntryInfo *entry_info, gpointer data);
static void
hn_app_switcher_changed_info_cb (HDWM *hdwm, HDEntryInfo *entry_info, gpointer data);
@@ -432,7 +432,7 @@
priv->active_menu_item = NULL;
/* rebuild the menu */
- for (l = priv->applications; l != NULL; l = l->next)
+ for (l = hd_wm_get_applications (app_switcher->hdwm); l != NULL; l = l->next)
{
GtkWidget *menu_item;
const GList * children = hd_entry_info_get_children(l->data);
@@ -514,7 +514,7 @@
if (event->keyval == GDK_Escape)
{
/* pass focus to the last active application */
- hd_wm_focus_active_window (hd_wm_get_singleton ());
+ hd_wm_focus_active_window (app_switcher->hdwm);
}
else
{
@@ -651,7 +651,7 @@
* we skip the first four apps, which cause blinking of the app buttons,
* not the menu button.
*/
- for (k = priv->applications, i = 0; k != NULL; k = k->next, ++i)
+ for (k = hd_wm_get_applications (app_switcher->hdwm), i = 0; k != NULL; k = k->next, ++i)
{
if (i < priv->nitems)
continue;
@@ -1148,7 +1148,7 @@
/* show the main menu button only if there is at least
* one application on the switcher
*/
- if (priv->applications)
+ if (hd_wm_get_applications (HN_APP_SWITCHER (widget)->hdwm))
gtk_widget_show (priv->main_button);
/* show only the buttons linked to an application */
@@ -1162,7 +1162,7 @@
gtk_widget_show (button);
}
}
-
+#if 0
static HDEntryInfo *
hn_app_switcher_find_app_for_child(HNAppSwitcher *app_switcher,
HDEntryInfo *entry_info)
@@ -1182,7 +1182,7 @@
return NULL;
}
-
+#endif
static void
remove_entry_from_app_button (HNAppSwitcher *app_switcher,
HDEntryInfo *entry_info)
@@ -1190,6 +1190,8 @@
HNAppSwitcherPrivate *priv = app_switcher->priv;
gint pos;
+ if (entry_info == NULL) return;
+
for (pos = 0; pos < priv->nitems; pos++)
{
GtkWidget *button = priv->buttons[pos];
@@ -1295,7 +1297,7 @@
priv->buttons_group = NULL;
/* then refresh the icons of the application buttons */
- for (l = priv->applications, pos = 0;
+ for (l = hd_wm_get_applications (app_switcher->hdwm), pos = 0;
l != NULL && pos < priv->nitems;
l = l->next, pos++)
{
@@ -1340,7 +1342,7 @@
was_blinking = get_main_button_is_blinking (priv->main_button);
is_urgent = FALSE;
- for (l = priv->applications, pos = 0;
+ for (l = hd_wm_get_applications (app_switcher->hdwm), pos = 0;
l != NULL;
l = l->next, ++pos)
{
@@ -1395,7 +1397,7 @@
}
/* hide the main button if no more applications are left */
- if (!priv->applications)
+ if (!hd_wm_get_applications (app_switcher->hdwm))
{
g_debug ("Hiding main button icon");
@@ -1441,8 +1443,6 @@
{
HNAppSwitcher *app_switcher = HN_APP_SWITCHER (data);
HNAppSwitcherPrivate *priv = app_switcher->priv;
- HDWMWatchableApp *app;
- HDEntryInfo * e;
g_debug ("In hn_app_switcher_real_add_info");
@@ -1452,43 +1452,6 @@
return;
}
- switch(entry_info->type)
- {
- case HD_ENTRY_WATCHED_WINDOW:
- case HD_ENTRY_WATCHED_VIEW:
- /*
- * because initial windows get created before we have a chance to add
- * the application item, we have to store orphan windows in temporary
- * list and process them when the application item is added
- */
- g_debug ("Adding new child to AS ...");
- app = hd_entry_info_get_app (entry_info);
- e = hn_app_switcher_find_app_for_child (app_switcher, entry_info);
-
- if (!e)
- {
- e = hd_wm_watchable_app_get_info(app);
- if (!e)
- {
- g_warning ("Could not create HDEntryInfo for app.");
- return;
- }
-
- priv->applications = g_list_prepend (priv->applications, e);
- }
- g_debug ("add_child: %p %p",e,entry_info);
- hd_entry_info_add_child (e, entry_info);
- break;
- case HD_ENTRY_WATCHED_APP:
- /* we handle adding of applications internally in AS */
- g_warning("asked to append HD_ENTRY_WATCHED_APP "
- "-- this should not happen");
- return;
- default:
- g_warning("Unknown info type");
- return;
- }
-
/* Play a sound */
if (hn_as_sound_play_sample (priv->esd_socket, priv->start_sample) == -1)
{
@@ -1515,44 +1478,15 @@
* an entry has been remove from the application list
*/
static void
-hn_app_switcher_remove_info_cb (HDWM *hdwm, HDEntryInfo *entry_info, gpointer data)
+hn_app_switcher_remove_info_cb (HDWM *hdwm,
+ gboolean removed_app,
+ HDEntryInfo *entry_info,
+ gpointer data)
{
HNAppSwitcher *app_switcher = HN_APP_SWITCHER (data);
HNAppSwitcherPrivate *priv = app_switcher->priv;
- HDEntryInfo * info_parent = NULL;
- gboolean removed_app = FALSE;
+ HDEntryInfo *info_parent = hd_entry_info_get_parent(entry_info);
- switch (entry_info->type)
- {
- case HD_ENTRY_WATCHED_WINDOW:
- case HD_ENTRY_WATCHED_VIEW:
- g_debug ("removing child from AS ...");
- info_parent = hd_entry_info_get_parent(entry_info);
-
- if (!info_parent)
- {
- g_warning("An orphan HDEntryInfo !!!");
- return;
- }
-
- if (!hd_entry_info_remove_child(info_parent, entry_info))
- {
- g_debug ("... no more children, removing app.");
- priv->applications = g_list_remove (priv->applications,
- info_parent);
- removed_app = TRUE;
- }
-
- break;
- case HD_ENTRY_WATCHED_APP:
- /* we handle adding/removing of applications internally in AS */
- g_warning("asked to remove HD_ENTRY_WATCHED_APP -- this should not happen");
- return;
- default:
- g_warning("Unknown info type");
- return;
- }
-
/* Play a sound */
if (hn_as_sound_play_sample (priv->esd_socket, priv->end_sample) == -1)
{
@@ -1577,36 +1511,6 @@
priv->main_menu = NULL;
}
- if (removed_app)
- {
- /* we need to check that not all of the remaining apps are
- * hibernating, and if they are, wake one of them up, because
- * we will not receive current window msg from MB
- */
- GList * l;
- gboolean all_asleep = TRUE;
-
- for (l = priv->applications; l != NULL; l = l->next)
- {
- HDEntryInfo * entry = l->data;
- HDWMWatchableApp * app = hd_entry_info_get_app (entry);
-
- if (app && !hd_wm_watchable_app_is_hibernating (app))
- {
- all_asleep = FALSE;
- break;
- }
- }
-
- if (all_asleep && priv->applications)
- {
- /*
- * Unfortunately, we do not know which application is the
- * most recently used one, so we just wake up the first one
- */
- hd_wm_top_item((HDEntryInfo*)priv->applications->data);
- }
- }
}
@@ -1643,7 +1547,7 @@
g_debug ("HDEntryInfo present and of type WATCHED_APP");
- for (l = priv->applications, pos = 0;
+ for (l = hd_wm_get_applications (hdwm), pos = 0;
l != NULL && pos < priv->nitems;
l = l->next, pos++)
{
@@ -1712,7 +1616,7 @@
/* the remaining cases are more complicated and require that we know
* the state of the associated button
*/
- for (l = priv->applications, pos = 0;
+ for (l = hd_wm_get_applications (hdwm), pos = 0;
l != NULL && pos < priv->nitems;
l = l->next, pos++)
{
@@ -1856,7 +1760,7 @@
/* locate the associated button, and toggle it */
active_pos = 0;
- for (l = priv->applications, pos = 0;
+ for (l = hd_wm_get_applications (hdwm), pos = 0;
l != NULL && pos < priv->nitems;
l = l->next, pos++)
{
@@ -1903,8 +1807,6 @@
osso_deinitialize (priv->osso);
- g_list_free (priv->applications);
-
if (priv->home_info)
hd_entry_info_free (priv->home_info);
@@ -2057,7 +1959,7 @@
g_return_if_fail (func != NULL);
priv = app_switcher->priv;
- entries = priv->applications;
+ entries = hd_wm_get_applications (app_switcher->hdwm);
for (l = entries; l != NULL; l = l->next)
{
@@ -2073,11 +1975,11 @@
hn_app_switcher_toggle_menu_button (HNAppSwitcher *app_switcher)
{
HNAppSwitcherPrivate *priv;
-
+
g_return_if_fail (HN_IS_APP_SWITCHER (app_switcher));
priv = app_switcher->priv;
- if (!priv->applications)
+ if (!hd_wm_get_applications (app_switcher->hdwm))
return;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->main_button), TRUE);
Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/Makefile.am
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/Makefile.am 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/Makefile.am 2007-01-05 14:29:13 UTC (rev 8972)
@@ -28,6 +28,16 @@
-DLOCALEDIR=\"$(localedir)\" \
-DDESKTOPENTRYDIR=\"$(hildondesktopentrydir)\"
+hd-wm-marshalers.c:
+ $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) hd-wm-marshalers.list --body --header >> hd-wm-marshalers.c
+
+hd-wm-marshalers.h:
+ $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) hd-wm-marshalers.list --header >| hd-wm-marshalers.h
+
+BUILT_SOURCES = \
+ hd-wm-marshalers.c \
+ hd-wm-marshalers.h
+
lib_LTLIBRARIES = libhildonwm.la
libhildonwm_la_SOURCES = \
Added: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-marshalers.list
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-marshalers.list 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-marshalers.list 2007-01-05 14:29:13 UTC (rev 8972)
@@ -0,0 +1 @@
+VOID:BOOLEAN,POINTER
Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window-view.c
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window-view.c 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window-view.c 2007-01-05 14:29:13 UTC (rev 8972)
@@ -127,7 +127,9 @@
*/
HN_DBG("removing view info from AS");
- g_signal_emit_by_name (hdwm,"entry_info_removed",view->info);
+ gboolean removed_app = hd_wm_remove_applications (hdwm, view->info);
+
+ g_signal_emit_by_name (hdwm,"entry_info_removed",removed_app,view->info);
/* FIXME: We cant free the info before the callback returns
hd_entry_info_free (view->info);*/ /*FIXME: MEMORY LEAKKKK*/
Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window.c
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window.c 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm-watched-window.c 2007-01-05 14:29:13 UTC (rev 8972)
@@ -611,9 +611,12 @@
*/
if (hd_wm_watched_window_peek_info (win))
{
+ gboolean removed_app;
HN_DBG("adding first view; removing window info from AS");
-
- g_signal_emit_by_name (hdwm,"entry_info_removed",hd_wm_watched_window_peek_info (win));
+
+ removed_app = hd_wm_remove_applications (hdwm, hd_wm_watched_window_peek_info (win));
+
+ g_signal_emit_by_name (hdwm,"entry_info_removed",removed_app,hd_wm_watched_window_peek_info (win));
/*
* since the window of multiviewed app does not figure in the AS,
@@ -1036,7 +1039,11 @@
{
/* only windows of multiwindow apps have their own info */
HN_DBG("a window of multiwindow application; removing info from AS");
- g_signal_emit_by_name (hdwm,"entry_info_removed",win->info);
+
+ gboolean removed_app = hd_wm_remove_applications (hdwm,win->info);
+
+ g_signal_emit_by_name (hdwm,"entry_info_removed",removed_app,win->info);
+
hd_entry_info_free (win->info);
win->info = NULL;
}
Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.c 2007-01-05 14:29:13 UTC (rev 8972)
@@ -54,6 +54,8 @@
#include "hd-entry-info.h"
#include "osso-manager.h"
+#include "hd-wm-marshalers.h"
+
#define SAVE_METHOD "save"
#define KILL_APPS_METHOD "kill_app"
#define TASKNAV_GENERAL_PATH "/com/nokia/tasknav"
@@ -195,6 +197,8 @@
gboolean has_focus;
guint dnotify_timeout_id;
gboolean modal_windows;
+
+ GList *applications;
};
static HDWMPrivate *hdwmpriv = NULL; /* Singleton instance */
@@ -660,8 +664,8 @@
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (HDWMClass,entry_info_removed),
NULL, NULL,
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, G_TYPE_POINTER);
+ g_cclosure_user_marshal_VOID__BOOLEAN_POINTER,
+ G_TYPE_NONE, 2, G_TYPE_BOOLEAN, G_TYPE_POINTER);
hdwm_signals[HDWM_ENTRY_INFO_STACK_CHANGED_SIGNAL] =
g_signal_new("entry_info_stack_changed",
@@ -761,6 +765,8 @@
#endif
/* build our hash of watchable apps via .desktop key/values */
+ hdwm->priv->applications = NULL;
+
hdwm->priv->watched_apps = hd_wm_watchable_apps_init ();
/* Initialize the common X atoms */
@@ -1613,6 +1619,159 @@
return TRUE;
}
+static HDEntryInfo *
+hd_wm_find_app_for_child (HDWM *hdwm, HDEntryInfo *entry_info)
+{
+ GList * l = hdwm->priv->applications;
+ HDWMWatchableApp *app = hd_entry_info_get_app(entry_info);
+
+ while (l)
+ {
+ HDEntryInfo *e = (HDEntryInfo *)l->data;
+
+ if (app == hd_entry_info_get_app(e))
+ return e;
+ l = g_list_next(l);
+ }
+
+ return NULL;
+}
+
+static void
+hd_wm_add_applications (HDWM *hdwm, HDEntryInfo *entry_info)
+{
+ HDWMWatchableApp *app;
+ HDEntryInfo *e;
+
+ if (!entry_info)
+ {
+ g_warning ("No entry info provided!");
+ return;
+ }
+
+ switch(entry_info->type)
+ {
+ case HD_ENTRY_WATCHED_WINDOW:
+ case HD_ENTRY_WATCHED_VIEW:
+ /*
+ * because initial windows get created before we have a chance to add
+ * the application item, we have to store orphan windows in temporary
+ * list and process them when the application item is added
+ */
+ app = hd_entry_info_get_app (entry_info);
+ e = hd_wm_find_app_for_child (hdwm,entry_info);
+
+ if (!e)
+ {
+ e = hd_wm_watchable_app_get_info(app);
+ if (!e)
+ {
+ g_warning ("Could not create HDEntryInfo for app.");
+ return;
+ }
+
+ hdwm->priv->applications = g_list_prepend (hdwm->priv->applications, e);
+ }
+
+ g_debug ("add_child: %p %p",e,entry_info);
+
+ hd_entry_info_add_child (e, entry_info);
+
+ break;
+
+ case HD_ENTRY_WATCHED_APP:
+ /* we handle adding of applications internally in AS */
+ g_warning("asked to append HD_ENTRY_WATCHED_APP "
+ "-- this should not happen");
+ return;
+
+ default:
+ g_warning("Unknown info type");
+ return;
+ }
+
+}
+
+gboolean
+hd_wm_remove_applications (HDWM *hdwm, HDEntryInfo *entry_info)
+{
+ HDEntryInfo * info_parent = NULL;
+ gboolean removed_app = FALSE;
+
+ switch (entry_info->type)
+ {
+ case HD_ENTRY_WATCHED_WINDOW:
+ case HD_ENTRY_WATCHED_VIEW:
+ g_debug ("removing child from AS ...");
+ info_parent = hd_entry_info_get_parent(entry_info);
+
+ if (!info_parent)
+ {
+ g_warning("An orphan HDEntryInfo !!!");
+ return FALSE;
+ }
+
+ if (!hd_entry_info_remove_child (info_parent, entry_info))
+ {
+ g_debug ("... no more children, removing app.");
+ hdwm->priv->applications =
+ g_list_remove (hdwm->priv->applications, info_parent);
+
+ removed_app = TRUE;
+ }
+ break;
+
+ case HD_ENTRY_WATCHED_APP:
+ /* we handle adding/removing of applications internally in AS */
+ g_warning("asked to remove HD_ENTRY_WATCHED_APP -- this should not happen");
+ return FALSE;
+
+ default:
+ g_warning("Unknown info type");
+ return FALSE;
+ }
+
+ if (removed_app)
+ {
+ /* we need to check that not all of the remaining apps are
+ * hibernating, and if they are, wake one of them up, because
+ * we will not receive current window msg from MB
+ */
+ GList * l;
+ gboolean all_asleep = TRUE;
+
+ for (l = hdwm->priv->applications; l != NULL; l = l->next)
+ {
+ HDEntryInfo * entry = l->data;
+ HDWMWatchableApp * app = hd_entry_info_get_app (entry);
+
+ if (app && !hd_wm_watchable_app_is_hibernating (app))
+ {
+ all_asleep = FALSE;
+ break;
+ }
+ }
+
+ if (all_asleep && hdwm->priv->applications)
+ {
+ /*
+ * Unfortunately, we do not know which application is the
+ * most recently used one, so we just wake up the first one
+ */
+ hd_wm_top_item ((HDEntryInfo*)hdwm->priv->applications->data);
+ }
+ }
+
+ return removed_app;
+}
+
+GList *
+hd_wm_get_applications (HDWM *hdwm)
+{
+ return hdwm->priv->applications;
+}
+
+
static void
hd_wm_process_x_client_list (HDWM *hdwm)
{
@@ -1705,7 +1864,8 @@
if (!info)
{
info = hd_wm_watched_window_create_new_info (win);
- g_debug ("Adding AS entry for view-less window\n");
+ g_debug ("Adding AS entry for view-less window\n");
+ hd_wm_add_applications (hdwm,info);
g_signal_emit_by_name (hdwm,"entry_info_added",info);
}
}
Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h
===================================================================
--- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h 2007-01-05 14:14:48 UTC (rev 8971)
+++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildonwm/hd-wm.h 2007-01-05 14:29:13 UTC (rev 8972)
@@ -240,6 +240,13 @@
void
hd_wm_get_work_area (HDWM *hdwm, GdkRectangle *work_area);
+GList *
+hd_wm_get_applications (HDWM *hdwm);
+
+gboolean
+hd_wm_remove_applications (HDWM *hdwm, HDEntryInfo *entry_info);
+
+
/*
* These are simple getters/setters that replace direct use of global
* hnwm->something. In order to ensure that we do not incure performance
- Previous message: [maemo-commits] r8971 - in projects/haf/tags/gtk+2.0: . 2.10.6-0osso1test2 2.10.6-0osso1test2/debian 2.10.6-0osso1test2/gdk 2.10.6-0osso1test2/gtk
- Next message: [maemo-commits] r8973 - projects/haf/tags/gtk+2.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
