mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-05-16 13:40:18 +00:00
Compare commits
7 Commits
4ed4eaf8e8
...
fix-appima
| Author | SHA1 | Date | |
|---|---|---|---|
| 65de412b5b | |||
| e21e68a17b | |||
|
|
0e5f702651 | ||
| 4f1b0fc838 | |||
|
|
dcb35fb80f | ||
| b1768854c3 | |||
| 18eff80a30 |
36
.github/workflows/appimage-build.yml
vendored
36
.github/workflows/appimage-build.yml
vendored
@@ -86,15 +86,17 @@ jobs:
|
|||||||
cp -a /usr/lib/x86_64-linux-gnu/python3/dist-packages AppDir/usr/lib/x86_64-linux-gnu/python3/
|
cp -a /usr/lib/x86_64-linux-gnu/python3/dist-packages AppDir/usr/lib/x86_64-linux-gnu/python3/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "/usr/lib/x86_64-linux-gnu/perl" ]; then
|
for perl_dir in /usr/lib/*/perl-base; do
|
||||||
install -d AppDir/usr/lib/x86_64-linux-gnu
|
if [ -d "$perl_dir" ]; then
|
||||||
cp -a /usr/lib/x86_64-linux-gnu/perl AppDir/usr/lib/x86_64-linux-gnu/
|
install -d "AppDir$(dirname "$perl_dir")"
|
||||||
fi
|
cp -a "$perl_dir" "AppDir$perl_dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if [ -d "/usr/share/perl" ]; then
|
perl -MConfig -e 'print join "\n", grep { defined && length && -d } @Config{qw(privlibexp archlibexp vendorlibexp vendorarchexp sitelibexp sitearchexp)}' | while IFS= read -r perl_dir; do
|
||||||
install -d AppDir/usr/share
|
install -d "AppDir$(dirname "$perl_dir")"
|
||||||
cp -a /usr/share/perl AppDir/usr/share/
|
cp -aL "$perl_dir" "AppDir$perl_dir"
|
||||||
fi
|
done
|
||||||
|
|
||||||
if [ -d "/usr/share/perl5" ]; then
|
if [ -d "/usr/share/perl5" ]; then
|
||||||
install -d AppDir/usr/share
|
install -d AppDir/usr/share
|
||||||
@@ -211,6 +213,24 @@ jobs:
|
|||||||
|
|
||||||
unset GTK_MODULES
|
unset GTK_MODULES
|
||||||
|
|
||||||
|
perl5lib_entries=""
|
||||||
|
for perl_dir in \
|
||||||
|
"$APPDIR/usr/lib"/*/perl-base \
|
||||||
|
"$APPDIR/usr/lib"/*/perl/* \
|
||||||
|
"$APPDIR/usr/lib"/*/perl5/* \
|
||||||
|
"$APPDIR/usr/local/lib"/*/perl/* \
|
||||||
|
"$APPDIR/usr/local/lib"/*/perl5/* \
|
||||||
|
"$APPDIR/usr/local/share/perl"/* \
|
||||||
|
"$APPDIR/usr/share/perl"/* \
|
||||||
|
"$APPDIR/usr/share/perl5"; do
|
||||||
|
if [ -d "$perl_dir" ]; then
|
||||||
|
perl5lib_entries="${perl5lib_entries:+$perl5lib_entries:}$perl_dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -n "$perl5lib_entries" ]; then
|
||||||
|
export PERL5LIB="$perl5lib_entries${PERL5LIB:+:$PERL5LIB}"
|
||||||
|
fi
|
||||||
|
|
||||||
export PYTHONHOME="$APPDIR/usr"
|
export PYTHONHOME="$APPDIR/usr"
|
||||||
python_stdlib_dir="$(find "$APPDIR/usr/lib" -maxdepth 1 -type d -name 'python3.*' | head -n 1 || true)"
|
python_stdlib_dir="$(find "$APPDIR/usr/lib" -maxdepth 1 -type d -name 'python3.*' | head -n 1 || true)"
|
||||||
pythonpath_entries=""
|
pythonpath_entries=""
|
||||||
|
|||||||
@@ -4166,10 +4166,10 @@ const struct commands xc_cmds[] = {
|
|||||||
static int
|
static int
|
||||||
command_compare (const void *a, const void *b)
|
command_compare (const void *a, const void *b)
|
||||||
{
|
{
|
||||||
return g_ascii_strcasecmp (a, ((struct commands *)b)->name);
|
return g_ascii_strcasecmp (a, ((const struct commands *)b)->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct commands *
|
static const struct commands *
|
||||||
find_internal_command (char *name)
|
find_internal_command (char *name)
|
||||||
{
|
{
|
||||||
/* the "-1" is to skip the NULL terminator */
|
/* the "-1" is to skip the NULL terminator */
|
||||||
@@ -4205,7 +4205,7 @@ usercommand_show_help (session *sess, char *name)
|
|||||||
static void
|
static void
|
||||||
help (session *sess, char *tbuf, char *helpcmd, int quiet)
|
help (session *sess, char *tbuf, char *helpcmd, int quiet)
|
||||||
{
|
{
|
||||||
struct commands *cmd;
|
const struct commands *cmd;
|
||||||
|
|
||||||
if (plugin_show_help (sess, helpcmd))
|
if (plugin_show_help (sess, helpcmd))
|
||||||
return;
|
return;
|
||||||
@@ -4763,7 +4763,7 @@ handle_command (session *sess, char *cmd, int check_spch)
|
|||||||
char *word[PDIWORDS+1];
|
char *word[PDIWORDS+1];
|
||||||
char *word_eol[PDIWORDS+1];
|
char *word_eol[PDIWORDS+1];
|
||||||
static int command_level = 0;
|
static int command_level = 0;
|
||||||
struct commands *int_cmd;
|
const struct commands *int_cmd;
|
||||||
char *pdibuf;
|
char *pdibuf;
|
||||||
char *tbuf;
|
char *tbuf;
|
||||||
int len;
|
int len;
|
||||||
|
|||||||
@@ -353,13 +353,12 @@ cv_tabs_init (chanview *cv)
|
|||||||
|
|
||||||
viewport = gtk_scrolled_window_new (0, 0);
|
viewport = gtk_scrolled_window_new (0, 0);
|
||||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (viewport), GTK_SHADOW_NONE);
|
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (viewport), GTK_SHADOW_NONE);
|
||||||
gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (viewport), FALSE);
|
|
||||||
if (cv->vertical)
|
if (cv->vertical)
|
||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (viewport),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (viewport),
|
||||||
GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
|
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||||
else
|
else
|
||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (viewport),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (viewport),
|
||||||
GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
|
||||||
gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (viewport), 1);
|
gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (viewport), 1);
|
||||||
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (viewport), 1);
|
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (viewport), 1);
|
||||||
gtk_widget_set_hexpand (viewport, TRUE);
|
gtk_widget_set_hexpand (viewport, TRUE);
|
||||||
|
|||||||
@@ -2412,9 +2412,9 @@ mg_userlist_button (GtkWidget * box, char *label, char *cmd,
|
|||||||
g_signal_connect (G_OBJECT (wid), "clicked",
|
g_signal_connect (G_OBJECT (wid), "clicked",
|
||||||
G_CALLBACK (userlist_button_cb), cmd);
|
G_CALLBACK (userlist_button_cb), cmd);
|
||||||
gtk_widget_set_hexpand (wid, TRUE);
|
gtk_widget_set_hexpand (wid, TRUE);
|
||||||
gtk_widget_set_vexpand (wid, TRUE);
|
gtk_widget_set_vexpand (wid, FALSE);
|
||||||
gtk_widget_set_halign (wid, GTK_ALIGN_FILL);
|
gtk_widget_set_halign (wid, GTK_ALIGN_FILL);
|
||||||
gtk_widget_set_valign (wid, GTK_ALIGN_FILL);
|
gtk_widget_set_valign (wid, GTK_ALIGN_CENTER);
|
||||||
gtk_grid_attach (GTK_GRID (box), wid, a, c, b - a, d - c);
|
gtk_grid_attach (GTK_GRID (box), wid, a, c, b - a, d - c);
|
||||||
show_and_unfocus (wid);
|
show_and_unfocus (wid);
|
||||||
}
|
}
|
||||||
@@ -3413,8 +3413,13 @@ mg_create_textarea (session *sess, GtkWidget *box)
|
|||||||
inbox = mg_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 2);
|
inbox = mg_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 2);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), inbox, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), inbox, TRUE, TRUE, 0);
|
||||||
|
|
||||||
frame = gtk_frame_new (NULL);
|
frame = gtk_scrolled_window_new (NULL, NULL);
|
||||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
gtk_widget_set_hexpand (frame, TRUE);
|
||||||
|
gtk_widget_set_vexpand (frame, TRUE);
|
||||||
|
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (frame),
|
||||||
|
GTK_SHADOW_IN);
|
||||||
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (frame),
|
||||||
|
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||||
gtk_box_pack_start (GTK_BOX (inbox), frame, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (inbox), frame, TRUE, TRUE, 0);
|
||||||
|
|
||||||
theme_get_xtext_colors_for_widget (frame, xtext_palette, XTEXT_COLS);
|
theme_get_xtext_colors_for_widget (frame, xtext_palette, XTEXT_COLS);
|
||||||
@@ -3431,9 +3436,7 @@ mg_create_textarea (session *sess, GtkWidget *box)
|
|||||||
g_signal_connect (G_OBJECT (xtext), "word_click",
|
g_signal_connect (G_OBJECT (xtext), "word_click",
|
||||||
G_CALLBACK (mg_word_clicked), NULL);
|
G_CALLBACK (mg_word_clicked), NULL);
|
||||||
|
|
||||||
gui->vscrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL,
|
gui->vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (frame));
|
||||||
GTK_XTEXT (xtext)->adj);
|
|
||||||
gtk_box_pack_start (GTK_BOX (inbox), gui->vscrollbar, FALSE, TRUE, 0);
|
|
||||||
|
|
||||||
gtk_drag_dest_set (gui->vscrollbar, 5, dnd_dest_targets, 2,
|
gtk_drag_dest_set (gui->vscrollbar, 5, dnd_dest_targets, 2,
|
||||||
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK);
|
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK);
|
||||||
@@ -3476,7 +3479,7 @@ mg_create_meters (session_gui *gui, GtkWidget *parent_box)
|
|||||||
GtkWidget *infbox, *wid, *box;
|
GtkWidget *infbox, *wid, *box;
|
||||||
|
|
||||||
gui->meter_box = infbox = box = mg_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 1);
|
gui->meter_box = infbox = box = mg_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 1);
|
||||||
gtk_box_pack_start (GTK_BOX (parent_box), box, 0, 0, 0);
|
gtk_box_pack_end (GTK_BOX (parent_box), box, 0, 0, 0);
|
||||||
|
|
||||||
if ((prefs.hex_gui_lagometer & 2) || (prefs.hex_gui_throttlemeter & 2))
|
if ((prefs.hex_gui_lagometer & 2) || (prefs.hex_gui_throttlemeter & 2))
|
||||||
{
|
{
|
||||||
@@ -3661,8 +3664,14 @@ mg_create_userlist (session_gui *gui, GtkWidget *box)
|
|||||||
gtk_box_pack_start (GTK_BOX (box), vbox, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (box), vbox, TRUE, TRUE, 0);
|
||||||
|
|
||||||
gui->namelistinfo = gtk_label_new (NULL);
|
gui->namelistinfo = gtk_label_new (NULL);
|
||||||
gtk_label_set_xalign (GTK_LABEL (gui->namelistinfo), 0.0f);
|
gtk_label_set_xalign (GTK_LABEL (gui->namelistinfo), 0.5f);
|
||||||
gtk_widget_set_halign (gui->namelistinfo, GTK_ALIGN_START);
|
gtk_label_set_justify (GTK_LABEL (gui->namelistinfo), GTK_JUSTIFY_CENTER);
|
||||||
|
gtk_label_set_ellipsize (GTK_LABEL (gui->namelistinfo), PANGO_ELLIPSIZE_END);
|
||||||
|
gtk_label_set_width_chars (GTK_LABEL (gui->namelistinfo), 1);
|
||||||
|
gtk_widget_set_margin_start (gui->namelistinfo, 0);
|
||||||
|
gtk_widget_set_margin_end (gui->namelistinfo, 0);
|
||||||
|
gtk_widget_set_hexpand (gui->namelistinfo, TRUE);
|
||||||
|
gtk_widget_set_halign (gui->namelistinfo, GTK_ALIGN_FILL);
|
||||||
if (prefs.hex_gui_ulist_count)
|
if (prefs.hex_gui_ulist_count)
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), gui->namelistinfo, 0, 0, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), gui->namelistinfo, 0, 0, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -93,23 +93,14 @@ userlist_apply_saved_column_width (GtkTreeViewColumn *column, int width)
|
|||||||
static void
|
static void
|
||||||
userlist_update_min_width (session *sess)
|
userlist_update_min_width (session *sess)
|
||||||
{
|
{
|
||||||
GtkRequisition minimum;
|
|
||||||
GtkRequisition natural;
|
|
||||||
GtkWidget *scrolled_window;
|
GtkWidget *scrolled_window;
|
||||||
int width;
|
|
||||||
|
|
||||||
if (!sess || !sess->gui || !sess->gui->user_box || !sess->gui->namelistinfo || !sess->gui->user_tree)
|
if (!sess || !sess->gui || !sess->gui->user_tree)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gtk_widget_get_preferred_size (sess->gui->namelistinfo, &minimum, &natural);
|
|
||||||
width = MAX (minimum.width, natural.width);
|
|
||||||
if (width < 1)
|
|
||||||
width = 1;
|
|
||||||
|
|
||||||
scrolled_window = gtk_widget_get_parent (sess->gui->user_tree);
|
scrolled_window = gtk_widget_get_parent (sess->gui->user_tree);
|
||||||
if (GTK_IS_SCROLLED_WINDOW (scrolled_window))
|
if (GTK_IS_SCROLLED_WINDOW (scrolled_window))
|
||||||
gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (scrolled_window), width);
|
gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (scrolled_window), 1);
|
||||||
gtk_widget_set_size_request (sess->gui->user_box, width, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GdkPixbuf *
|
GdkPixbuf *
|
||||||
@@ -909,17 +900,19 @@ userlist_create (GtkWidget *box)
|
|||||||
};
|
};
|
||||||
|
|
||||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||||
|
gtk_widget_set_hexpand (sw, TRUE);
|
||||||
|
gtk_widget_set_vexpand (sw, TRUE);
|
||||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
|
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
|
||||||
GTK_SHADOW_ETCHED_IN);
|
GTK_SHADOW_IN);
|
||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||||
prefs.hex_gui_ulist_show_hosts ?
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||||
GTK_POLICY_AUTOMATIC :
|
gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (sw), 1);
|
||||||
GTK_POLICY_NEVER,
|
|
||||||
GTK_POLICY_AUTOMATIC);
|
|
||||||
gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0);
|
||||||
gtk_widget_show (sw);
|
gtk_widget_show (sw);
|
||||||
|
|
||||||
treeview = gtk_tree_view_new ();
|
treeview = gtk_tree_view_new ();
|
||||||
|
gtk_widget_set_hexpand (treeview, TRUE);
|
||||||
|
gtk_widget_set_vexpand (treeview, TRUE);
|
||||||
gtk_widget_set_name (treeview, "zoitechat-userlist");
|
gtk_widget_set_name (treeview, "zoitechat-userlist");
|
||||||
gtk_widget_set_can_focus (treeview, TRUE);
|
gtk_widget_set_can_focus (treeview, TRUE);
|
||||||
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
|
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
|
||||||
|
|||||||
@@ -110,6 +110,15 @@ enum
|
|||||||
TARGET_COMPOUND_TEXT
|
TARGET_COMPOUND_TEXT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
PROP_0,
|
||||||
|
PROP_HADJUSTMENT,
|
||||||
|
PROP_VADJUSTMENT,
|
||||||
|
PROP_HSCROLL_POLICY,
|
||||||
|
PROP_VSCROLL_POLICY
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Selection targets for PRIMARY selection / copy-paste.
|
/* Selection targets for PRIMARY selection / copy-paste.
|
||||||
*
|
*
|
||||||
@@ -158,7 +167,8 @@ gtk_xtext_install_selection_targets (GtkWidget *widget)
|
|||||||
|
|
||||||
static guint xtext_signals[LAST_SIGNAL];
|
static guint xtext_signals[LAST_SIGNAL];
|
||||||
|
|
||||||
G_DEFINE_TYPE (GtkXText, gtk_xtext, GTK_TYPE_WIDGET)
|
G_DEFINE_TYPE_WITH_CODE (GtkXText, gtk_xtext, GTK_TYPE_WIDGET,
|
||||||
|
G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
|
||||||
|
|
||||||
char *nocasestrstr (const char *text, const char *tofind); /* util.c */
|
char *nocasestrstr (const char *text, const char *tofind); /* util.c */
|
||||||
int xtext_get_stamp_str (time_t, char **);
|
int xtext_get_stamp_str (time_t, char **);
|
||||||
@@ -168,9 +178,13 @@ static gboolean gtk_xtext_is_selecting (GtkXText *xtext);
|
|||||||
static char *gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret);
|
static char *gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret);
|
||||||
static textentry *gtk_xtext_nth (GtkXText *xtext, int line, int *subline);
|
static textentry *gtk_xtext_nth (GtkXText *xtext, int line, int *subline);
|
||||||
static void gtk_xtext_adjustment_changed (GtkAdjustment * adj,
|
static void gtk_xtext_adjustment_changed (GtkAdjustment * adj,
|
||||||
GtkXText * xtext);
|
GtkXText * xtext);
|
||||||
static void gtk_xtext_scroll_adjustments (GtkXText *xtext, GtkAdjustment *hadj,
|
static void gtk_xtext_scroll_adjustments (GtkXText *xtext, GtkAdjustment *hadj,
|
||||||
GtkAdjustment *vadj);
|
GtkAdjustment *vadj);
|
||||||
|
static void gtk_xtext_set_property (GObject *object, guint prop_id,
|
||||||
|
const GValue *value, GParamSpec *pspec);
|
||||||
|
static void gtk_xtext_get_property (GObject *object, guint prop_id,
|
||||||
|
GValue *value, GParamSpec *pspec);
|
||||||
static int gtk_xtext_render_ents (GtkXText * xtext, textentry *, textentry *);
|
static int gtk_xtext_render_ents (GtkXText * xtext, textentry *, textentry *);
|
||||||
static void gtk_xtext_recalc_widths (xtext_buffer *buf, int);
|
static void gtk_xtext_recalc_widths (xtext_buffer *buf, int);
|
||||||
static void gtk_xtext_fix_indent (xtext_buffer *buf);
|
static void gtk_xtext_fix_indent (xtext_buffer *buf);
|
||||||
@@ -794,6 +808,9 @@ gtk_xtext_init (GtkXText * xtext)
|
|||||||
xtext->recycle = FALSE;
|
xtext->recycle = FALSE;
|
||||||
xtext->dont_render = FALSE;
|
xtext->dont_render = FALSE;
|
||||||
xtext->dont_render2 = FALSE;
|
xtext->dont_render2 = FALSE;
|
||||||
|
xtext->hadj = NULL;
|
||||||
|
xtext->hscroll_policy = GTK_SCROLL_MINIMUM;
|
||||||
|
xtext->vscroll_policy = GTK_SCROLL_MINIMUM;
|
||||||
gtk_xtext_scroll_adjustments (xtext, NULL, NULL);
|
gtk_xtext_scroll_adjustments (xtext, NULL, NULL);
|
||||||
|
|
||||||
gtk_xtext_install_selection_targets (GTK_WIDGET (xtext));
|
gtk_xtext_install_selection_targets (GTK_WIDGET (xtext));
|
||||||
@@ -886,6 +903,66 @@ gtk_xtext_adjustment_changed (GtkAdjustment * adj, GtkXText * xtext)
|
|||||||
xtext->buffer->old_value = xtext_adj_get_value (adj);
|
xtext->buffer->old_value = xtext_adj_get_value (adj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_xtext_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
|
||||||
|
{
|
||||||
|
GtkXText *xtext = GTK_XTEXT (object);
|
||||||
|
GtkAdjustment *adj;
|
||||||
|
|
||||||
|
switch (prop_id)
|
||||||
|
{
|
||||||
|
case PROP_HADJUSTMENT:
|
||||||
|
adj = g_value_get_object (value);
|
||||||
|
if (xtext->hadj == adj)
|
||||||
|
break;
|
||||||
|
if (xtext->hadj)
|
||||||
|
g_object_unref (xtext->hadj);
|
||||||
|
xtext->hadj = adj ? g_object_ref (adj) : NULL;
|
||||||
|
g_object_notify (object, "hadjustment");
|
||||||
|
break;
|
||||||
|
case PROP_VADJUSTMENT:
|
||||||
|
gtk_xtext_scroll_adjustments (xtext, NULL, g_value_get_object (value));
|
||||||
|
g_object_notify (object, "vadjustment");
|
||||||
|
break;
|
||||||
|
case PROP_HSCROLL_POLICY:
|
||||||
|
xtext->hscroll_policy = g_value_get_enum (value);
|
||||||
|
g_object_notify (object, "hscroll-policy");
|
||||||
|
break;
|
||||||
|
case PROP_VSCROLL_POLICY:
|
||||||
|
xtext->vscroll_policy = g_value_get_enum (value);
|
||||||
|
g_object_notify (object, "vscroll-policy");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_xtext_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
||||||
|
{
|
||||||
|
GtkXText *xtext = GTK_XTEXT (object);
|
||||||
|
|
||||||
|
switch (prop_id)
|
||||||
|
{
|
||||||
|
case PROP_HADJUSTMENT:
|
||||||
|
g_value_set_object (value, xtext->hadj);
|
||||||
|
break;
|
||||||
|
case PROP_VADJUSTMENT:
|
||||||
|
g_value_set_object (value, xtext->adj);
|
||||||
|
break;
|
||||||
|
case PROP_HSCROLL_POLICY:
|
||||||
|
g_value_set_enum (value, xtext->hscroll_policy);
|
||||||
|
break;
|
||||||
|
case PROP_VSCROLL_POLICY:
|
||||||
|
g_value_set_enum (value, xtext->vscroll_policy);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
gtk_xtext_new (const XTextColor *palette, int separator)
|
gtk_xtext_new (const XTextColor *palette, int separator)
|
||||||
{
|
{
|
||||||
@@ -952,6 +1029,11 @@ gtk_xtext_cleanup (GtkXText *xtext)
|
|||||||
xtext->adj = NULL;
|
xtext->adj = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (xtext->hadj)
|
||||||
|
{
|
||||||
|
g_object_unref (G_OBJECT (xtext->hadj));
|
||||||
|
xtext->hadj = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (xtext->hand_cursor)
|
if (xtext->hand_cursor)
|
||||||
{
|
{
|
||||||
@@ -2924,6 +3006,13 @@ gtk_xtext_class_init (GtkXTextClass * class)
|
|||||||
widget_class = (GtkWidgetClass *) class;
|
widget_class = (GtkWidgetClass *) class;
|
||||||
xtext_class = (GtkXTextClass *) class;
|
xtext_class = (GtkXTextClass *) class;
|
||||||
|
|
||||||
|
object_class->set_property = gtk_xtext_set_property;
|
||||||
|
object_class->get_property = gtk_xtext_get_property;
|
||||||
|
g_object_class_override_property (object_class, PROP_HADJUSTMENT, "hadjustment");
|
||||||
|
g_object_class_override_property (object_class, PROP_VADJUSTMENT, "vadjustment");
|
||||||
|
g_object_class_override_property (object_class, PROP_HSCROLL_POLICY, "hscroll-policy");
|
||||||
|
g_object_class_override_property (object_class, PROP_VSCROLL_POLICY, "vscroll-policy");
|
||||||
|
|
||||||
xtext_signals[WORD_CLICK] =
|
xtext_signals[WORD_CLICK] =
|
||||||
g_signal_new ("word_click",
|
g_signal_new ("word_click",
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
G_TYPE_FROM_CLASS (object_class),
|
||||||
@@ -4830,13 +4919,12 @@ gtk_xtext_check_marker_visibility (GtkXText * xtext)
|
|||||||
static void
|
static void
|
||||||
gtk_xtext_unstrip_color (gint start, gint end, GSList *slp, GList **gl, gint maxo)
|
gtk_xtext_unstrip_color (gint start, gint end, GSList *slp, GList **gl, gint maxo)
|
||||||
{
|
{
|
||||||
gint off1, off2, curlen;
|
gint off1, off2;
|
||||||
GSList *cursl;
|
GSList *cursl;
|
||||||
offsets_t marks;
|
offsets_t marks;
|
||||||
offlen_t *meta;
|
offlen_t *meta;
|
||||||
|
|
||||||
off1 = 0;
|
off1 = 0;
|
||||||
curlen = 0;
|
|
||||||
cursl = slp;
|
cursl = slp;
|
||||||
while (cursl)
|
while (cursl)
|
||||||
{
|
{
|
||||||
@@ -4846,7 +4934,6 @@ gtk_xtext_unstrip_color (gint start, gint end, GSList *slp, GList **gl, gint max
|
|||||||
off1 = meta->off + start;
|
off1 = meta->off + start;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
curlen += meta->len;
|
|
||||||
start -= meta->len;
|
start -= meta->len;
|
||||||
end -= meta->len;
|
end -= meta->len;
|
||||||
cursl = g_slist_next (cursl);
|
cursl = g_slist_next (cursl);
|
||||||
@@ -4861,7 +4948,6 @@ gtk_xtext_unstrip_color (gint start, gint end, GSList *slp, GList **gl, gint max
|
|||||||
off2 = meta->off + end;
|
off2 = meta->off + end;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
curlen += meta->len;
|
|
||||||
end -= meta->len;
|
end -= meta->len;
|
||||||
cursl = g_slist_next (cursl);
|
cursl = g_slist_next (cursl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,6 +134,9 @@ struct _GtkXText
|
|||||||
xtext_buffer *selection_buffer;
|
xtext_buffer *selection_buffer;
|
||||||
|
|
||||||
GtkAdjustment *adj;
|
GtkAdjustment *adj;
|
||||||
|
GtkAdjustment *hadj;
|
||||||
|
GtkScrollablePolicy hscroll_policy;
|
||||||
|
GtkScrollablePolicy vscroll_policy;
|
||||||
cairo_surface_t *background_surface; /* 0 = use palette[19] */
|
cairo_surface_t *background_surface; /* 0 = use palette[19] */
|
||||||
cairo_surface_t *background_clip_surface;
|
cairo_surface_t *background_clip_surface;
|
||||||
GdkWindow *draw_window; /* points to ->window */
|
GdkWindow *draw_window; /* points to ->window */
|
||||||
|
|||||||
Reference in New Issue
Block a user