diff options
author | Kristian Høgsberg <krh@redhat.com> | 2006-07-08 17:47:22 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2006-07-08 17:47:22 -0400 |
commit | 6e1e33449b905bf74da6a62a94fb7b480072f269 (patch) | |
tree | 9add05f5cb77cacf259f679ec104d310dba8c4a6 | |
parent | 420b48e001a0cbf1d51661ef4deba4979451561c (diff) |
Update dock when launchers are added.
-rw-r--r-- | dock.c | 65 |
1 files changed, 59 insertions, 6 deletions
@@ -492,6 +492,14 @@ kiba_dock_add_launcher (KibaDock *dock, KibaLauncher *launcher, int x, int y) launcher->object = object; launcher->dock = dock; + + if (GTK_WIDGET_REALIZED (GTK_WIDGET (dock))) + kiba_launcher_create_window (launcher); + + if (GTK_WIDGET_MAPPED (GTK_WIDGET (dock))) + gdk_window_show (launcher->window); + + kiba_dock_layout (dock); } static void @@ -851,11 +859,11 @@ set_position_from_string (KibaDock *dock, const char *string) printf ("invalid position\n"); } -void -key_changed_callback(GConfClient *client, - guint cnxn_id, - GConfEntry *entry, - gpointer user_data) +static void +options_changed_callback(GConfClient *client, + guint cnxn_id, + GConfEntry *entry, + gpointer user_data) { KibaDock *dock; const char *value; @@ -877,6 +885,46 @@ key_changed_callback(GConfClient *client, } static void +launchers_changed_callback(GConfClient *client, + guint cnxn_id, + GConfEntry *entry, + gpointer user_data) +{ + KibaDock *dock; + KibaLauncher *launcher; + char *path, *last_slash; + GdkScreen *screen; + int width, height; + + screen = gdk_screen_get_default (); + width = gdk_screen_get_width (screen); + height = gdk_screen_get_height (screen); + + dock = KIBA_DOCK (user_data); + + if (!g_str_has_suffix (entry->key, "/file")) + { + printf ("ignoring gconf event for %s\n", entry->key); + return; + } + + path = g_strdup (entry->key); + last_slash = strrchr (path, '/'); + *last_slash = '\0'; + printf ("entry: key = %s, path = %s\n", entry->key, path); + + launcher = kiba_launcher_new (dock, path); + g_free (path); + + if (launcher == NULL) + return; + + kiba_dock_add_launcher (dock, launcher, + g_random_int_range (0, width), + g_random_int_range (0, height)); +} + +static void add_launchers (KibaDock *dock, GConfClient *gconf_client) { GSList *launchers, *l; @@ -934,7 +982,12 @@ int main (int argc, char *argv[]) g_free (position); gconf_client_notify_add(gconf_client, KIBA_GCONF_PATH "/options", - key_changed_callback, + options_changed_callback, + dock, + NULL, &error); + + gconf_client_notify_add(gconf_client, KIBA_GCONF_PATH "/launchers", + launchers_changed_callback, dock, NULL, &error); |