]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkaction.c
GtkTextView: don't popdown a bubble if we don't have one
[~andy/gtk] / gtk / gtkaction.c
index b1e4957609a7deabea0b4288e9e5e39b4b8bd7e1..6bb0ae9d7b6eb3a07063bf6d4fb70f515aa56e48 100644 (file)
@@ -14,9 +14,7 @@
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
- * License along with the Gnome Library; see the file COPYING.LIB.  If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -86,7 +84,7 @@
 #include "gtkmarshalers.h"
 #include "gtkmenuitem.h"
 #include "gtkstock.h"
-#include "gtktearoffmenuitem.h"
+#include "deprecated/gtktearoffmenuitem.h"
 #include "gtktoolbutton.h"
 #include "gtktoolbar.h"
 #include "gtkprivate.h"
@@ -716,6 +714,7 @@ static void
 remove_proxy (GtkAction *action,
              GtkWidget *proxy)
 {
+  g_object_unref (proxy);
   action->private_data->proxies = g_slist_remove (action->private_data->proxies, proxy);
 }
 
@@ -725,6 +724,8 @@ connect_proxy (GtkAction *action,
 {
   action->private_data->proxies = g_slist_prepend (action->private_data->proxies, proxy);
 
+  g_object_ref_sink (proxy);
+
   if (action->private_data->action_group)
     _gtk_action_group_emit_connect_proxy (action->private_data->action_group, action, proxy);
 
@@ -790,18 +791,20 @@ _gtk_action_emit_activate (GtkAction *action)
 {
   GtkActionGroup *group = action->private_data->action_group;
 
-  if (group != NULL) 
+  if (group != NULL)
     {
+      g_object_ref (action);
       g_object_ref (group);
       _gtk_action_group_emit_pre_activate (group, action);
     }
 
-    g_signal_emit (action, action_signals[ACTIVATE], 0);
+  g_signal_emit (action, action_signals[ACTIVATE], 0);
 
-  if (group != NULL) 
+  if (group != NULL)
     {
       _gtk_action_group_emit_post_activate (group, action);
       g_object_unref (group);
+      g_object_unref (action);
     }
 }