summaryrefslogtreecommitdiff
path: root/UToolTips.pas
diff options
context:
space:
mode:
Diffstat (limited to 'UToolTips.pas')
-rw-r--r--UToolTips.pas65
1 files changed, 35 insertions, 30 deletions
diff --git a/UToolTips.pas b/UToolTips.pas
index 6926456..8ce6666 100644
--- a/UToolTips.pas
+++ b/UToolTips.pas
@@ -22,7 +22,7 @@ unit UToolTips;
interface
-uses lazglib2, lazgobject2, gdk2, gtk2, pango;
+uses lazglib2, lazgobject2, lazgdk3, lazgtk3, lazpango1;
procedure FileListTipsInstall(ATreeView: PGtkTreeView);
procedure FileListTipsEnable;
@@ -55,8 +55,11 @@ function tips_button_press_event(widget: PGtkWidget; event: PGdkEventButton; use
procedure FileListTipsInstall(ATreeView: PGtkTreeView);
begin
+ // TODO
+{
g_signal_connect_data(PGObject(ATreeView), 'event-after', TGCallback(@event_handler), nil, nil, [G_CONNECT_AFTER]);
g_signal_connect_data(PGObject(ATreeView), 'leave-notify-event', TGCallback(@on_leave_notify), nil, nil, G_CONNECT_DEFAULT);
+}
end;
procedure file_list_tips_show_tip(AListView: PGtkTreeView; row: PGtkTreePath; column: PGtkTreeViewColumn);
@@ -79,7 +82,7 @@ begin
if (sec < 1) and (ms < ConstFileListTipsDelayNeighbour * 1000) then Timeout := 1;
// DebugMsg(['Time elapsed = ', Double(sec), ':', integer(ms div 1000)]);
end;
- timer_id := gtk_timeout_add(Timeout, @show_tip_widget, nil);
+ timer_id := g_timeout_add(Timeout, @show_tip_widget, nil);
end;
@@ -89,9 +92,9 @@ var view: PGtkTreeView;
path: PGtkTreePath;
begin
Result := False;
- view := GTK_TREE_VIEW(widget);
+ view := PGtkTreeView(widget);
if event^.any.window <> gtk_tree_view_get_bin_window(view) then Exit;
- case event^._type of
+ case event^.type_ of
GDK_KEY_PRESS, GDK_SCROLL:
begin
FileListTipsHide;
@@ -103,11 +106,11 @@ begin
end;
GDK_FOCUS_CHANGE: begin
Result := True;
- if event^.focus_change._in <> 1 then FileListTipsHide;
+ if event^.focus_change.in_ <> 1 then FileListTipsHide;
end;
GDK_MOTION_NOTIFY: begin
Result := True;
- if not gtk_tree_view_get_path_at_pos(view, Trunc(event^.motion.x), Trunc(event^.motion.y), path, column, nil, nil)
+ if not gtk_tree_view_get_path_at_pos(view, Trunc(event^.motion.x), Trunc(event^.motion.y), @path, @column, nil, nil)
then begin
FileListTipsHide;
if tips_timer <> nil then begin
@@ -131,14 +134,15 @@ begin
try
if not Assigned(tip_window) then create_widgets;
- if not ConfUseSystemFont then begin
+ // TODO
+{ if not ConfUseSystemFont then begin
FontDesc := pango_font_description_from_string(PChar(ConfPanelFont));
gtk_widget_modify_font(PGtkWidget(tip_label), FontDesc);
end else gtk_widget_modify_font(PGtkWidget(tip_label), nil);
-
- gtk_label_set_markup(GTK_LABEL(tip_label), Text);
- widget := GTK_WIDGET(panel);
- hadjustment := gtk_tree_view_get_hadjustment(panel);
+}
+ gtk_label_set_markup(PGtkLabel(tip_label), Text);
+ widget := PGtkWidget(panel);
+ hadjustment := gtk_scrollable_get_hadjustment(PGtkScrollable(panel));
x := x - Trunc(gtk_adjustment_get_value(hadjustment));
gdk_window_get_origin(widget^.window, @wx, @wy);
@@ -147,10 +151,10 @@ begin
scr_w := gdk_screen_width;
gtk_label_set_line_wrap(tip_label, False);
- gtk_widget_size_request(GTK_WIDGET(tip_window), @requisition);
+ gtk_widget_get_preferred_size(PGtkWidget(tip_window), @requisition, nil);
if x + requisition.width > scr_w {PGtkWidget(panel)^.allocation.width} then begin
gtk_label_set_line_wrap(tip_label, True);
- gtk_widget_size_request(GTK_WIDGET(tip_window), @requisition);
+ gtk_widget_get_preferred_size(PGtkWidget(tip_window), @requisition, nil);
end;
w := requisition.width;
@@ -164,30 +168,31 @@ end;
function gtk_tooltips_paint_window(widget: PGtkWidget; event: PGdkEventExpose; user_data: gpointer): gboolean; cdecl;
begin
- gtk_paint_flat_box(gtk_widget_get_style(widget), widget^.window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
+ // TODO
+{ gtk_paint_flat_box(gtk_widget_get_style(widget), widget^.window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
nil, widget, 'tooltip', 0, 0, -1, -1);
- Result := False;
+ Result := False; }
end;
procedure create_widgets;
begin
if Assigned(tip_window) then Exit;
- tip_window := GTK_WINDOW(gtk_window_new(GTK_WINDOW_POPUP));
- gtk_widget_set_app_paintable(GTK_WIDGET(tip_window), True);
+ tip_window := PGtkWindow(gtk_window_new(GTK_WINDOW_POPUP));
+ gtk_widget_set_app_paintable(PGtkWidget(tip_window), True);
gtk_window_set_resizable(tip_window, False);
- gtk_widget_set_name(GTK_WIDGET(tip_window), 'gtk-tooltips');
- gtk_container_set_border_width(GTK_CONTAINER(tip_window), 4);
- gtk_widget_set_events(GTK_WIDGET(tip_window), GDK_POINTER_MOTION_MASK or GDK_BUTTON_PRESS_MASK or GDK_KEY_PRESS_MASK or GDK_FOCUS_CHANGE_MASK or GDK_SCROLL_MASK);
+ gtk_widget_set_name(PGtkWidget(tip_window), 'gtk-tooltips');
+ gtk_container_set_border_width(PGtkContainer(tip_window), 4);
+ gtk_widget_set_events(PGtkWidget(tip_window), [GDK_POINTER_MOTION_MASK, GDK_BUTTON_PRESS_MASK, GDK_KEY_PRESS_MASK, GDK_FOCUS_CHANGE_MASK, GDK_SCROLL_MASK]);
g_signal_connect_data(PGObject(tip_window), 'event', TGCallback(@tip_event_handler), nil, nil, G_CONNECT_DEFAULT);
g_signal_connect_data(PGObject(tip_window), 'expose_event', TGCallback(@gtk_tooltips_paint_window), tip_window, nil, G_CONNECT_DEFAULT);
g_signal_connect_data(PGObject(tip_window), 'button-press-event', TGCallback(@tips_button_press_event), tip_window, nil, G_CONNECT_DEFAULT);
- tip_label := GTK_LABEL(gtk_label_new(nil));
- gtk_misc_set_alignment(GTK_MISC(tip_label), 0, 0.5);
- gtk_widget_show(GTK_WIDGET(tip_label));
+ tip_label := PGtkLabel(gtk_label_new(nil));
+ gtk_label_set_yalign(tip_label, 0.5);
+ gtk_widget_show(PGtkWidget(tip_label));
- gtk_container_add(GTK_CONTAINER(tip_window), GTK_WIDGET(tip_label));
+ gtk_container_add(PGtkContainer(tip_window), PGtkWidget(tip_label));
end;
procedure FileListTipsHide;
@@ -197,8 +202,8 @@ begin
data_row := nil;
data_column := nil;
- if GTK_WIDGET_VISIBLE(tip_window) then begin
- gtk_widget_hide(GTK_WIDGET(tip_window));
+ if gtk_widget_get_visible(tip_window) then begin
+ gtk_widget_hide(PGtkWidget(tip_window));
if tips_timer = nil then tips_timer := g_timer_new;
g_timer_start(tips_timer);
// gdk_beep();
@@ -206,7 +211,7 @@ begin
end;
if timer_id <> 0 then begin
- gtk_timeout_remove(timer_id);
+ g_source_remove(timer_id);
timer_id := 0;
end;
end;
@@ -308,7 +313,7 @@ begin
if ConfDirsInBold and Data^.IsDir then Text := PChar(Format('<span weight="bold">%s</span>', [Text]));
draw_tip_widget(data_panel, Text, Rect.x, Rect.y + Rect.height + 2);
// if Assigned(text) then g_free(text);
- if not GTK_WIDGET_VISIBLE(GTK_WIDGET(tip_window)) then gtk_widget_show(GTK_WIDGET(tip_window));
+ if not gtk_widget_get_visible(PGtkWidget(tip_window)) then gtk_widget_show(PGtkWidget(tip_window));
except
on E: Exception do DebugMsg(['*** Exception raised in function show_tip_widget(user_data: gpointer): gboolean (', E.ClassName, '): ', E.Message]);
@@ -334,7 +339,7 @@ end;
function tip_event_handler(widget: PGtkWidget; event: PGdkEvent; user_data: gpointer): gboolean; cdecl;
begin
Result := True;
- case event^._type of
+ case event^.type_ of
GDK_KEY_PRESS, {GDK_BUTTON_PRESS, }GDK_SCROLL, GDK_FOCUS_CHANGE{, GDK_MOTION_NOTIFY}:
begin
FileListTipsHide;
@@ -350,7 +355,7 @@ end;
function on_leave_notify(widget: PGtkWidget; event: PGdkEventCrossing; user_data: gpointer): gboolean; cdecl;
begin
- if Assigned(tip_window) and (not GTK_WIDGET_VISIBLE(tip_window))
+ if Assigned(tip_window) and (not gtk_widget_get_visible(tip_window))
then begin
FileListTipsHide;
if tips_timer <> nil then begin