[gnome-builder/wip/slaf/spellcheck-sidebar: 10/33] spellchecker: integrate PnlOverLay to IdeEditorPerspective
- From: Sébastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/slaf/spellcheck-sidebar: 10/33] spellchecker: integrate PnlOverLay to IdeEditorPerspective
- Date: Wed, 11 Jan 2017 20:47:41 +0000 (UTC)
commit daf9e300f619f2da0f5d6e73ce7ee928e04e2b1f
Author: Sébastien Lafargue <slafargue gnome org>
Date: Sun Jan 1 17:59:46 2017 +0100
spellchecker: integrate PnlOverLay to IdeEditorPerspective
contrib/pnl/Makefile.am | 2 +-
contrib/pnl/pnl-dock-bin-edge-private.h | 1 -
contrib/pnl/pnl-dock-bin-edge.h | 2 +
contrib/pnl/pnl-dock-overlay-edge-private.h | 39 ---
contrib/pnl/pnl-dock-overlay-edge.c | 2 +-
contrib/pnl/pnl-dock-overlay.c | 70 +++++-
contrib/pnl/pnl-dock-overlay.h | 11 +-
libide/editor/ide-editor-frame-actions.c | 34 +--
libide/editor/ide-editor-frame-private.h | 5 -
libide/editor/ide-editor-frame.c | 19 --
libide/editor/ide-editor-perspective.c | 266 +++++++++++++++++++-
libide/editor/ide-editor-perspective.h | 25 ++-
libide/editor/ide-editor-perspective.ui | 95 ++++----
plugins/build-tools/gbp-build-workbench-addin.c | 4 +-
.../color-picker/gb-color-picker-workbench-addin.c | 10 +-
plugins/devhelp/gbp-devhelp-panel.c | 2 +-
plugins/devhelp/gbp-devhelp-workbench-addin.c | 8 +-
plugins/project-tree/gb-project-tree-addin.c | 4 +-
plugins/symbol-tree/symbol-tree-panel.c | 2 +-
plugins/symbol-tree/symbol-tree.c | 12 +-
plugins/sysmon/gb-sysmon-addin.c | 4 +-
plugins/terminal/gb-terminal-workbench-addin.c | 8 +-
22 files changed, 438 insertions(+), 187 deletions(-)
---
diff --git a/contrib/pnl/Makefile.am b/contrib/pnl/Makefile.am
index a6b64e5..98e0ef4 100644
--- a/contrib/pnl/Makefile.am
+++ b/contrib/pnl/Makefile.am
@@ -14,6 +14,7 @@ headers_DATA = \
pnl-dock-item.h \
pnl-dock-manager.h \
pnl-dock-overlay.h \
+ pnl-dock-overlay-edge.h \
pnl-dock-paned.h \
pnl-dock-revealer.h \
pnl-dock-stack.h \
@@ -37,7 +38,6 @@ libpanel_gtk_la_SOURCES = \
pnl-dock-bin.c \
pnl-dock-item.c \
pnl-dock-manager.c \
- pnl-dock-overlay-edge-private.h \
pnl-dock-overlay-edge.c \
pnl-dock-overlay.c \
pnl-dock-paned-private.h \
diff --git a/contrib/pnl/pnl-dock-bin-edge-private.h b/contrib/pnl/pnl-dock-bin-edge-private.h
index cf79307..e45e4e2 100644
--- a/contrib/pnl/pnl-dock-bin-edge-private.h
+++ b/contrib/pnl/pnl-dock-bin-edge-private.h
@@ -23,7 +23,6 @@
G_BEGIN_DECLS
-GtkPositionType pnl_dock_bin_edge_get_edge (PnlDockBinEdge *self);
void pnl_dock_bin_edge_set_edge (PnlDockBinEdge *self,
GtkPositionType bin_edge);
diff --git a/contrib/pnl/pnl-dock-bin-edge.h b/contrib/pnl/pnl-dock-bin-edge.h
index 65dee0b..c5496fa 100644
--- a/contrib/pnl/pnl-dock-bin-edge.h
+++ b/contrib/pnl/pnl-dock-bin-edge.h
@@ -43,6 +43,8 @@ struct _PnlDockBinEdgeClass
void (*padding8) (void);
};
+GtkPositionType pnl_dock_bin_edge_get_edge (PnlDockBinEdge *self);
+
G_END_DECLS
#endif /* PNL_DOCK_BIN_EDGE_H */
diff --git a/contrib/pnl/pnl-dock-overlay-edge.c b/contrib/pnl/pnl-dock-overlay-edge.c
index e85f69e..6a07fc1 100644
--- a/contrib/pnl/pnl-dock-overlay-edge.c
+++ b/contrib/pnl/pnl-dock-overlay-edge.c
@@ -17,7 +17,7 @@
*/
#include "pnl-dock-item.h"
-#include "pnl-dock-overlay-edge-private.h"
+#include "pnl-dock-overlay-edge.h"
#include "pnl-dock-paned.h"
#include "pnl-dock-paned-private.h"
#include "pnl-dock-stack.h"
diff --git a/contrib/pnl/pnl-dock-overlay.c b/contrib/pnl/pnl-dock-overlay.c
index 167d1e7..6ff8272 100644
--- a/contrib/pnl/pnl-dock-overlay.c
+++ b/contrib/pnl/pnl-dock-overlay.c
@@ -17,7 +17,7 @@
*/
#include "pnl-animation.h"
-#include "pnl-dock-overlay-edge-private.h"
+#include "pnl-dock-overlay-edge.h"
#include "pnl-dock-item.h"
#include "pnl-dock-overlay.h"
#include "pnl-tab.h"
@@ -204,11 +204,12 @@ pnl_dock_overlay_add (GtkContainer *container,
GtkWidget *widget)
{
PnlDockOverlay *self = (PnlDockOverlay *)container;
+ PnlDockOverlayPrivate *priv = pnl_dock_overlay_get_instance_private (self);
g_assert (PNL_IS_DOCK_OVERLAY (self));
g_assert (GTK_IS_WIDGET (widget));
- GTK_CONTAINER_CLASS (pnl_dock_overlay_parent_class)->add (container, widget);
+ gtk_container_add (GTK_CONTAINER (priv->overlay), widget);
pnl_dock_overlay_update_focus_chain (self);
@@ -609,17 +610,17 @@ pnl_dock_overlay_new (void)
}
static void
-pnl_dock_overlay_add_child (GtkBuildable *buildable,
- GtkBuilder *builder,
- GObject *child,
- const gchar *type)
+pnl_dock_overlay_real_add_child (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ GObject *child,
+ const gchar *type)
{
PnlDockOverlay *self = (PnlDockOverlay *)buildable;
PnlDockOverlayPrivate *priv = pnl_dock_overlay_get_instance_private (self);
PnlDockOverlayEdge *parent = NULL;
g_assert (PNL_IS_DOCK_OVERLAY (self));
- g_assert (GTK_IS_BUILDER (builder));
+ g_assert (builder == NULL || GTK_IS_BUILDER (builder));
g_assert (G_IS_OBJECT (child));
if (!GTK_IS_WIDGET (child))
@@ -654,7 +655,24 @@ adopt:
static void
pnl_dock_overlay_init_buildable_iface (GtkBuildableIface *iface)
{
- iface->add_child = pnl_dock_overlay_add_child;
+ iface->add_child = pnl_dock_overlay_real_add_child;
+}
+
+/**
+ * pnl_dock_overlay_add_child:
+ * self: a #PnlDockOverlay.
+ * child: a #GtkWidget.
+ * type: the type of the child to add (center, left, right, top, bottom).
+ *
+ */
+void
+pnl_overlay_add_child (PnlDockOverlay *self,
+ GtkWidget *child,
+ const gchar *type)
+{
+ g_assert (PNL_IS_DOCK_OVERLAY (self));
+
+ pnl_dock_overlay_real_add_child (GTK_BUILDABLE (self), NULL, G_OBJECT (child), type);
}
static void
@@ -702,3 +720,39 @@ pnl_dock_overlay_init_dock_item_iface (PnlDockItemInterface *iface)
iface->present_child = pnl_dock_overlay_present_child;
iface->update_visibility = pnl_dock_overlay_update_visibility;
}
+
+/**
+ * pnl_dock_overlay_get_edge:
+ * self: An #PnlDockOverlay.
+ * position: the edge position.
+ *
+ * Returns: (transfer none): The corresponding #PnlDockOverlayEdge.
+ */
+PnlDockOverlayEdge *
+pnl_dock_overlay_get_edge (PnlDockOverlay *self,
+ GtkPositionType position)
+{
+ PnlDockOverlayPrivate *priv = pnl_dock_overlay_get_instance_private (self);
+
+ g_return_val_if_fail (PNL_IS_DOCK_OVERLAY (self), NULL);
+
+ return priv->edges [position];
+}
+
+/**
+ * pnl_dock_overlay_get_edge_adjustment:
+ * self: An #PnlDockOverlay.
+ * position: the edge position.
+ *
+ * Returns: (transfer none): The corresponding #GtkAdjustment.
+ */
+GtkAdjustment *
+pnl_dock_overlay_get_edge_adjustment (PnlDockOverlay *self,
+ GtkPositionType position)
+{
+ PnlDockOverlayPrivate *priv = pnl_dock_overlay_get_instance_private (self);
+
+ g_return_val_if_fail (PNL_IS_DOCK_OVERLAY (self), NULL);
+
+ return priv->edge_adj [position];
+}
diff --git a/contrib/pnl/pnl-dock-overlay.h b/contrib/pnl/pnl-dock-overlay.h
index 5038456..e5c69b0 100644
--- a/contrib/pnl/pnl-dock-overlay.h
+++ b/contrib/pnl/pnl-dock-overlay.h
@@ -24,6 +24,7 @@
#define PNL_DOCK_OVERLAY_H
#include "pnl-dock.h"
+#include "pnl-dock-overlay-edge.h"
G_BEGIN_DECLS
@@ -43,8 +44,14 @@ struct _PnlDockOverlayClass
void (*padding8) (void);
};
-GtkWidget *pnl_dock_overlay_new (void);
-
+GtkWidget *pnl_dock_overlay_new (void);
+void pnl_overlay_add_child (PnlDockOverlay *self,
+ GtkWidget *child,
+ const gchar *type);
+PnlDockOverlayEdge *pnl_dock_overlay_get_edge (PnlDockOverlay *self,
+ GtkPositionType position);
+GtkAdjustment *pnl_dock_overlay_get_edge_adjustment (PnlDockOverlay *self,
+ GtkPositionType position);
G_END_DECLS
#endif /* PNL_DOCK_OVERLAY_H */
diff --git a/libide/editor/ide-editor-frame-actions.c b/libide/editor/ide-editor-frame-actions.c
index 5c0cf42..fd2a166 100644
--- a/libide/editor/ide-editor-frame-actions.c
+++ b/libide/editor/ide-editor-frame-actions.c
@@ -20,6 +20,7 @@
#include "ide-editor-frame-actions.h"
#include "ide-editor-frame-private.h"
+#include "editor/ide-editor-perspective.h"
#include "ide-editor-spell-widget.h"
#include "util/ide-gtk.h"
@@ -29,36 +30,15 @@ ide_editor_frame_actions_spellcheck (GSimpleAction *action,
gpointer user_data)
{
IdeEditorFrame *self = user_data;
- GtkWidget *spell_widget;
- GtkWidget *entry;
+ IdeWorkbench *workbench;
+ IdePerspective *editor;
g_assert (IDE_IS_EDITOR_FRAME (self));
if (IDE_IS_SOURCE_VIEW (self->source_view) &&
- !self->spellchecker_opened)
- {
- g_assert (gtk_bin_get_child (GTK_BIN (self->spell_revealer)) == NULL);
-
- self->spellchecker_opened = TRUE;
-
- spell_widget = ide_editor_spell_widget_new (self->source_view);
- gtk_widget_show (spell_widget);
- gtk_container_add (GTK_CONTAINER (self->spell_revealer), spell_widget);
-
- gtk_revealer_set_reveal_child (self->spell_revealer, TRUE);
- entry = ide_editor_spell_widget_get_entry (IDE_EDITOR_SPELL_WIDGET (spell_widget));
-
- /* We need the widget to be realized before the grab to avoid:
- * gtk_widget_event: assertion 'WIDGET_REALIZED_FOR_EVENT (widget, event)' failed
- */
- gtk_widget_realize (entry);
- gtk_widget_grab_focus (entry);
- g_signal_connect_object (spell_widget,
- "unmap",
- G_CALLBACK (ide_editor_frame_spell_widget_unmapped_cb),
- self,
- G_CONNECT_SWAPPED | G_CONNECT_AFTER);
- }
+ NULL != (workbench = ide_widget_get_workbench (GTK_WIDGET (self))) &&
+ NULL != (editor = ide_workbench_get_perspective_by_name (workbench, "editor")))
+ ide_editor_perspective_show_spellchecker (IDE_EDITOR_PERSPECTIVE (editor), self->source_view);
}
static void
@@ -520,6 +500,6 @@ ide_editor_frame_actions_init (IdeEditorFrame *self)
g_action_map_add_action_entries (G_ACTION_MAP (group), IdeEditorFrameSpellActions,
G_N_ELEMENTS (IdeEditorFrameSpellActions), self);
- gtk_widget_insert_action_group (GTK_WIDGET (self->spell_revealer), "spell-entry", G_ACTION_GROUP (group));
+ //gtk_widget_insert_action_group (GTK_WIDGET (self->spell_revealer), "spell-entry", G_ACTION_GROUP
(group));
g_object_unref (group);
}
diff --git a/libide/editor/ide-editor-frame-private.h b/libide/editor/ide-editor-frame-private.h
index 2b07937..4f47962 100644
--- a/libide/editor/ide-editor-frame-private.h
+++ b/libide/editor/ide-editor-frame-private.h
@@ -43,7 +43,6 @@ struct _IdeEditorFrame
GtkLabel *overwrite_label;
GtkScrolledWindow *scrolled_window;
GtkRevealer *search_revealer;
- GtkRevealer *spell_revealer;
GtkFrame *search_frame;
GdTaggedEntry *search_entry;
GtkSearchEntry *replace_entry;
@@ -61,12 +60,8 @@ struct _IdeEditorFrame
guint pending_replace_confirm;
guint auto_hide_map : 1;
guint show_ruler : 1;
- guint spellchecker_opened : 1;
};
-void ide_editor_frame_spell_widget_unmapped_cb (IdeEditorFrame *self,
- IdeEditorSpellWidget *spell_widget);
-
G_END_DECLS
#endif /* IDE_EDITOR_FRAME_PRIVATE_H */
diff --git a/libide/editor/ide-editor-frame.c b/libide/editor/ide-editor-frame.c
index 75b288c..b76a7ad 100644
--- a/libide/editor/ide-editor-frame.c
+++ b/libide/editor/ide-editor-frame.c
@@ -29,7 +29,6 @@
#include "editor/ide-editor-frame.h"
#include "editor/ide-editor-map-bin.h"
#include "editor/ide-editor-perspective.h"
-#include "editor/ide-editor-spell-widget.h"
#include "history/ide-back-forward-list.h"
#include "util/ide-dnd.h"
#include "util/ide-gtk.h"
@@ -57,22 +56,6 @@ enum {
static GParamSpec *properties [LAST_PROP];
-void
-ide_editor_frame_spell_widget_unmapped_cb (IdeEditorFrame *self,
- IdeEditorSpellWidget *spell_widget)
-{
- GtkWidget *child;
-
- g_assert (IDE_IS_EDITOR_FRAME (self));
- g_assert (IDE_IS_EDITOR_SPELL_WIDGET (spell_widget));
-
- if (NULL != (child = gtk_bin_get_child (GTK_BIN (self->spell_revealer))))
- {
- gtk_container_remove (GTK_CONTAINER (self->spell_revealer), child);
- self->spellchecker_opened = FALSE;
- }
-}
-
static void
update_replace_actions_sensitivity (IdeEditorFrame *self)
{
@@ -862,7 +845,6 @@ ide_editor_frame__source_view_focus_in_event (IdeEditorFrame *self,
g_assert (IDE_IS_SOURCE_VIEW (source_view));
gtk_revealer_set_reveal_child (self->search_revealer, FALSE);
- gtk_revealer_set_reveal_child (self->spell_revealer, FALSE);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (source_view));
@@ -1219,7 +1201,6 @@ ide_editor_frame_class_init (IdeEditorFrameClass *klass)
gtk_widget_class_bind_template_child (widget_class, IdeEditorFrame, replace_all_button);
gtk_widget_class_bind_template_child (widget_class, IdeEditorFrame, search_options);
gtk_widget_class_bind_template_child (widget_class, IdeEditorFrame, search_revealer);
- gtk_widget_class_bind_template_child (widget_class, IdeEditorFrame, spell_revealer);
gtk_widget_class_bind_template_child (widget_class, IdeEditorFrame, source_map_container);
gtk_widget_class_bind_template_child (widget_class, IdeEditorFrame, source_overlay);
gtk_widget_class_bind_template_child (widget_class, IdeEditorFrame, source_view);
diff --git a/libide/editor/ide-editor-perspective.c b/libide/editor/ide-editor-perspective.c
index b7a53b9..0b418a3 100644
--- a/libide/editor/ide-editor-perspective.c
+++ b/libide/editor/ide-editor-perspective.c
@@ -27,20 +27,28 @@
#include "buffers/ide-buffer-manager.h"
#include "buffers/ide-buffer.h"
#include "editor/ide-editor-perspective.h"
+#include "editor/ide-editor-spell-widget.h"
#include "editor/ide-editor-view.h"
#include "util/ide-gtk.h"
#include "workbench/ide-layout-grid.h"
+#include "workbench/ide-layout-pane.h"
#include "workbench/ide-workbench.h"
#include "workbench/ide-workbench-header-bar.h"
struct _IdeEditorPerspective
{
- IdeLayout parent_instance;
+ PnlDockOverlay parent_instance;
+ GtkWidget *active_view;
+ IdeLayout *layout;
IdeLayoutGrid *grid;
GSimpleActionGroup *actions;
EggSignalGroup *buffer_manager_signals;
+
+ GtkAdjustment *spellchecker_edge_adj;
+
+ guint spellchecker_opened : 1;
};
typedef struct
@@ -56,10 +64,18 @@ static void ide_editor_perspective_focus_location_full (IdeEditorPerspective
IdeSourceLocation *location,
gboolean open_if_not_found);
-G_DEFINE_TYPE_EXTENDED (IdeEditorPerspective, ide_editor_perspective, IDE_TYPE_LAYOUT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeEditorPerspective, ide_editor_perspective, PNL_TYPE_DOCK_OVERLAY, 0,
G_IMPLEMENT_INTERFACE (IDE_TYPE_PERSPECTIVE, ide_perspective_iface_init))
enum {
+ PROP_0,
+ PROP_ACTIVE_VIEW,
+ LAST_PROP
+};
+
+static GParamSpec *properties [LAST_PROP];
+
+enum {
VIEW_ADDED,
VIEW_REMOVED,
LAST_SIGNAL
@@ -79,19 +95,19 @@ ide_editor_perspective_restore_panel_state (IdeEditorPerspective *self)
settings = g_settings_new ("org.gnome.builder.workbench");
- pane = pnl_dock_bin_get_left_edge (PNL_DOCK_BIN (self));
+ pane = pnl_dock_bin_get_left_edge (PNL_DOCK_BIN (self->layout));
reveal = g_settings_get_boolean (settings, "left-visible");
position = g_settings_get_int (settings, "left-position");
pnl_dock_revealer_set_reveal_child (PNL_DOCK_REVEALER (pane), reveal);
pnl_dock_revealer_set_position (PNL_DOCK_REVEALER (pane), position);
- pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (self));
+ pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (self->layout));
reveal = g_settings_get_boolean (settings, "right-visible");
position = g_settings_get_int (settings, "right-position");
pnl_dock_revealer_set_reveal_child (PNL_DOCK_REVEALER (pane), reveal);
pnl_dock_revealer_set_position (PNL_DOCK_REVEALER (pane), position);
- pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (self));
+ pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (self->layout));
reveal = g_settings_get_boolean (settings, "bottom-visible");
position = g_settings_get_int (settings, "bottom-position");
pnl_dock_revealer_set_reveal_child (PNL_DOCK_REVEALER (pane), reveal);
@@ -110,19 +126,19 @@ ide_editor_perspective_save_panel_state (IdeEditorPerspective *self)
settings = g_settings_new ("org.gnome.builder.workbench");
- pane = pnl_dock_bin_get_left_edge (PNL_DOCK_BIN (self));
+ pane = pnl_dock_bin_get_left_edge (PNL_DOCK_BIN (self->layout));
position = pnl_dock_revealer_get_position (PNL_DOCK_REVEALER (pane));
reveal = pnl_dock_revealer_get_reveal_child (PNL_DOCK_REVEALER (pane));
g_settings_set_boolean (settings, "left-visible", reveal);
g_settings_set_int (settings, "left-position", position);
- pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (self));
+ pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (self->layout));
position = pnl_dock_revealer_get_position (PNL_DOCK_REVEALER (pane));
reveal = pnl_dock_revealer_get_reveal_child (PNL_DOCK_REVEALER (pane));
g_settings_set_boolean (settings, "right-visible", reveal);
g_settings_set_int (settings, "right-position", position);
- pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (self));
+ pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (self->layout));
position = pnl_dock_revealer_get_position (PNL_DOCK_REVEALER (pane));
reveal = pnl_dock_revealer_get_reveal_child (PNL_DOCK_REVEALER (pane));
g_settings_set_boolean (settings, "bottom-visible", reveal);
@@ -358,20 +374,50 @@ ide_editor_perspective_grid_empty (IdeEditorPerspective *self,
}
static void
+ide_editor_perspective_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ IdeEditorPerspective *self = IDE_EDITOR_PERSPECTIVE (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTIVE_VIEW:
+ g_value_set_object (value, ide_editor_perspective_get_active_view (self));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ }
+}
+
+static void
ide_editor_perspective_class_init (IdeEditorPerspectiveClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
+ object_class->get_property = ide_editor_perspective_get_property;
object_class->finalize = ide_editor_perspective_finalize;
container_class->add = ide_editor_perspective_add;
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/builder/ui/ide-editor-perspective.ui");
+ gtk_widget_class_bind_template_child (widget_class, IdeEditorPerspective, layout);
gtk_widget_class_bind_template_child (widget_class, IdeEditorPerspective, actions);
gtk_widget_class_bind_template_child (widget_class, IdeEditorPerspective, grid);
+ properties [PROP_ACTIVE_VIEW] =
+ g_param_spec_object ("active-view",
+ "Active View",
+ "Active View",
+ GTK_TYPE_WIDGET,
+ (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_properties (object_class, LAST_PROP, properties);
+
signals[VIEW_ADDED] =
g_signal_new ("view-added",
G_TYPE_FROM_CLASS (klass),
@@ -394,6 +440,18 @@ ide_editor_perspective_class_init (IdeEditorPerspectiveClass *klass)
}
static void
+ide_editor_perspective_active_view_notify_cb (IdeEditorPerspective *self,
+ GParamSpec *pspec,
+ IdeLayout *layout)
+{
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (self));
+ g_assert (IDE_IS_LAYOUT (layout));
+
+ self->active_view = ide_layout_get_active_view (layout);
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ACTIVE_VIEW]);
+}
+
+static void
ide_editor_perspective_init (IdeEditorPerspective *self)
{
static const gchar *proxy_actions[] = {
@@ -434,7 +492,7 @@ ide_editor_perspective_init (IdeEditorPerspective *self)
g_action_map_add_action_entries (G_ACTION_MAP (self->actions), entries,
G_N_ELEMENTS (entries), self);
- actions = gtk_widget_get_action_group (GTK_WIDGET (self), "dockbin");
+ actions = gtk_widget_get_action_group (GTK_WIDGET (self->layout), "dockbin");
for (i = 0; proxy_actions[i]; i++)
{
@@ -448,6 +506,13 @@ ide_editor_perspective_init (IdeEditorPerspective *self)
ide_widget_set_context_handler (GTK_WIDGET (self),
ide_editor_perspective_context_set);
+
+ g_signal_connect_swapped (self->layout,
+ "notify::active-view",
+ G_CALLBACK (ide_editor_perspective_active_view_notify_cb),
+ self);
+
+ ide_editor_perspective_active_view_notify_cb (self, NULL, self->layout);
}
static gchar *
@@ -645,3 +710,186 @@ ide_editor_perspective_focus_location (IdeEditorPerspective *self,
{
ide_editor_perspective_focus_location_full (self, location, TRUE);
}
+
+/**
+ * ide_editor_perspective_get_layout:
+ * @self: A #IdeEditorPerspective
+ *
+ * Gets the #IdeLayout widget for the editor perspective.
+ *
+ * Returns: (transfer none) (nullable): A #IdeLayout or %NULL.
+ */
+IdeLayout *
+ide_editor_perspective_get_layout (IdeEditorPerspective *self)
+{
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return self->layout;
+}
+
+/**
+ * ide_editor_perspective_get_active_view:
+ *
+ * Returns: (transfer none) (nullable): An #IdeLayoutView or %NULL.
+ */
+GtkWidget *
+ide_editor_perspective_get_active_view (IdeEditorPerspective *self)
+{
+
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return self->active_view;
+}
+
+/**
+ * ide_editor_perspective_get_center_widget:
+ * @self: A #IdeEditorPerspective
+ *
+ * Gets the center widget for the editor perspective.
+ *
+ * Returns: (transfer none) (nullable): A #GtkWidget or %NULL.
+ */
+GtkWidget *
+ide_editor_perspective_get_center_widget (IdeEditorPerspective *self)
+{
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return pnl_dock_bin_get_center_widget (PNL_DOCK_BIN (self->layout));
+}
+
+/**
+ * ide_editor_perspective_get_top_edge:
+ * Returns: (transfer none): A #GtkWidget
+ */
+GtkWidget *
+ide_editor_perspective_get_top_edge (IdeEditorPerspective *self)
+{
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return pnl_dock_bin_get_top_edge (PNL_DOCK_BIN (self->layout));
+}
+
+/**
+ * ide_editor_perspective_get_left_edge:
+ * Returns: (transfer none): A #GtkWidget
+ */
+GtkWidget *
+ide_editor_perspective_get_left_edge (IdeEditorPerspective *self)
+{
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return pnl_dock_bin_get_left_edge (PNL_DOCK_BIN (self->layout));
+}
+
+/**
+ * ide_editor_perspective_get_bottom_edge:
+ * Returns: (transfer none): A #GtkWidget
+ */
+GtkWidget *
+ide_editor_perspective_get_bottom_edge (IdeEditorPerspective *self)
+{
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (self->layout));
+}
+
+/**
+ * ide_editor_perspective_get_right_edge:
+ * Returns: (transfer none): A #GtkWidget
+ */
+GtkWidget *
+ide_editor_perspective_get_right_edge (IdeEditorPerspective *self)
+{
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (self->layout));
+}
+
+/**
+ * ide_editor_perspective_get_overlay_edge:
+ * self: an #IdeEditorPerspective.
+ * position: a #GtkPositionType.
+ *
+ * Returns: (transfer none): A #PnlDockOverlayEdge
+ */
+PnlDockOverlayEdge *
+ide_editor_perspective_get_overlay_edge (IdeEditorPerspective *self,
+ GtkPositionType position)
+{
+ g_return_val_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self), NULL);
+
+ return pnl_dock_overlay_get_edge (PNL_DOCK_OVERLAY (self), position);
+}
+
+static void
+ide_editor_perspective_edge_adj_changed_cb (IdeEditorPerspective *self,
+ GtkAdjustment *edge_adj)
+{
+ PnlDockOverlayEdge *edge;
+ GtkWidget *child;
+ gdouble value;
+
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (self));
+
+ value = gtk_adjustment_get_value (edge_adj);
+ if (value == 1.0)
+ {
+ edge = ide_editor_perspective_get_overlay_edge (self, GTK_POS_RIGHT);
+ child = gtk_bin_get_child (GTK_BIN (edge));
+ gtk_container_remove (GTK_CONTAINER (edge), child);
+ self->spellchecker_opened = FALSE;
+
+ g_signal_handlers_disconnect_by_func (self->spellchecker_edge_adj,
+ ide_editor_perspective_edge_adj_changed_cb,
+ self);
+ self->spellchecker_edge_adj = NULL;
+ }
+}
+
+void
+ide_editor_perspective_show_spellchecker (IdeEditorPerspective *self,
+ IdeSourceView *source_view)
+{
+ GtkWidget *box;
+ GtkWidget *scroll_window;
+ GtkWidget *spell_widget;
+ PnlDockOverlayEdge *edge;
+
+ g_return_if_fail (IDE_IS_EDITOR_PERSPECTIVE (self));
+
+ if (!self->spellchecker_opened)
+ {
+ self->spellchecker_opened = TRUE;
+
+ box = g_object_new (GTK_TYPE_BOX,
+ "visible", TRUE,
+ "expand", TRUE,
+ NULL);
+ scroll_window = g_object_new (GTK_TYPE_SCROLLED_WINDOW,
+ "visible", TRUE,
+ "expand", TRUE,
+ "width-request", 500,
+ "propagate-natural-width", TRUE,
+ NULL);
+ spell_widget = ide_editor_spell_widget_new (source_view);
+ gtk_box_pack_start (GTK_BOX (box), scroll_window, TRUE, TRUE, 0);
+ gtk_container_add (GTK_CONTAINER (scroll_window), spell_widget);
+ gtk_widget_show_all (box);
+
+ pnl_overlay_add_child (PNL_DOCK_OVERLAY (self), box, "right");
+ edge = ide_editor_perspective_get_overlay_edge (self, GTK_POS_RIGHT);
+ self->spellchecker_edge_adj = pnl_dock_overlay_get_edge_adjustment (PNL_DOCK_OVERLAY (self),
+ GTK_POS_RIGHT);
+ gtk_widget_set_child_visible (GTK_WIDGET (edge), TRUE);
+ //pnl_dock_overlay_edge_set_position (PNL_DOCK_OVERLAY_EDGE (edge), 100);
+
+ gtk_container_child_set (GTK_CONTAINER (self), GTK_WIDGET (edge),
+ "reveal", TRUE,
+ NULL);
+
+ g_signal_connect_swapped (self->spellchecker_edge_adj,
+ "value-changed",
+ G_CALLBACK (ide_editor_perspective_edge_adj_changed_cb),
+ self);
+ }
+}
diff --git a/libide/editor/ide-editor-perspective.h b/libide/editor/ide-editor-perspective.h
index 751327f..ed8e7f4 100644
--- a/libide/editor/ide-editor-perspective.h
+++ b/libide/editor/ide-editor-perspective.h
@@ -20,8 +20,10 @@
#define IDE_EDITOR_PERSPECTIVE_H
#include <gtk/gtk.h>
+#include <pnl.h>
#include "diagnostics/ide-source-location.h"
+#include "sourceview/ide-source-view.h"
#include "workbench/ide-layout.h"
#include "workbench/ide-perspective.h"
@@ -29,13 +31,26 @@ G_BEGIN_DECLS
#define IDE_TYPE_EDITOR_PERSPECTIVE (ide_editor_perspective_get_type())
-G_DECLARE_FINAL_TYPE (IdeEditorPerspective, ide_editor_perspective, IDE, EDITOR_PERSPECTIVE, IdeLayout)
+G_DECLARE_FINAL_TYPE (IdeEditorPerspective, ide_editor_perspective, IDE, EDITOR_PERSPECTIVE, PnlDockOverlay)
-void ide_editor_perspective_focus_location (IdeEditorPerspective *self,
- IdeSourceLocation *location);
-void ide_editor_perspective_focus_buffer_in_current_stack (IdeEditorPerspective *self,
- IdeBuffer *buffer);
+void ide_editor_perspective_focus_location (IdeEditorPerspective *self,
+ IdeSourceLocation
*location);
+void ide_editor_perspective_focus_buffer_in_current_stack (IdeEditorPerspective *self,
+ IdeBuffer *buffer);
+GtkWidget *ide_editor_perspective_get_active_view (IdeEditorPerspective *self);
+IdeLayout *ide_editor_perspective_get_layout (IdeEditorPerspective *self);
+GtkWidget *ide_editor_perspective_get_center_widget (IdeEditorPerspective *self);
+GtkWidget *ide_editor_perspective_get_top_edge (IdeEditorPerspective *self);
+GtkWidget *ide_editor_perspective_get_left_edge (IdeEditorPerspective *self);
+GtkWidget *ide_editor_perspective_get_bottom_edge (IdeEditorPerspective *self);
+GtkWidget *ide_editor_perspective_get_right_edge (IdeEditorPerspective *self);
+
+PnlDockOverlayEdge *ide_editor_perspective_get_overlay_edge (IdeEditorPerspective *self,
+ GtkPositionType
position);
+
+void ide_editor_perspective_show_spellchecker (IdeEditorPerspective *self,
+ IdeSourceView
*source_view);
G_END_DECLS
#endif /* IDE_EDITOR_PERSPECTIVE_H */
diff --git a/libide/editor/ide-editor-perspective.ui b/libide/editor/ide-editor-perspective.ui
index e506ae5..cad54cf 100644
--- a/libide/editor/ide-editor-perspective.ui
+++ b/libide/editor/ide-editor-perspective.ui
@@ -1,62 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.18 -->
- <template class="IdeEditorPerspective" parent="IdeLayout">
- <child type="center">
- <object class="GtkStack" id="content_stack">
+ <template class="IdeEditorPerspective" parent="PnlDockOverlay">
+ <child>
+ <object class="IdeLayout" id="layout">
<property name="visible">true</property>
- <child>
- <object class="GtkBox">
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
+ <child type="center">
+ <object class="GtkStack" id="content_stack">
<property name="visible">true</property>
<child>
- <object class="GtkImage">
- <property name="icon-name">text-editor-symbolic</property>
- <property name="pixel-size">128</property>
+ <object class="GtkBox">
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
<property name="visible">true</property>
- <style>
- <class name="dim-label"/>
- </style>
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">text-editor-symbolic</property>
+ <property name="pixel-size">128</property>
+ <property name="visible">true</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">No open files</property>
+ <property name="visible">true</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <attributes>
+ <attribute name="scale" value="2.0"/>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Try opening a file by typing in the search box
at the top</property>
+ <property name="wrap">true</property>
+ <property name="visible">true</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
</object>
+ <packing>
+ <property name="name">empty_state</property>
+ </packing>
</child>
<child>
- <object class="GtkLabel">
- <property name="label" translatable="yes">No open files</property>
+ <object class="IdeLayoutGrid" id="grid">
<property name="visible">true</property>
- <style>
- <class name="dim-label"/>
- </style>
- <attributes>
- <attribute name="scale" value="2.0"/>
- <attribute name="weight" value="bold"/>
- </attributes>
</object>
+ <packing>
+ <property name="name">grid</property>
+ </packing>
</child>
- <child>
- <object class="GtkLabel">
- <property name="label" translatable="yes">Try opening a file by typing in the search box at
the top</property>
- <property name="wrap">true</property>
- <property name="visible">true</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- </child>
- </object>
- <packing>
- <property name="name">empty_state</property>
- </packing>
- </child>
- <child>
- <object class="IdeLayoutGrid" id="grid">
- <property name="visible">true</property>
</object>
- <packing>
- <property name="name">grid</property>
- </packing>
</child>
</object>
</child>
diff --git a/plugins/build-tools/gbp-build-workbench-addin.c b/plugins/build-tools/gbp-build-workbench-addin.c
index 80fbe4b..8dae6b4 100644
--- a/plugins/build-tools/gbp-build-workbench-addin.c
+++ b/plugins/build-tools/gbp-build-workbench-addin.c
@@ -145,13 +145,13 @@ gbp_build_workbench_addin_load (IdeWorkbenchAddin *addin,
configuration = ide_configuration_manager_get_current (configuration_manager);
editor = ide_workbench_get_perspective_by_name (workbench, "editor");
- pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (editor));
+ pane = ide_editor_perspective_get_right_edge (IDE_EDITOR_PERSPECTIVE (editor));
self->panel = g_object_new (GBP_TYPE_BUILD_PANEL,
"visible", TRUE,
NULL);
gtk_container_add (GTK_CONTAINER (pane), GTK_WIDGET (self->panel));
- pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (editor));
+ pane = ide_editor_perspective_get_bottom_edge (IDE_EDITOR_PERSPECTIVE (editor));
self->build_log_panel = g_object_new (GBP_TYPE_BUILD_LOG_PANEL, NULL);
gtk_container_add (GTK_CONTAINER (pane), GTK_WIDGET (self->build_log_panel));
diff --git a/plugins/color-picker/gb-color-picker-workbench-addin.c
b/plugins/color-picker/gb-color-picker-workbench-addin.c
index a9c4644..e624098 100644
--- a/plugins/color-picker/gb-color-picker-workbench-addin.c
+++ b/plugins/color-picker/gb-color-picker-workbench-addin.c
@@ -190,7 +190,7 @@ init_dock (GbColorPickerWorkbenchAddin *self)
init_palettes (self);
- panel = (pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (self->editor)));
+ panel = ide_editor_perspective_get_right_edge (IDE_EDITOR_PERSPECTIVE (self->editor));
gtk_container_add (GTK_CONTAINER (panel), GTK_WIDGET (self->dock));
gtk_container_add (GTK_CONTAINER (self->dock), self->color_panel);
@@ -443,7 +443,7 @@ active_view_changed_cb (GbColorPickerWorkbenchAddin *self,
g_assert (GB_IS_COLOR_PICKER_WORKBENCH_ADDIN (self));
- self->active_view = ide_layout_get_active_view (IDE_LAYOUT (self->editor));
+ self->active_view = ide_editor_perspective_get_active_view (self->editor);
if (self->active_view != NULL && IDE_IS_EDITOR_VIEW (self->active_view))
{
state = get_menu_action_state (self, IDE_EDITOR_VIEW (self->active_view));
@@ -460,15 +460,17 @@ gb_color_picker_workbench_addin_load (IdeWorkbenchAddin *addin,
IdeWorkbench *workbench)
{
GbColorPickerWorkbenchAddin *self = (GbColorPickerWorkbenchAddin *)addin;
+ IdeLayout *layout;
g_assert (GB_IS_COLOR_PICKER_WORKBENCH_ADDIN (addin));
g_assert (IDE_IS_WORKBENCH (workbench));
ide_set_weak_pointer (&self->workbench, workbench);
self->editor = IDE_EDITOR_PERSPECTIVE (ide_workbench_get_perspective_by_name (workbench, "editor"));
+ layout = ide_editor_perspective_get_layout (self->editor);
ide_perspective_views_foreach (IDE_PERSPECTIVE (self->editor), (GtkCallback)setup_view_cb, self);
- self->active_view = ide_layout_get_active_view (IDE_LAYOUT (self->editor));
+ self->active_view = ide_editor_perspective_get_active_view (self->editor);
g_signal_connect_object (self->editor,
"view-added",
@@ -480,7 +482,7 @@ gb_color_picker_workbench_addin_load (IdeWorkbenchAddin *addin,
G_CALLBACK (view_removed_cb),
self,
G_CONNECT_SWAPPED);
- g_signal_connect_object (IDE_LAYOUT (self->editor),
+ g_signal_connect_object (layout,
"notify::active-view",
G_CALLBACK (active_view_changed_cb),
self,
diff --git a/plugins/devhelp/gbp-devhelp-panel.c b/plugins/devhelp/gbp-devhelp-panel.c
index 7c33707..3340797 100644
--- a/plugins/devhelp/gbp-devhelp-panel.c
+++ b/plugins/devhelp/gbp-devhelp-panel.c
@@ -76,7 +76,7 @@ gbp_devhelp_panel_link_selected (GbpDevhelpPanel *self,
g_assert (IDE_IS_WORKBENCH (workbench));
perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
- g_assert (IDE_IS_LAYOUT (perspective));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (perspective));
ide_perspective_views_foreach (perspective, gbp_devhelp_panel_find_view, &view);
diff --git a/plugins/devhelp/gbp-devhelp-workbench-addin.c b/plugins/devhelp/gbp-devhelp-workbench-addin.c
index f21ffc8..0cf8ff1 100644
--- a/plugins/devhelp/gbp-devhelp-workbench-addin.c
+++ b/plugins/devhelp/gbp-devhelp-workbench-addin.c
@@ -77,9 +77,9 @@ gbp_devhelp_workbench_addin_load (IdeWorkbenchAddin *addin,
dh_book_manager_populate (self->books);
perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
- g_assert (IDE_IS_LAYOUT (perspective));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (perspective));
- pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (perspective));
+ pane = ide_editor_perspective_get_right_edge (IDE_EDITOR_PERSPECTIVE (perspective));
g_assert (IDE_IS_LAYOUT_PANE (pane));
self->panel = g_object_new (GBP_TYPE_DEVHELP_PANEL,
@@ -112,9 +112,9 @@ gbp_devhelp_workbench_addin_unload (IdeWorkbenchAddin *addin,
g_clear_object (&self->books);
perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
- g_assert (IDE_IS_LAYOUT (perspective));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (perspective));
- pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (perspective));
+ pane = ide_editor_perspective_get_right_edge (IDE_EDITOR_PERSPECTIVE (perspective));
g_assert (IDE_IS_LAYOUT_PANE (pane));
gtk_widget_destroy (GTK_WIDGET (self->panel));
diff --git a/plugins/project-tree/gb-project-tree-addin.c b/plugins/project-tree/gb-project-tree-addin.c
index 87a9177..d54189e 100644
--- a/plugins/project-tree/gb-project-tree-addin.c
+++ b/plugins/project-tree/gb-project-tree-addin.c
@@ -75,10 +75,10 @@ gb_project_tree_addin_load (IdeWorkbenchAddin *addin,
editor = ide_workbench_get_perspective_by_name (workbench, "editor");
g_assert (editor != NULL);
- pane = pnl_dock_bin_get_left_edge (PNL_DOCK_BIN (editor));
+ pane = ide_editor_perspective_get_left_edge (IDE_EDITOR_PERSPECTIVE (editor));
g_assert (pane != NULL);
- content = pnl_dock_bin_get_center_widget (PNL_DOCK_BIN (editor));
+ content = ide_editor_perspective_get_center_widget (IDE_EDITOR_PERSPECTIVE (editor));
g_assert (content != NULL);
grid = ide_widget_find_child_typed (content, IDE_TYPE_LAYOUT_GRID);
diff --git a/plugins/symbol-tree/symbol-tree-panel.c b/plugins/symbol-tree/symbol-tree-panel.c
index 2f03e13..b64500b 100644
--- a/plugins/symbol-tree/symbol-tree-panel.c
+++ b/plugins/symbol-tree/symbol-tree-panel.c
@@ -152,7 +152,7 @@ refresh_tree (SymbolTreePanel *self)
perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
g_assert (perspective != NULL);
- if ((active_view = ide_layout_get_active_view (IDE_LAYOUT (perspective))) &&
+ if ((active_view = ide_editor_perspective_get_active_view (IDE_EDITOR_PERSPECTIVE (perspective))) &&
IDE_IS_EDITOR_VIEW (active_view))
{
document = ide_editor_view_get_document (IDE_EDITOR_VIEW (active_view));
diff --git a/plugins/symbol-tree/symbol-tree.c b/plugins/symbol-tree/symbol-tree.c
index 785521a..ec22aae 100644
--- a/plugins/symbol-tree/symbol-tree.c
+++ b/plugins/symbol-tree/symbol-tree.c
@@ -59,6 +59,7 @@ symbol_tree_load (IdeWorkbenchAddin *addin,
{
SymbolTree *self = (SymbolTree *)addin;
IdePerspective *perspective;
+ IdeLayout *layout;
GtkWidget *right_pane;
g_assert (SYMBOL_IS_TREE (self));
@@ -66,15 +67,16 @@ symbol_tree_load (IdeWorkbenchAddin *addin,
perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
g_assert (perspective != NULL);
- g_assert (IDE_IS_LAYOUT (perspective));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (perspective));
- g_signal_connect_object (perspective,
+ layout = ide_editor_perspective_get_layout (IDE_EDITOR_PERSPECTIVE (perspective));
+ g_signal_connect_object (layout,
"notify::active-view",
G_CALLBACK (notify_active_view_cb),
self,
G_CONNECT_SWAPPED);
- right_pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (perspective));
+ right_pane = ide_editor_perspective_get_right_edge (IDE_EDITOR_PERSPECTIVE (perspective));
g_assert (right_pane != NULL);
self->panel = g_object_new (SYMBOL_TYPE_TREE_PANEL,
@@ -102,9 +104,9 @@ symbol_tree_unload (IdeWorkbenchAddin *addin,
g_assert (IDE_IS_WORKBENCH (workbench));
perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
- g_assert (IDE_IS_LAYOUT (perspective));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (perspective));
- pane = pnl_dock_bin_get_right_edge (PNL_DOCK_BIN (perspective));
+ pane = ide_editor_perspective_get_right_edge (IDE_EDITOR_PERSPECTIVE (perspective));
g_assert (IDE_IS_LAYOUT_PANE (pane));
gtk_widget_destroy (GTK_WIDGET (self->panel));
diff --git a/plugins/sysmon/gb-sysmon-addin.c b/plugins/sysmon/gb-sysmon-addin.c
index b41710e..b436d4b 100644
--- a/plugins/sysmon/gb-sysmon-addin.c
+++ b/plugins/sysmon/gb-sysmon-addin.c
@@ -51,9 +51,9 @@ gb_sysmon_addin_load (IdeWorkbenchAddin *addin,
editor = ide_workbench_get_perspective_by_name (workbench, "editor");
g_assert (editor != NULL);
- g_assert (IDE_IS_LAYOUT (editor));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (editor));
- pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (editor));
+ pane = ide_editor_perspective_get_bottom_edge (IDE_EDITOR_PERSPECTIVE (editor));
panel = g_object_new (GB_TYPE_SYSMON_PANEL,
"expand", TRUE,
"visible", TRUE,
diff --git a/plugins/terminal/gb-terminal-workbench-addin.c b/plugins/terminal/gb-terminal-workbench-addin.c
index c970857..efcb4c3 100644
--- a/plugins/terminal/gb-terminal-workbench-addin.c
+++ b/plugins/terminal/gb-terminal-workbench-addin.c
@@ -123,9 +123,9 @@ on_run_manager_run (GbTerminalWorkbenchAddin *self,
ide_set_weak_pointer (&self->run_panel, panel);
perspective = ide_workbench_get_perspective_by_name (self->workbench, "editor");
- g_assert (IDE_IS_LAYOUT (perspective));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (perspective));
- bottom_pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (perspective));
+ bottom_pane = ide_editor_perspective_get_bottom_edge (IDE_EDITOR_PERSPECTIVE (perspective));
gtk_container_add (GTK_CONTAINER (bottom_pane), GTK_WIDGET (self->run_panel));
}
else
@@ -196,9 +196,9 @@ gb_terminal_workbench_addin_load (IdeWorkbenchAddin *addin,
}
perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
- g_assert (IDE_IS_LAYOUT (perspective));
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (perspective));
- bottom_pane = pnl_dock_bin_get_bottom_edge (PNL_DOCK_BIN (perspective));
+ bottom_pane = ide_editor_perspective_get_bottom_edge (IDE_EDITOR_PERSPECTIVE (perspective));
gtk_container_add (GTK_CONTAINER (bottom_pane), GTK_WIDGET (self->panel_dock_widget));
run_manager = ide_context_get_run_manager (context);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]