~awn-core/awn/trunk-rewrite

« back to all changes in this revision

Viewing changes to src/awn-applet-manager.c

  • Committer: Michal Hruby
  • Date: 2009-10-31 12:14:11 UTC
  • Revision ID: michal.mhr@gmail.com-20091031121411-f6id1hdy30makirw
        * Makefile.am:
        * applet-activation/main.c:
        * applets/expander/applet.c:
        * applets/expander/expander.desktop.in.in:
        * applets/separator/Makefile.am:
        * applets/separator/applet.c:
        * applets/separator/separator.desktop.in.in:
        * configure.in:
        * src/Makefile.am:
        * src/awn-applet-manager.c:
        * src/awn-separator.c:
        * src/awn-separator.h:
        Added separator applet.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
#include "awn-ua-alignment.h"
31
31
#include "awn-applet-proxy.h"
32
32
#include "awn-throbber.h"
 
33
#include "awn-separator.h"
33
34
#include "xutils.h"
34
35
 
35
36
#define MAX_UA_LIST_ENTRIES 50
472
473
 
473
474
      g_hash_table_replace (priv->applets, g_strdup (uid), image);
474
475
      gtk_widget_destroy (GTK_WIDGET (applet));
 
476
      applet = NULL;
475
477
 
476
478
      awn_applet_manager_refresh_applets (manager);
477
479
 
481
483
        g_object_notify (G_OBJECT (manager), "expands");
482
484
      }
483
485
    }
484
 
    // FIXME: separators!
485
 
    if (flags & AWN_APPLET_HAS_SHAPE_MASK)
 
486
    if ((flags & AWN_APPLET_IS_SEPARATOR) && AWN_IS_APPLET_PROXY (applet))
486
487
    {
487
 
      GdkWindow *win = GTK_WIDGET (applet)->window;
488
 
      g_object_set_qdata_full (G_OBJECT (applet), priv->shape_mask_quark,
489
 
                               xutils_get_input_shape (win),
490
 
                               (GDestroyNotify) gdk_region_destroy);
491
 
      g_signal_emit (manager, _applet_manager_signals[SHAPE_MASK_CHANGED], 0);
 
488
      GtkWidget *image = awn_separator_new_from_config_with_values (
 
489
          priv->client, priv->position, priv->size, priv->offset);
 
490
      gtk_widget_show (image);
 
491
      gtk_box_pack_start (GTK_BOX (manager), image, FALSE, TRUE, 0);
 
492
 
 
493
      g_hash_table_replace (priv->applets, g_strdup (uid), image);
 
494
      gtk_widget_destroy (GTK_WIDGET (applet));
 
495
      applet = NULL;
 
496
 
 
497
      awn_applet_manager_refresh_applets (manager);
492
498
    }
493
 
    else
 
499
 
 
500
    if (applet)
494
501
    {
495
 
      gpointer region = g_object_get_qdata (G_OBJECT (applet),
496
 
                                            priv->shape_mask_quark);
497
 
      if (region)
498
 
      {
499
 
        g_object_set_qdata (G_OBJECT (applet), priv->shape_mask_quark, NULL);
500
 
        g_signal_emit (manager, _applet_manager_signals[SHAPE_MASK_CHANGED],
501
 
                       0);
 
502
      if (flags & AWN_APPLET_HAS_SHAPE_MASK)
 
503
      {
 
504
        GdkWindow *win = GTK_WIDGET (applet)->window;
 
505
        g_object_set_qdata_full (G_OBJECT (applet), priv->shape_mask_quark,
 
506
                                 xutils_get_input_shape (win),
 
507
                                 (GDestroyNotify) gdk_region_destroy);
 
508
        g_signal_emit (manager, _applet_manager_signals[SHAPE_MASK_CHANGED], 0);
 
509
      }
 
510
      else
 
511
      {
 
512
        gpointer region = g_object_get_qdata (G_OBJECT (applet),
 
513
                                              priv->shape_mask_quark);
 
514
        if (region)
 
515
        {
 
516
          g_object_set_qdata (G_OBJECT (applet), priv->shape_mask_quark, NULL);
 
517
          g_signal_emit (manager, _applet_manager_signals[SHAPE_MASK_CHANGED],
 
518
                         0);
 
519
        }
502
520
      }
503
521
    }
504
522
  }
730
748
      g_object_get (applet, "uid", &uid, NULL);
731
749
      /* FIXME: Let the applet know it's about to be deleted ? */
732
750
    }
733
 
    else if (GTK_IS_IMAGE (applet)) // expander
 
751
    else if (GTK_IS_IMAGE (applet) && !AWN_IS_SEPARATOR (applet)) // expander
734
752
    {
735
753
      priv->expander_count--;
736
754
      if (priv->expander_count == 0 && priv->expands)
762
780
  if (priv->applet_list == NULL)
763
781
  {
764
782
    g_debug ("No applets");
765
 
    return; // FIXME: removing last applet doesn't work because of this
 
783
    g_hash_table_foreach (priv->applets, (GHFunc)zero_applets, manager);
 
784
    g_hash_table_foreach_remove (priv->applets, (GHRFunc)delete_applets, 
 
785
                                 manager);
 
786
    return;
766
787
  }
767
788
 
768
789
  guint applet_count = g_slist_length (priv->applet_list);