glom r1616 - in trunk: . glom/utility_widgets
- From: jhs svn gnome org
- To: svn-commits-list gnome org
- Subject: glom r1616 - in trunk: . glom/utility_widgets
- Date: Thu, 22 May 2008 14:20:33 +0000 (UTC)
Author: jhs
Date: Thu May 22 14:20:32 2008
New Revision: 1616
URL: http://svn.gnome.org/viewvc/glom?rev=1616&view=rev
Log:
2008-05-22 Johannes Schmid <johannes schmid openismus com>
* glom/utility_widgets/flowtable_dnd.cc:
* glom/utility_widgets/flowtable_dnd.h:
Fixed some crashers when starting a drag from no item
Modified:
trunk/ChangeLog
trunk/glom/utility_widgets/flowtable_dnd.cc
trunk/glom/utility_widgets/flowtable_dnd.h
Modified: trunk/glom/utility_widgets/flowtable_dnd.cc
==============================================================================
--- trunk/glom/utility_widgets/flowtable_dnd.cc (original)
+++ trunk/glom/utility_widgets/flowtable_dnd.cc Thu May 22 14:20:32 2008
@@ -77,7 +77,6 @@
child.signal_drag_end().connect (sigc::bind<Gtk::Widget*>(sigc::mem_fun (*this, &FlowTableDnd::on_child_drag_end), &child), false);
child.signal_drag_data_get().connect (sigc::bind<Gtk::Widget*>(sigc::mem_fun (*this, &FlowTableDnd::on_child_drag_data_get), &child), false);
child.signal_drag_data_delete().connect (sigc::bind<Gtk::Widget*>(sigc::mem_fun (*this, &FlowTableDnd::on_child_drag_data_delete), &child), false);
-
if (!(child.get_flags() & Gtk::NO_WINDOW))
{
std::list<Gtk::TargetEntry> drag_targets;
@@ -382,12 +381,13 @@
{
FlowTableItem* item = find_current_dnd_item (child);
LayoutWidgetBase* base = dnd_datawidget_from_item (item);
+ gpointer data = 0;
if (base)
{
- gpointer data = base;
- selection_data.set ("LayoutWidgetBase*", 8, (guint8*)&data,
- sizeof(gpointer*));
+ data = base;
}
+ selection_data.set ("LayoutWidgetBase*", 8, (guint8*)&data,
+ sizeof(gpointer*));
}
void FlowTableDnd::on_child_drag_begin (const Glib::RefPtr<Gdk::DragContext>& drag_context,
@@ -396,6 +396,7 @@
FlowTableItem* item = find_current_dnd_item (child);
if (!item)
{
+ gdk_drag_abort (drag_context->gobj(), 0);
return;
}
if (item->m_first)
@@ -410,6 +411,8 @@
Gtk::Widget* child)
{
FlowTableItem* item = find_current_dnd_item (child);
+ if (!item)
+ return;
LayoutWidgetBase* base = dnd_datawidget_from_item (item);
if (base->get_dnd_in_progress())
{
Modified: trunk/glom/utility_widgets/flowtable_dnd.h
==============================================================================
--- trunk/glom/utility_widgets/flowtable_dnd.h (original)
+++ trunk/glom/utility_widgets/flowtable_dnd.h Thu May 22 14:20:32 2008
@@ -44,7 +44,6 @@
virtual bool on_drag_motion(const Glib::RefPtr<Gdk::DragContext>& drag_context, int x, int y, guint time);
virtual void on_drag_leave(const Glib::RefPtr<Gdk::DragContext>& drag_context, guint time);
virtual void on_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& drag_context, int, int, const Gtk::SelectionData& selection_data, guint, guint time);
-
virtual bool on_child_drag_motion(const Glib::RefPtr<Gdk::DragContext>& drag_context, int x, int y, guint time, Gtk::Widget* child);
virtual void on_child_drag_leave(const Glib::RefPtr<Gdk::DragContext>& drag_context, guint time);
virtual void on_child_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& drag_context, int, int,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]