glade3 r1928 - in trunk: . gladeui src
- From: tvb svn gnome org
- To: svn-commits-list gnome org
- Subject: glade3 r1928 - in trunk: . gladeui src
- Date: Thu, 18 Sep 2008 19:05:01 +0000 (UTC)
Author: tvb
Date: Thu Sep 18 19:05:01 2008
New Revision: 1928
URL: http://svn.gnome.org/viewvc/glade3?rev=1928&view=rev
Log:
* src/glade-window.c:
- Show glade widgets in the workspace on selection changes in the project
and not on item-activated.
- Rename "Dock Editor" -> "Dock Properties" as per bug 487613.
* gladeui/glade-design-layout.c: Fixed expose event to chain to parent class
after drawing an orange box (non window widgets are usualy GTK_NO_WINDOW).
* gladeui/glade-widget.c: Made glade_widget_show() show the toplevel of any
GtkWidget object, also now shows toplevel non window glade widgets in the
workspace, if the widget is referenced by a property that as a result parents
the widget (i.e. bears a "parentless-widget" property reference), then the
referencing widget is shown instead.
* gladeui/glade-popup.c: Added devhelp icon to documentation menu item, added
docs icon to normal menu.
Modified:
trunk/ChangeLog
trunk/gladeui/glade-command.c
trunk/gladeui/glade-design-layout.c
trunk/gladeui/glade-popup.c
trunk/gladeui/glade-widget.c
trunk/gladeui/glade-widget.h
trunk/src/glade-window.c
Modified: trunk/gladeui/glade-command.c
==============================================================================
--- trunk/gladeui/glade-command.c (original)
+++ trunk/gladeui/glade-command.c Thu Sep 18 19:05:01 2008
@@ -1267,8 +1267,6 @@
/* Mark the properties as recorded */
cdata->props_recorded = TRUE;
}
-
-
}
/* Toplevels get pasted to the active project */
Modified: trunk/gladeui/glade-design-layout.c
==============================================================================
--- trunk/gladeui/glade-design-layout.c (original)
+++ trunk/gladeui/glade-design-layout.c Thu Sep 18 19:05:01 2008
@@ -787,10 +787,12 @@
/* draw a filled rectangle in case child does not draw
* it's own background (a GTK_WIDGET_NO_WINDOW child). */
gdk_draw_rectangle (widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
+ widget->style->bg_gc[GTK_STATE_NORMAL],
TRUE,
- x + OUTLINE_WIDTH / 2, y + OUTLINE_WIDTH / 2,
+ x + OUTLINE_WIDTH / 2, y + OUTLINE_WIDTH / 2,
w - OUTLINE_WIDTH, h - OUTLINE_WIDTH);
+
+ GTK_WIDGET_CLASS (glade_design_layout_parent_class)->expose_event (widget, ev);
}
return TRUE;
Modified: trunk/gladeui/glade-popup.c
==============================================================================
--- trunk/gladeui/glade-popup.c (original)
+++ trunk/gladeui/glade-popup.c Thu Sep 18 19:05:01 2008
@@ -217,6 +217,7 @@
glade_popup_append_item (GtkWidget *popup_menu,
const gchar *stock_id,
const gchar *label,
+ GtkWidget *image,
gboolean sensitive,
gpointer callback,
gpointer data)
@@ -229,6 +230,11 @@
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item),
gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU));
}
+ else if (image && label)
+ {
+ menu_item = gtk_image_menu_item_new_with_mnemonic (label);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), image);
+ }
else if (stock_id)
menu_item = gtk_image_menu_item_new_from_stock (stock_id, NULL);
else
@@ -311,7 +317,7 @@
item = glade_popup_append_item (menu,
a->klass->stock,
- a->klass->label, TRUE,
+ a->klass->label, NULL, TRUE,
(a->actions) ? NULL : callback,
(a->actions) ? NULL : a->klass->path);
@@ -398,6 +404,7 @@
GtkWidget *popup_menu;
gboolean sensitive;
GladePlaceholder *tmp_placeholder;
+ gchar *book;
sensitive = glade_palette_get_current_item (glade_app_get_palette ()) != NULL;
@@ -411,9 +418,9 @@
tmp_placeholder = placeholder;
if (!tmp_placeholder && widget)
tmp_placeholder = find_placeholder (glade_widget_get_object (widget));
- glade_popup_append_item (popup_menu, NULL, _("_Add widget here"), tmp_placeholder != NULL,
+ glade_popup_append_item (popup_menu, NULL, _("_Add widget here"), NULL, tmp_placeholder != NULL,
glade_popup_placeholder_add_cb, tmp_placeholder);
- glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), TRUE,
+ glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, TRUE,
glade_popup_root_add_cb, NULL);
}
@@ -427,23 +434,23 @@
gtk_widget_show (separator);
}
- glade_popup_append_item (popup_menu, NULL, _("_Select"), TRUE,
+ glade_popup_append_item (popup_menu, NULL, _("_Select"), NULL, TRUE,
glade_popup_select_cb, widget);
- glade_popup_append_item (popup_menu, GTK_STOCK_CUT, NULL, TRUE,
+ glade_popup_append_item (popup_menu, GTK_STOCK_CUT, NULL, NULL, TRUE,
glade_popup_cut_cb, widget);
- glade_popup_append_item (popup_menu, GTK_STOCK_COPY, NULL, TRUE,
+ glade_popup_append_item (popup_menu, GTK_STOCK_COPY, NULL, NULL, TRUE,
glade_popup_copy_cb, widget);
/* paste is placholder specific when the popup is on a placeholder */
sensitive = glade_clipboard_get_has_selection (glade_app_get_clipboard ());
if (placeholder)
- glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, sensitive,
+ glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, NULL, sensitive,
glade_popup_placeholder_paste_cb, placeholder);
else
- glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, sensitive,
+ glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, NULL, sensitive,
glade_popup_paste_cb, widget);
- glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, TRUE,
+ glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, NULL, TRUE,
glade_popup_delete_cb, widget);
@@ -485,6 +492,21 @@
glade_popup_action_populate_menu (popup_menu, widget, NULL, packing);
}
+
+ g_object_get (widget->adaptor, "book", &book, NULL);
+ if (book)
+ {
+ GtkWidget *icon = glade_util_get_devhelp_icon (GTK_ICON_SIZE_MENU);
+ GtkWidget *separator = gtk_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), separator);
+ gtk_widget_show (separator);
+
+ glade_popup_append_item (popup_menu, NULL, _("Read _documentation"), icon, TRUE,
+ glade_popup_docs_cb, widget->adaptor);
+ }
+ g_free (book);
+
+
return popup_menu;
}
@@ -498,11 +520,11 @@
if (GTK_WIDGET_TOPLEVEL (glade_widget_get_object (widget)))
{
glade_popup_append_item (popup_menu, GTK_STOCK_PASTE,
- NULL, TRUE,
+ NULL, NULL, TRUE,
glade_popup_clipboard_paste_cb, NULL);
}
- glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, TRUE,
+ glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, NULL, TRUE,
glade_popup_clipboard_delete_cb, widget);
return popup_menu;
@@ -605,14 +627,17 @@
popup_menu = gtk_menu_new ();
- glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), TRUE,
+ glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, TRUE,
glade_popup_root_add_cb, adaptor);
g_object_get (adaptor, "book", &book, NULL);
if (book)
- glade_popup_append_item (popup_menu, NULL, _("Read _documentation"), TRUE,
+ {
+ GtkWidget *icon = glade_util_get_devhelp_icon (GTK_ICON_SIZE_MENU);
+ glade_popup_append_item (popup_menu, NULL, _("Read _documentation"), icon, TRUE,
glade_popup_docs_cb, adaptor);
+ }
g_free (book);
Modified: trunk/gladeui/glade-widget.c
==============================================================================
--- trunk/gladeui/glade-widget.c (original)
+++ trunk/gladeui/glade-widget.c Thu Sep 18 19:05:01 2008
@@ -1858,12 +1858,29 @@
{
GladeDesignView *view;
GtkWidget *layout;
+ GladeProperty *property;
g_return_if_fail (GLADE_IS_WIDGET (widget));
/* Position window at saved coordinates or in the center */
- if (GTK_IS_WINDOW (widget->object) && glade_widget_embed (widget))
+ if (GTK_IS_WIDGET (widget->object) && !widget->parent)
{
+ if (GTK_IS_WINDOW (widget->object) && !glade_widget_embed (widget))
+ {
+ g_warning ("Unable to embed %s\n", widget->name);
+ return;
+ }
+
+ /* Maybe a property references this widget internally, show that widget instead */
+ if ((property = glade_widget_get_parentless_widget_ref (widget)) != NULL)
+ {
+ /* will never happen, paranoid check to avoid endless recursion. */
+ if (property->widget != widget)
+ glade_widget_show (property->widget);
+ return;
+ }
+
+
view = glade_design_view_get_from_project (glade_widget_get_project (widget));
layout = GTK_WIDGET (glade_design_view_get_layout (view));
@@ -1877,9 +1894,12 @@
G_CALLBACK (glade_widget_add_to_layout),
widget, NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
- } else if (GTK_IS_WIDGET (widget->object))
+ }
+ else if (GTK_IS_WIDGET (widget->object))
{
- gtk_widget_show_all (GTK_WIDGET (widget->object));
+ GladeWidget *toplevel = glade_widget_get_toplevel (widget);
+ if (toplevel != widget)
+ glade_widget_show (toplevel);
}
widget->visible = TRUE;
}
@@ -3287,6 +3307,24 @@
}
/**
+ * glade_widget_get_toplevel:
+ * @widget: A #GladeWidget
+ *
+ * Returns: The toplevel #GladeWidget in the hierarchy (or @widget)
+ */
+GladeWidget *
+glade_widget_get_toplevel (GladeWidget *widget)
+{
+ GladeWidget *toplevel = widget;
+ g_return_val_if_fail (GLADE_IS_WIDGET (widget), NULL);
+
+ while (toplevel->parent)
+ toplevel = toplevel->parent;
+
+ return toplevel;
+}
+
+/**
* glade_widget_set_packing_properties:
* @widget: A #GladeWidget
* @container: The parent #GladeWidget
Modified: trunk/gladeui/glade-widget.h
==============================================================================
--- trunk/gladeui/glade-widget.h (original)
+++ trunk/gladeui/glade-widget.h Thu Sep 18 19:05:01 2008
@@ -394,6 +394,8 @@
void glade_widget_set_parent (GladeWidget *widget,
GladeWidget *parent);
+
+GladeWidget *glade_widget_get_toplevel (GladeWidget *widget);
gboolean glade_widget_superuser (void);
Modified: trunk/src/glade-window.c
==============================================================================
--- trunk/src/glade-window.c (original)
+++ trunk/src/glade-window.c Thu Sep 18 19:05:01 2008
@@ -644,19 +644,20 @@
*/
g_return_if_fail (GLADE_IS_WINDOW (window));
- /* Only update the editor if the selection has changed on
+ /* Only update the toolbar & workspace if the selection has changed on
* the currently active project.
*/
- if (glade_app_get_editor() &&
- project && (project == glade_app_get_project ()))
+ if (project == glade_app_get_project ())
{
list = glade_project_selection_get (project);
num = g_list_length (list);
if (num == 1 && !GLADE_IS_PLACEHOLDER (list->data))
{
-
glade_widget = glade_widget_get_from_gobject (G_OBJECT (list->data));
+
+ glade_widget_show (glade_widget);
+
clean_actions (window);
if (glade_widget->actions)
add_actions (window, glade_widget, glade_widget->actions);
@@ -1606,21 +1607,6 @@
}
static void
-inspector_item_activated_cb (GladeInspector *inspector,
- GladeWindow *window)
-{
- GList *item = glade_inspector_get_selected_items (inspector);
- g_assert (GLADE_IS_WIDGET (item->data) && (item->next == NULL));
-
- /* bring window on top since inspector may be detached */
- gtk_window_present (GTK_WINDOW (window));
- /* switch to this widget in the workspace */
- glade_widget_show (GLADE_WIDGET (item->data));
-
- g_list_free (item);
-}
-
-static void
notebook_switch_page_cb (GtkNotebook *notebook,
GtkNotebookPage *page,
guint page_num,
@@ -1695,11 +1681,7 @@
inspector = glade_inspector_new ();
gtk_widget_show (inspector);
glade_inspector_set_project (GLADE_INSPECTOR (inspector), project);
-
- g_signal_connect (inspector, "item-activated",
- G_CALLBACK (inspector_item_activated_cb),
- window);
-
+
gtk_notebook_append_page (GTK_NOTEBOOK (window->priv->inspectors_notebook), inspector, NULL);
@@ -2265,7 +2247,7 @@
N_("Dock the inspector into the main window"),
G_CALLBACK (toggle_dock_cb), TRUE },
- { "DockEditor", NULL, N_("Dock _Editor"), NULL,
+ { "DockEditor", NULL, N_("Dock Prop_erties"), NULL,
N_("Dock the editor into the main window"),
G_CALLBACK (toggle_dock_cb), TRUE },
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]