bugGNU Octave - Bugs: bug #38449, Changing default*units triggers a...


bug #38449: Changing default*units triggers a position update

Submitted by:  Muhali <muhali>
Submitted on:  Fri Mar 1 12:26:40 2013  
Category: PlottingSeverity: 3 - Normal
Priority: 5 - NormalItem Group: Incorrect Result
Status: FixedAssigned to: None
Originator Name: Open/Closed: Closed
Release: devOperating System: GNU/Linux

Add a New Comment (Rich MarkupRich Markup):

You are not logged in

Please log in, so followups can be emailed to you.


(Jump to the original submission Jump to the original submission)

Sat Sep 13 15:08:40 2014, comment #14:

Yes, I followed your advice and bravely pushed a second one :-)

Pantxo Diribarne <pantxo>
Project Member
Sat Sep 13 13:04:46 2014, comment #13:

Good. Often the only way to get significant testing done is to push the change.

Ben Abbott <bpabbott>
Project Member
Sat Sep 13 09:26:14 2014, comment #12:


Thank you ben. I went ahead and pushed the changeset (http://hg.savannah.gnu.org/hgweb/octave/rev/dc88c5784f74). Closing bug report.

Pantxo Diribarne <pantxo>
Project Member
Mon Sep 8 01:12:51 2014, comment #11:

I can confirm the patch fixes the prior examples for figure and axes objects.

I'm not sufficient familiar with Octave's classes to comment on the merits implementation, but I like that the patch is short and simple.

Ben Abbott <bpabbott>
Project Member
Sun Sep 7 10:37:16 2014, comment #10:


I have attached a patch proposal in which I implemented a new class (pval_vector), based on std::vector< std::pair<std::string, octave_value> >. The type which is used to store default properties, pval_map_type, is redefined as a pval_vector instead of a std::map.

I reimplemented some of the std::map methods so that the type change doesn't affect much functions.

Can someone test the patch and eventually comment the approach?

(file #32040)

Pantxo Diribarne <pantxo>
Project Member
Mon Jun 30 15:11:16 2014, comment #9:

Looks like I have underestimated this task: currently, the default values are stored in a std::map<std::string, octave_value>, which means that the order in which key/values are inserted is lost.
The only solution I can see is to replace this container by an octave_scalar_map or a custom class that keeps track of the order in which the values have been inserted (e.g. std::vector<std::pair<std::string, octave_value>>).

In any case this will involve many more changes than I had expected.

Does someone have another approach?

Pantxo Diribarne <pantxo>
Project Member
Thu Jun 26 10:46:39 2014, comment #8:

The patch has never been pushed, and it is a good thing.

I had a look a few days ago to this bug and found that my approach was wrong: it makes octave behavior independent of the order in which the default properties have been set by the user (which doesn't match matlab behavior). I'll propose a neww patch in the coming days/week.

Pantxo Diribarne <pantxo>
Project Member
Thu Jun 26 10:16:11 2014, comment #7:

I still see the bug. Is it possible that the patch never made it into the repository?

Muhali <muhali>
Mon Feb 24 09:12:27 2014, comment #6:

Thanks Ben.

Pantxo Diribarne <pantxo>
Project Member
Mon Feb 24 01:57:59 2014, comment #5:

Pantxo, I applied your patch. All tests in graphics.cc passed for me.

Ben Abbott <bpabbott>
Project Member
Sun Feb 23 21:40:54 2014, comment #4:


Ben, you are right the problem is in the order the properties are set.
The simplest way I found to solve this issue is to set the whole list of defaults (not that much) twice. It seems a bit hacky but I think it's robust.

Can someone try the attached patch?


(file #30681)

Pantxo Diribarne <pantxo>
Project Member
Mon Mar 4 01:55:33 2013, comment #3:

Equivalent problem for axes objects.

Ben Abbott <bpabbott>
Project Member
Mon Mar 4 00:15:59 2013, comment #2:

A second test that seems to confirm the "position" is set before the "units", and the changing the "units" triggers the updater.

I'm modifying the summary to to better indicate the problem.

Ben Abbott <bpabbott>
Project Member
Mon Mar 4 00:09:52 2013, comment #1:

To help isolate the problem, I tried converting the figure's units to the coded default value of "pixels".

Without looking at the code, I guess that the the updaters for the figure's properties are active during the initialization process. I had thought the updaters were off (or should be) during the initialization process.

Ben Abbott <bpabbott>
Project Member
Fri Mar 1 12:26:40 2013, original submission:

This code

shows that setting 'defaultfigureposition' has no effect. What I get is

ans =

-1.7857e-04 -9.5238e-04 1.7857e-04 2.8571e-04

(along with a tiny figure at the lower left corner).

I am using the dev tip f837bdd535f7 of Feb 14.

Muhali <muhali>


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):

Attached Files
file #30681:  defaults_bug38449.patch added by pantxo (2kB - text/x-patch)


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by pantxo (Updated the item)
  • -unavailable- added by huntj
  • -unavailable- added by bpabbott (Posted a comment)
  • -unavailable- added by muhali (Submitted the item)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.


    Please enter the title of George Orwell's famous dystopian book (it's a date):



    Follow 11 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sat Sep 13 09:26:14 2014pantxoStatusPatch Submitted=>Fixed
    Sun Sep 7 10:37:16 2014pantxoAttached File-=>Added implement_pval_vector.patch, #32040
      StatusConfirmed=>Patch Submitted
    Sun Feb 23 21:40:54 2014pantxoAttached File-=>Added defaults_bug38449.patch, #30681
    Mon Mar 4 21:20:02 2013huntjCarbon-Copy-=>Added huntj
    Mon Mar 4 01:55:33 2013bpabbottSummaryChanging defaultfigureunits triggers a position update=>Changing default*units triggers a position update
    Mon Mar 4 00:20:09 2013bpabbottSummaryChanging defaultfigureunits triggers a position/outerposition update=>Changing defaultfigureunits triggers a position update
    Mon Mar 4 00:15:59 2013bpabbottSummarydefaultfigureposition has no effect=>Changing defaultfigureunits triggers a position/outerposition update
    Mon Mar 4 00:09:52 2013bpabbottItem GroupNone=>Incorrect Result

    Back to the top

    Powered by Savane 3.1-cleanup1