diff options
author | Stefano Facchini <stefano.facchini@gmail.com> | 2017-09-04 13:31:31 +0200 |
---|---|---|
committer | Stefano Facchini <stefano.facchini@gmail.com> | 2017-10-29 15:23:47 +0100 |
commit | f506b3ccabc1f71375216e41bf7675ec0771b419 (patch) | |
tree | 0e3df947dbf596192f6e02f5d6cfa38a3a95b18b | |
parent | 2613269f6180627d8a9a819fc4923fb126f620f0 (diff) | |
download | baobab-f506b3ccabc1f71375216e41bf7675ec0771b419.tar.gz |
start gtk4 port
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | src/baobab-application.vala | 6 | ||||
-rw-r--r-- | src/baobab-cellrenderers.vala | 16 | ||||
-rw-r--r-- | src/baobab-chart.vala | 35 | ||||
-rw-r--r-- | src/baobab-main-window.ui | 15 | ||||
-rw-r--r-- | src/baobab-ringschart.vala | 14 | ||||
-rw-r--r-- | src/baobab-treemap.vala | 2 | ||||
-rw-r--r-- | src/baobab-window.vala | 26 |
9 files changed, 46 insertions, 72 deletions
@@ -14,7 +14,7 @@ A detailed documentation of the program could be read at: System Requirements =================== -Baobab should build on most unices. It needs GTK+ 3. +Baobab needs GTK+ 4. Development diff --git a/meson.build b/meson.build index 2ae3871..881f719 100644 --- a/meson.build +++ b/meson.build @@ -12,7 +12,7 @@ glib = dependency('glib-2.0', version: '>=2.44') gio = dependency('gio-2.0', version: '>=2.44') gio_unix = dependency('gio-unix-2.0', version: '>=2.44') gobject = dependency('gobject-2.0', version: '>=2.44') -gtk = dependency('gtk+-3.0', version: '>=3.20') +gtk = dependency('gtk+-4.0', version: '>=3.91.2') cc = meson.get_compiler('c') math = cc.find_library('m', required: false) diff --git a/src/baobab-application.vala b/src/baobab-application.vala index d895f76..9641405 100644 --- a/src/baobab-application.vala +++ b/src/baobab-application.vala @@ -75,11 +75,7 @@ namespace Baobab { // Load custom CSS var css_provider = new Gtk.CssProvider (); var css_file = File.new_for_uri ("resource:///org/gnome/baobab/baobab.css"); - try { - css_provider.load_from_file (css_file); - } catch (Error e) { - warning ("loading css: %s", e.message); - } + css_provider.load_from_file (css_file); Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); set_accels_for_action ("win.scan-folder", { "<Primary>o" }); diff --git a/src/baobab-cellrenderers.vala b/src/baobab-cellrenderers.vala index 95c02eb..a47d3cb 100644 --- a/src/baobab-cellrenderers.vala +++ b/src/baobab-cellrenderers.vala @@ -40,7 +40,7 @@ namespace Baobab { } } - protected override void render (Cairo.Context cr, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.CellRendererState flags) { + protected override void snapshot (Gtk.Snapshot snapshot, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.CellRendererState flags) { var context = widget.get_style_context (); context.save (); @@ -54,7 +54,7 @@ namespace Baobab { break; } - base.render (cr, widget, background_area, cell_area, flags); + base.snapshot (snapshot, widget, background_area, cell_area, flags); context.restore (); } @@ -128,7 +128,7 @@ namespace Baobab { public class CellRendererProgress : Gtk.CellRendererProgress { public Scanner.State state { set; get; } - public override void render (Cairo.Context cr, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.CellRendererState flags) { + public override void snapshot (Gtk.Snapshot snapshot, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.CellRendererState flags) { if (state == Scanner.State.ERROR) { return; } @@ -147,16 +147,16 @@ namespace Baobab { context.save (); context.add_class ("baobab-level-cell"); - context.render_background (cr, x, y, w, h); - context.render_frame (cr, x, y, w, h); + snapshot.render_background (context, x, y, w, h); + snapshot.render_frame (context, x, y, w, h); - var border = context.get_border (Gtk.StateFlags.NORMAL); + var border = context.get_border (); x += border.left; y += border.top; w -= border.left + border.right; h -= border.top + border.bottom; - border = context.get_padding (Gtk.StateFlags.NORMAL); + border = context.get_padding (); x += border.left; y += border.top; w -= border.left + border.right; @@ -177,7 +177,7 @@ namespace Baobab { context.add_class ("level-high"); } - context.render_background (cr, x_bar, y, perc_w, h); + snapshot.render_background (context, x_bar, y, perc_w, h); context.restore (); } diff --git a/src/baobab-chart.vala b/src/baobab-chart.vala index 703a734..a202b15 100644 --- a/src/baobab-chart.vala +++ b/src/baobab-chart.vala @@ -218,8 +218,6 @@ namespace Baobab { }; construct { - add_events (Gdk.EventMask.EXPOSURE_MASK | Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.SCROLL_MASK); - action_group = new SimpleActionGroup (); action_group.add_action_entries (action_entries, this); insert_action_group ("chart", action_group); @@ -227,8 +225,8 @@ namespace Baobab { build_context_menu (); } - public override void size_allocate (Gtk.Allocation allocation) { - base.size_allocate (allocation); + public override void size_allocate (Gtk.Allocation allocation, int baseline, out Gtk.Allocation clip) { + base.size_allocate (allocation, baseline, out clip); foreach (ChartItem item in items) { item.has_visible_children = false; item.visible = false; @@ -250,9 +248,11 @@ namespace Baobab { } public override bool motion_notify_event (Gdk.EventMotion event) { - has_tooltip = highlight_item_at_point (event.x, event.y); + double x, y; + event.get_coords(out x, out y); + has_tooltip = highlight_item_at_point (x, y); - Gdk.Event.request_motions (event); + //Gdk.Event.request_motions (event); return false; } @@ -487,15 +487,20 @@ namespace Baobab { } protected override bool button_press_event (Gdk.EventButton event) { - if (event.type == Gdk.EventType.BUTTON_PRESS) { + if (event.get_event_type () == Gdk.EventType.BUTTON_PRESS) { if (event.triggers_context_menu ()) { show_popup_menu (event); return true; } - switch (event.button) { + uint button; + double x, y; + event.get_button (out button); + event.get_coords (out x, out y); + + switch (button) { case Gdk.BUTTON_PRIMARY: - if (highlight_item_at_point (event.x, event.y)) { + if (highlight_item_at_point (x, y)) { var path = model.get_path (highlighted_item.iter); if (root.compare (path) == 0) { move_up_root (); @@ -517,7 +522,9 @@ namespace Baobab { protected override bool scroll_event (Gdk.EventScroll event) { Gdk.EventMotion e = (Gdk.EventMotion) event; - switch (event.direction) { + Gdk.ScrollDirection direction; + event.get_scroll_direction (out direction); + switch (direction) { case Gdk.ScrollDirection.LEFT: case Gdk.ScrollDirection.UP: zoom_out (); @@ -582,7 +589,7 @@ namespace Baobab { context_menu.attach_to_widget (this, null); } - void show_popup_menu (Gdk.EventButton? event) { + void show_popup_menu (Gdk.EventButton event) { var enable = highlighted_item != null; var action = action_group.lookup_action ("open-file") as SimpleAction; action.set_enabled (enable); @@ -599,11 +606,7 @@ namespace Baobab { action = action_group.lookup_action ("zoom-out") as SimpleAction; action.set_enabled (can_zoom_out ()); - if (event != null) { - context_menu.popup (null, null, null, event.button, event.time); - } else { - context_menu.popup (null, null, null, 0, Gtk.get_current_event_time ()); - } + context_menu.popup_at_pointer (event); } void connect_model_signals (Gtk.TreeModel m) { diff --git a/src/baobab-main-window.ui b/src/baobab-main-window.ui index 0f88273..aa3d868 100644 --- a/src/baobab-main-window.ui +++ b/src/baobab-main-window.ui @@ -6,7 +6,6 @@ <property name="can_focus">False</property> <child> <object class="GtkMenuItem" id="treeview_popup_open"> - <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">_Open Folder</property> @@ -15,7 +14,6 @@ </child> <child> <object class="GtkMenuItem" id="treeview_popup_copy"> - <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">_Copy Path to Clipboard</property> @@ -24,7 +22,6 @@ </child> <child> <object class="GtkMenuItem" id="treeview_popup_trash"> - <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Mo_ve to Trash</property> @@ -107,7 +104,6 @@ <object class="GtkBox" id="infobar_content_area"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="border_width">8</property> <property name="orientation">vertical</property> <property name="spacing">16</property> <property name="hexpand">True</property> @@ -120,11 +116,6 @@ <property name="halign">GTK_ALIGN_START</property> <property name="wrap">True</property> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> </child> <child> <object class="GtkLabel" id="infobar_secondary_label"> @@ -135,11 +126,6 @@ <property name="halign">GTK_ALIGN_START</property> <property name="wrap">True</property> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> </child> </object> </child> @@ -147,7 +133,6 @@ <object class="GtkButtonBox" id="infobar_action_area"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="border_width">5</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <property name="layout_style">end</property> diff --git a/src/baobab-ringschart.vala b/src/baobab-ringschart.vala index 6fe2841..6173edf 100644 --- a/src/baobab-ringschart.vala +++ b/src/baobab-ringschart.vala @@ -98,7 +98,6 @@ namespace Baobab { } var context = get_style_context (); - var context_state = context.get_state (); context.save (); context.add_class ("subfolder-tip"); @@ -111,7 +110,7 @@ namespace Baobab { Gdk.Rectangle last_rect = Gdk.Rectangle (); - var padding = context.get_padding (context_state); + var padding = context.get_padding (); var vpadding = padding.top + padding.bottom; var hpadding = padding.left + padding.right; @@ -198,7 +197,7 @@ namespace Baobab { cr.rectangle (tooltip_rect.x + tooltip_rect.width, tooltip_rect.y, -tooltip_rect.width, tooltip_rect.height); cr.clip (); - var bg_color = context.get_background_color (context_state); + var bg_color = context.get_background_color (); cr.set_line_width (1); cr.move_to (sector_center_x, sector_center_y); Gdk.cairo_set_source_rgba (cr, bg_color); @@ -239,14 +238,12 @@ namespace Baobab { get_allocation (out allocation); var context = get_style_context (); - var context_state = context.get_state (); context.save (); var toplevel_context = get_toplevel ().get_style_context (); - var toplevel_context_state = toplevel_context.get_state (); - var border_color = context.get_border_color (context_state); - var bg_color = toplevel_context.get_background_color (toplevel_context_state); + var border_color = context.get_border_color (); + var bg_color = toplevel_context.get_background_color (); var center_x = allocation.width / 2; var center_y = allocation.height / 2; @@ -307,9 +304,8 @@ namespace Baobab { get_allocation (out allocation); var context = get_style_context (); - var context_state = context.get_state (); - var padding = context.get_padding (context_state); + var padding = context.get_padding (); var max_radius = int.min (allocation.width / 2, allocation.height / 2) - padding.left; // Assuming that padding is the same for all sides var thickness = max_radius / (max_depth + 1); diff --git a/src/baobab-treemap.vala b/src/baobab-treemap.vala index 2788a3e..d58fa19 100644 --- a/src/baobab-treemap.vala +++ b/src/baobab-treemap.vala @@ -66,7 +66,7 @@ namespace Baobab { cr.rectangle (x + border, y + border, width - border * 2, height - border * 2); Gdk.cairo_set_source_rgba (cr, fill_color); cr.fill_preserve (); - var border_color = context.get_border_color (context.get_state ()); + var border_color = context.get_border_color (); Gdk.cairo_set_source_rgba (cr, border_color); cr.stroke (); diff --git a/src/baobab-window.vala b/src/baobab-window.vala index 4c6ddb6..621722a 100644 --- a/src/baobab-window.vala +++ b/src/baobab-window.vala @@ -153,7 +153,7 @@ namespace Baobab { resize (width, height); window_state_event.connect ((event) => { - ui_settings.set_int ("window-state", event.new_window_state); + //ui_settings.set_int ("window-state", event.new_window_state); return false; }); @@ -179,7 +179,7 @@ namespace Baobab { } else { header_bar.show_close_button = false; header_bar.get_style_context ().remove_class ("titlebar"); - vbox.pack_start (header_bar, false, false, 0); + vbox.pack_start (header_bar); } set_ui_state (home_page, false); @@ -280,7 +280,7 @@ namespace Baobab { void on_help_activate () { try { - Gtk.show_uri (get_screen (), "help:baobab", Gtk.get_current_event_time ()); + Gtk.show_uri_on_window (this, "help:baobab", Gtk.get_current_event_time ()); } catch (Error e) { message (_("Failed to show help"), e.message, Gtk.MessageType.WARNING); } @@ -354,16 +354,6 @@ namespace Baobab { Gtk.drag_dest_unset (this); } - bool show_treeview_popup (Gtk.Menu popup, Gdk.EventButton? event) { - if (event != null) { - popup.popup (null, null, null, event.button, event.time); - } else { - popup.popup (null, null, null, 0, Gtk.get_current_event_time ()); - popup.select_first (false); - } - return true; - } - public void open_item (Gtk.TreeIter iter) { string parse_name; active_location.scanner.get (iter, Scanner.Columns.PARSE_NAME, out parse_name); @@ -406,9 +396,12 @@ namespace Baobab { treeview.button_press_event.connect ((event) => { if (event.triggers_context_menu ()) { Gtk.TreePath path; - if (treeview.get_path_at_pos ((int)event.x, (int)event.y, out path, null, null, null)) { + double x, y; + event.get_coords (out x, out y); + if (treeview.get_path_at_pos ((int)x, (int)y, out path, null, null, null)) { treeview.get_selection ().select_path (path); - return show_treeview_popup (treeview_popup_menu, event); + treeview_popup_menu.popup_at_pointer (event); + return true; } } @@ -416,7 +409,8 @@ namespace Baobab { }); treeview.popup_menu.connect (() => { - return show_treeview_popup (treeview_popup_menu, null); + treeview_popup_menu.popup_at_pointer (null); + return true; }); treeview_popup_open.activate.connect (() => { |